[INFO] fetching crate stable-skiplist 0.1.1...
[INFO] testing stable-skiplist-0.1.1 against beta-2025-10-28 for beta-1.92-2
[INFO] extracting crate stable-skiplist 0.1.1 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate stable-skiplist 0.1.1
[INFO] finished tweaking crates.io crate stable-skiplist 0.1.1
[INFO] tweaked toml for crates.io crate stable-skiplist 0.1.1 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate stable-skiplist 0.1.1 on toolchain beta-2025-10-28
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-10-28" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-10-28" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 10 packages to latest compatible versions
[INFO] [stderr]       Adding rand v0.3.23 (available: v0.9.2)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-10-28" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 695db8893fa48fb2308a9ed1231787530a95b9c9bee9960c255f9c6ad67015a6
[INFO] running `Command { std: "docker" "start" "-a" "695db8893fa48fb2308a9ed1231787530a95b9c9bee9960c255f9c6ad67015a6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "695db8893fa48fb2308a9ed1231787530a95b9c9bee9960c255f9c6ad67015a6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "695db8893fa48fb2308a9ed1231787530a95b9c9bee9960c255f9c6ad67015a6", kill_on_drop: false }`
[INFO] [stdout] 695db8893fa48fb2308a9ed1231787530a95b9c9bee9960c255f9c6ad67015a6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0dbac104836d4f9ade5bf4a5ea1cb1ceee184da0651acf9bc59772f34105b4d1
[INFO] running `Command { std: "docker" "start" "-a" "0dbac104836d4f9ade5bf4a5ea1cb1ceee184da0651acf9bc59772f34105b4d1", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling rand v0.4.6
[INFO] [stderr]    Compiling rand v0.3.23
[INFO] [stderr]    Compiling stable-skiplist v0.1.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unexpected `cfg` condition value: `bench`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1878:17
[INFO] [stdout]      |
[INFO] [stdout] 1878 | #[cfg(all(test, feature="bench"))]
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected values for `feature` are: `unstable`
[INFO] [stdout]      = help: consider adding `bench` as a feature in `Cargo.toml`
[INFO] [stdout]      = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]      = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1415:9
[INFO] [stdout]      |
[INFO] [stdout] 1415 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1421:13
[INFO] [stdout]      |
[INFO] [stdout] 1421 |             try!(write!(f, "{:?}", entry));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1419:17
[INFO] [stdout]      |
[INFO] [stdout] 1419 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1430:9
[INFO] [stdout]      |
[INFO] [stdout] 1430 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1436:13
[INFO] [stdout]      |
[INFO] [stdout] 1436 |             try!(write!(f, "{}", entry));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1434:17
[INFO] [stdout]      |
[INFO] [stdout] 1434 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `bench`
[INFO] [stdout]     --> src/skipmap.rs:1944:17
[INFO] [stdout]      |
[INFO] [stdout] 1944 | #[cfg(all(test, feature="bench"))]
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected values for `feature` are: `unstable`
[INFO] [stdout]      = help: consider adding `bench` as a feature in `Cargo.toml`
[INFO] [stdout]      = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1356:9
[INFO] [stdout]      |
[INFO] [stdout] 1356 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1362:13
[INFO] [stdout]      |
[INFO] [stdout] 1362 |             try!(write!(f, "({:?}, {:?})", k, v));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1360:17
[INFO] [stdout]      |
[INFO] [stdout] 1360 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1373:9
[INFO] [stdout]      |
[INFO] [stdout] 1373 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1379:13
[INFO] [stdout]      |
[INFO] [stdout] 1379 |             try!(write!(f, "({}, {})", k, v));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1377:17
[INFO] [stdout]      |
[INFO] [stdout] 1377 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `bench`
[INFO] [stdout]     --> src/skiplist.rs:1671:17
[INFO] [stdout]      |
[INFO] [stdout] 1671 | #[cfg(all(test, feature="bench"))]
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected values for `feature` are: `unstable`
[INFO] [stdout]      = help: consider adding `bench` as a feature in `Cargo.toml`
[INFO] [stdout]      = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1156:9
[INFO] [stdout]      |
[INFO] [stdout] 1156 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1162:13
[INFO] [stdout]      |
[INFO] [stdout] 1162 |             try!(write!(f, "{:?}", entry));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1160:17
[INFO] [stdout]      |
[INFO] [stdout] 1160 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1171:9
[INFO] [stdout]      |
[INFO] [stdout] 1171 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1177:13
[INFO] [stdout]      |
[INFO] [stdout] 1177 |             try!(write!(f, "{}", entry));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1175:17
[INFO] [stdout]      |
[INFO] [stdout] 1175 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ordered_skiplist.rs:44:18
[INFO] [stdout]    |
[INFO] [stdout] 44 |     compare: Box<Fn(&T, &T) -> Ordering>,
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 |     compare: Box<dyn Fn(&T, &T) -> Ordering>,
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ordered_skiplist.rs:81:24
[INFO] [stdout]    |
[INFO] [stdout] 81 |             })) as Box<Fn(&T, &T) -> Ordering>,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 81 |             })) as Box<dyn Fn(&T, &T) -> Ordering>,
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ordered_skiplist.rs:115:24
[INFO] [stdout]     |
[INFO] [stdout] 115 |             })) as Box<Fn(&T, &T) -> Ordering>,
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 115 |             })) as Box<dyn Fn(&T, &T) -> Ordering>,
[INFO] [stdout]     |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:206:32
[INFO] [stdout]     |
[INFO] [stdout] 206 |         while let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                ^^----^^^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:206:32
[INFO] [stdout]     |
[INFO] [stdout] 206 |         while let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(dangerous_implicit_autorefs)]` on by default
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 206 |         while let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]     |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/ordered_skiplist.rs:236:17
[INFO] [stdout]     |
[INFO] [stdout] 236 |                 mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 236 |                 let _ = mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/ordered_skiplist.rs:241:9
[INFO] [stdout]     |
[INFO] [stdout] 241 |         mem::replace(&mut self.head, new_head);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 241 |         let _ = mem::replace(&mut self.head, new_head);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:310:40
[INFO] [stdout]     |
[INFO] [stdout] 310 |                 while let Some(next) = (*insert_node).links[lvl] {
[INFO] [stdout]     |                                        ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:310:40
[INFO] [stdout]     |
[INFO] [stdout] 310 |                 while let Some(next) = (*insert_node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 310 |                 while let Some(next) = (&(*insert_node).links)[lvl] {
[INFO] [stdout]     |                                        ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:325:43
[INFO] [stdout]     |
[INFO] [stdout] 325 |                     new_node.links[lvl] = (*insert_node).links[lvl];
[INFO] [stdout]     |                                           ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:325:43
[INFO] [stdout]     |
[INFO] [stdout] 325 |                     new_node.links[lvl] = (*insert_node).links[lvl];
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 325 |                     new_node.links[lvl] = (&(*insert_node).links)[lvl];
[INFO] [stdout]     |                                           ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:326:21
[INFO] [stdout]     |
[INFO] [stdout] 326 |                     (*insert_node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:326:21
[INFO] [stdout]     |
[INFO] [stdout] 326 |                     (*insert_node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 326 |                     (&mut (*insert_node).links)[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     +++++                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:328:21
[INFO] [stdout]     |
[INFO] [stdout] 328 |                     (*insert_node).links_len[lvl] += 1;
[INFO] [stdout]     |                     ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:328:21
[INFO] [stdout]     |
[INFO] [stdout] 328 |                     (*insert_node).links_len[lvl] += 1;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 328 |                     (&mut (*insert_node).links_len)[lvl] += 1;
[INFO] [stdout]     |                     +++++                         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:336:21
[INFO] [stdout]     |
[INFO] [stdout] 336 |                     (*insert_node).links_len[lvl] = if (*insert_node).is_head() {
[INFO] [stdout]     |                     ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:336:21
[INFO] [stdout]     |
[INFO] [stdout] 336 |                     (*insert_node).links_len[lvl] = if (*insert_node).is_head() {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 336 |                     (&mut (*insert_node).links_len)[lvl] = if (*insert_node).is_head() {
[INFO] [stdout]     |                     +++++                         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:344:47
[INFO] [stdout]     |
[INFO] [stdout] 344 |                     new_node.links_len[lvl] = (*insert_node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                               ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:344:47
[INFO] [stdout]     |
[INFO] [stdout] 344 |                     new_node.links_len[lvl] = (*insert_node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 344 |                     new_node.links_len[lvl] = (&(*insert_node).links_len)[lvl] - length + 1;
[INFO] [stdout]     |                                               ++                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:345:21
[INFO] [stdout]     |
[INFO] [stdout] 345 |                     (*insert_node).links_len[lvl] = length;
[INFO] [stdout]     |                     ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:345:21
[INFO] [stdout]     |
[INFO] [stdout] 345 |                     (*insert_node).links_len[lvl] = length;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 345 |                     (&mut (*insert_node).links_len)[lvl] = length;
[INFO] [stdout]     |                     +++++                         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:503:40
[INFO] [stdout]     |
[INFO] [stdout] 503 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:503:40
[INFO] [stdout]     |
[INFO] [stdout] 503 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 503 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:562:44
[INFO] [stdout]     |
[INFO] [stdout] 562 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:562:44
[INFO] [stdout]     |
[INFO] [stdout] 562 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 562 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:571:44
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:571:44
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:592:24
[INFO] [stdout]     |
[INFO] [stdout] 592 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:592:24
[INFO] [stdout]     |
[INFO] [stdout] 592 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 592 |                     if (&(*node).links)[lvl].is_none() {
[INFO] [stdout]     |                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:603:24
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:603:24
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     if (&(*prev_node).links)[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:604:51
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                                                     |
[INFO] [stdout]     |                                                     this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:604:51
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (&(*return_node).links)[lvl];
[INFO] [stdout]     |                                                   ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:604:25
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:604:25
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (&mut (*prev_node).links)[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:605:56
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                          |
[INFO] [stdout]     |                                                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:605:56
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (&(*return_node).links_len)[lvl] - 1;
[INFO] [stdout]     |                                                        ++                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:605:25
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:605:25
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (&mut (*prev_node).links_len)[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:607:25
[INFO] [stdout]     |
[INFO] [stdout] 607 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:607:25
[INFO] [stdout]     |
[INFO] [stdout] 607 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 607 |                         (&mut (*prev_node).links_len)[lvl] -= 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:610:42
[INFO] [stdout]     |
[INFO] [stdout] 610 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^-----------^^^^^^^^^^
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:610:42
[INFO] [stdout]     |
[INFO] [stdout] 610 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 610 |                 if let Some(next_node) = (&(*return_node).links)[0] {
[INFO] [stdout]     |                                          ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:667:44
[INFO] [stdout]     |
[INFO] [stdout] 667 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:667:44
[INFO] [stdout]     |
[INFO] [stdout] 667 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 667 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:676:44
[INFO] [stdout]     |
[INFO] [stdout] 676 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:676:44
[INFO] [stdout]     |
[INFO] [stdout] 676 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 676 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:702:24
[INFO] [stdout]     |
[INFO] [stdout] 702 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:702:24
[INFO] [stdout]     |
[INFO] [stdout] 702 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 702 |                     if (&(*node).links)[lvl].is_none() {
[INFO] [stdout]     |                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:711:24
[INFO] [stdout]     |
[INFO] [stdout] 711 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:711:24
[INFO] [stdout]     |
[INFO] [stdout] 711 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 711 |                     if (&(*prev_node).links)[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:712:51
[INFO] [stdout]     |
[INFO] [stdout] 712 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                                                     |
[INFO] [stdout]     |                                                     this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:712:51
[INFO] [stdout]     |
[INFO] [stdout] 712 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 712 |                         (*prev_node).links[lvl] = (&(*return_node).links)[lvl];
[INFO] [stdout]     |                                                   ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:712:25
[INFO] [stdout]     |
[INFO] [stdout] 712 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:712:25
[INFO] [stdout]     |
[INFO] [stdout] 712 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 712 |                         (&mut (*prev_node).links)[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:713:56
[INFO] [stdout]     |
[INFO] [stdout] 713 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                          |
[INFO] [stdout]     |                                                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:713:56
[INFO] [stdout]     |
[INFO] [stdout] 713 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 713 |                         (*prev_node).links_len[lvl] += (&(*return_node).links_len)[lvl] - 1;
[INFO] [stdout]     |                                                        ++                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:713:25
[INFO] [stdout]     |
[INFO] [stdout] 713 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:713:25
[INFO] [stdout]     |
[INFO] [stdout] 713 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 713 |                         (&mut (*prev_node).links_len)[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:715:25
[INFO] [stdout]     |
[INFO] [stdout] 715 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:715:25
[INFO] [stdout]     |
[INFO] [stdout] 715 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 715 |                         (&mut (*prev_node).links_len)[lvl] -= 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:718:42
[INFO] [stdout]     |
[INFO] [stdout] 718 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^-----------^^^^^^^^^^
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:718:42
[INFO] [stdout]     |
[INFO] [stdout] 718 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 718 |                 if let Some(next_node) = (&(*return_node).links)[0] {
[INFO] [stdout]     |                                          ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:759:41
[INFO] [stdout]     |
[INFO] [stdout] 759 |                     while &(index_sum + (*node).links_len[lvl]) < index {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:759:41
[INFO] [stdout]     |
[INFO] [stdout] 759 |                     while &(index_sum + (*node).links_len[lvl]) < index {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 759 |                     while &(index_sum + (&(*node).links_len)[lvl]) < index {
[INFO] [stdout]     |                                         ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:760:38
[INFO] [stdout]     |
[INFO] [stdout] 760 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:760:38
[INFO] [stdout]     |
[INFO] [stdout] 760 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 760 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]     |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:761:32
[INFO] [stdout]     |
[INFO] [stdout] 761 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]     |                                ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:761:32
[INFO] [stdout]     |
[INFO] [stdout] 761 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 761 |                         node = (&(*node).links)[lvl].unwrap();
[INFO] [stdout]     |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:764:38
[INFO] [stdout]     |
[INFO] [stdout] 764 |                     if &(index_sum + (*node).links_len[lvl]) == index {
[INFO] [stdout]     |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:764:38
[INFO] [stdout]     |
[INFO] [stdout] 764 |                     if &(index_sum + (*node).links_len[lvl]) == index {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 764 |                     if &(index_sum + (&(*node).links_len)[lvl]) == index {
[INFO] [stdout]     |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:765:45
[INFO] [stdout]     |
[INFO] [stdout] 765 |                         if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                             ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:765:45
[INFO] [stdout]     |
[INFO] [stdout] 765 |                         if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 765 |                         if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                             ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:767:50
[INFO] [stdout]     |
[INFO] [stdout] 767 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:767:50
[INFO] [stdout]     |
[INFO] [stdout] 767 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 767 |                             (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                  ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:767:29
[INFO] [stdout]     |
[INFO] [stdout] 767 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:767:29
[INFO] [stdout]     |
[INFO] [stdout] 767 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 767 |                             (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                             +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:768:55
[INFO] [stdout]     |
[INFO] [stdout] 768 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                                                 ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:768:55
[INFO] [stdout]     |
[INFO] [stdout] 768 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 768 |                             (*node).links_len[lvl] += (&(*next).links_len)[lvl] - 1;
[INFO] [stdout]     |                                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:768:29
[INFO] [stdout]     |
[INFO] [stdout] 768 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:768:29
[INFO] [stdout]     |
[INFO] [stdout] 768 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 768 |                             (&mut (*node).links_len)[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                             +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:771:25
[INFO] [stdout]     |
[INFO] [stdout] 771 |                         (*node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:771:25
[INFO] [stdout]     |
[INFO] [stdout] 771 |                         (*node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 771 |                         (&mut (*node).links_len)[lvl] -= 1;
[INFO] [stdout]     |                         +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:775:37
[INFO] [stdout]     |
[INFO] [stdout] 775 |                 if let Some(next) = (*return_node).links[0] {
[INFO] [stdout]     |                                     ^^-----------^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:775:37
[INFO] [stdout]     |
[INFO] [stdout] 775 |                 if let Some(next) = (*return_node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 775 |                 if let Some(next) = (&(*return_node).links)[0] {
[INFO] [stdout]     |                                     ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:816:41
[INFO] [stdout]     |
[INFO] [stdout] 816 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:816:41
[INFO] [stdout]     |
[INFO] [stdout] 816 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 816 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:819:54
[INFO] [stdout]     |
[INFO] [stdout] 819 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:819:54
[INFO] [stdout]     |
[INFO] [stdout] 819 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 819 |                                 (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                      ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:819:33
[INFO] [stdout]     |
[INFO] [stdout] 819 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:819:33
[INFO] [stdout]     |
[INFO] [stdout] 819 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 819 |                                 (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                 +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:829:69
[INFO] [stdout]     |
[INFO] [stdout] 829 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                                                       |
[INFO] [stdout]     |                                                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:829:69
[INFO] [stdout]     |
[INFO] [stdout] 829 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 829 |                     (*node).links_len[lvl] = self.link_length(node, (&(*node).links)[lvl], lvl)
[INFO] [stdout]     |                                                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:829:21
[INFO] [stdout]     |
[INFO] [stdout] 829 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:829:21
[INFO] [stdout]     |
[INFO] [stdout] 829 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 829 |                     (&mut (*node).links_len)[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:832:41
[INFO] [stdout]     |
[INFO] [stdout] 832 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:832:41
[INFO] [stdout]     |
[INFO] [stdout] 832 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 832 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:843:37
[INFO] [stdout]     |
[INFO] [stdout] 843 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^----^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:843:37
[INFO] [stdout]     |
[INFO] [stdout] 843 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 843 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]     |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/ordered_skiplist.rs:847:21
[INFO] [stdout]     |
[INFO] [stdout] 847 |                     mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 847 |                     let _ = mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:879:41
[INFO] [stdout]     |
[INFO] [stdout] 879 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:879:41
[INFO] [stdout]     |
[INFO] [stdout] 879 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 879 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:883:58
[INFO] [stdout]     |
[INFO] [stdout] 883 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:883:58
[INFO] [stdout]     |
[INFO] [stdout] 883 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 883 |                                     (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                          ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:883:37
[INFO] [stdout]     |
[INFO] [stdout] 883 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:883:37
[INFO] [stdout]     |
[INFO] [stdout] 883 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 883 |                                     (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                     +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:897:54
[INFO] [stdout]     |
[INFO] [stdout] 897 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:897:54
[INFO] [stdout]     |
[INFO] [stdout] 897 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 897 |                                 (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                      ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:897:33
[INFO] [stdout]     |
[INFO] [stdout] 897 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:897:33
[INFO] [stdout]     |
[INFO] [stdout] 897 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 897 |                                 (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                 +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:904:69
[INFO] [stdout]     |
[INFO] [stdout] 904 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                                                       |
[INFO] [stdout]     |                                                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:904:69
[INFO] [stdout]     |
[INFO] [stdout] 904 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 904 |                     (*node).links_len[lvl] = self.link_length(node, (&(*node).links)[lvl], lvl)
[INFO] [stdout]     |                                                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:904:21
[INFO] [stdout]     |
[INFO] [stdout] 904 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:904:21
[INFO] [stdout]     |
[INFO] [stdout] 904 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 904 |                     (&mut (*node).links_len)[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:907:41
[INFO] [stdout]     |
[INFO] [stdout] 907 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:907:41
[INFO] [stdout]     |
[INFO] [stdout] 907 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 907 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:918:37
[INFO] [stdout]     |
[INFO] [stdout] 918 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^----^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:918:37
[INFO] [stdout]     |
[INFO] [stdout] 918 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 918 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]     |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/ordered_skiplist.rs:922:21
[INFO] [stdout]     |
[INFO] [stdout] 922 |                     mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 922 |                     let _ = mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ordered_skiplist.rs:963:17
[INFO] [stdout]     |
[INFO] [stdout] 963 |     pub fn iter(&self) -> Iter<T> {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 963 |     pub fn iter(&self) -> Iter<'_, T> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ordered_skiplist.rs:990:18
[INFO] [stdout]     |
[INFO] [stdout] 990 |     pub fn range(&self, min: Bound<&T>, max: Bound<&T>) -> Iter<T> {
[INFO] [stdout]     |                  ^^^^^ the lifetime is elided here         ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 990 |     pub fn range(&self, min: Bound<&T>, max: Bound<&T>) -> Iter<'_, T> {
[INFO] [stdout]     |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1017:44
[INFO] [stdout]      |
[INFO] [stdout] 1017 |                     while let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                            ^^----^^^^^^^^^^
[INFO] [stdout]      |                                              |
[INFO] [stdout]      |                                              this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1017:44
[INFO] [stdout]      |
[INFO] [stdout] 1017 |                     while let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1017 |                     while let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]      |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1035:52
[INFO] [stdout]      |
[INFO] [stdout] 1035 | ...                   while let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                              ^^----^^^^^^^^^^
[INFO] [stdout]      |                                                |
[INFO] [stdout]      |                                                this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1035:52
[INFO] [stdout]      |
[INFO] [stdout] 1035 | ...                   while let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                              ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1035 |                             while let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]      |                                                    ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1109:35
[INFO] [stdout]      |
[INFO] [stdout] 1109 |                     length_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                   ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                     |
[INFO] [stdout]      |                                     this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1109:35
[INFO] [stdout]      |
[INFO] [stdout] 1109 |                     length_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1109 |                     length_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]      |                                   ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1112:32
[INFO] [stdout]      |
[INFO] [stdout] 1112 |                     assert_eq!((*node).links_len[lvl],
[INFO] [stdout]      |                                ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                  |
[INFO] [stdout]      |                                  this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1112:32
[INFO] [stdout]      |
[INFO] [stdout] 1112 |                     assert_eq!((*node).links_len[lvl],
[INFO] [stdout]      |                                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1112 |                     assert_eq!((&(*node).links_len)[lvl],
[INFO] [stdout]      |                                ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1113:75
[INFO] [stdout]      |
[INFO] [stdout] 1113 | ...                   self.link_length(node as *mut SkipNode<T>, (*node).links[lvl], lvl)
[INFO] [stdout]      |                                                                  ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                                                    |
[INFO] [stdout]      |                                                                    this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1113:75
[INFO] [stdout]      |
[INFO] [stdout] 1113 | ...                   self.link_length(node as *mut SkipNode<T>, (*node).links[lvl], lvl)
[INFO] [stdout]      |                                                                  ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1113 |                                self.link_length(node as *mut SkipNode<T>, (&(*node).links)[lvl], lvl)
[INFO] [stdout]      |                                                                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1117:59
[INFO] [stdout]      |
[INFO] [stdout] 1117 |                         assert!((*node).next.is_some() == (*node).links[lvl].is_some());
[INFO] [stdout]      |                                                           ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                                             |
[INFO] [stdout]      |                                                             this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1117:59
[INFO] [stdout]      |
[INFO] [stdout] 1117 |                         assert!((*node).next.is_some() == (*node).links[lvl].is_some());
[INFO] [stdout]      |                                                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1117 |                         assert!((*node).next.is_some() == (&(*node).links)[lvl].is_some());
[INFO] [stdout]      |                                                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1120:40
[INFO] [stdout]      |
[INFO] [stdout] 1120 | ...                   assert_eq!((*prev).links[lvl], Some(node as *mut SkipNode<T>));
[INFO] [stdout]      |                                  ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                    |
[INFO] [stdout]      |                                    this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1120:40
[INFO] [stdout]      |
[INFO] [stdout] 1120 | ...                   assert_eq!((*prev).links[lvl], Some(node as *mut SkipNode<T>));
[INFO] [stdout]      |                                  ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1120 |                             assert_eq!((&(*prev).links)[lvl], Some(node as *mut SkipNode<T>));
[INFO] [stdout]      |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1125:41
[INFO] [stdout]      |
[INFO] [stdout] 1125 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                           |
[INFO] [stdout]      |                                           this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1125:41
[INFO] [stdout]      |
[INFO] [stdout] 1125 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1125 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]      |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1167:27
[INFO] [stdout]      |
[INFO] [stdout] 1167 |                     match (*node).links[lvl] {
[INFO] [stdout]      |                           ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1167:27
[INFO] [stdout]      |
[INFO] [stdout] 1167 |                     match (*node).links[lvl] {
[INFO] [stdout]      |                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1167 |                     match (&(*node).links)[lvl] {
[INFO] [stdout]      |                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1174:31
[INFO] [stdout]      |
[INFO] [stdout] 1174 |                     length += (*node).links_len[lvl - 1];
[INFO] [stdout]      |                               ^^----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                 |
[INFO] [stdout]      |                                 this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1174:31
[INFO] [stdout]      |
[INFO] [stdout] 1174 |                     length += (*node).links_len[lvl - 1];
[INFO] [stdout]      |                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1174 |                     length += (&(*node).links_len)[lvl - 1];
[INFO] [stdout]      |                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1175:27
[INFO] [stdout]      |
[INFO] [stdout] 1175 |                     match (*node).links[lvl - 1] {
[INFO] [stdout]      |                           ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1175:27
[INFO] [stdout]      |
[INFO] [stdout] 1175 |                     match (*node).links[lvl - 1] {
[INFO] [stdout]      |                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1175 |                     match (&(*node).links)[lvl - 1] {
[INFO] [stdout]      |                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1200:40
[INFO] [stdout]      |
[INFO] [stdout] 1200 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                          |
[INFO] [stdout]      |                                          this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1200:40
[INFO] [stdout]      |
[INFO] [stdout] 1200 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1200 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]      |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1224:40
[INFO] [stdout]      |
[INFO] [stdout] 1224 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                          |
[INFO] [stdout]      |                                          this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1224:40
[INFO] [stdout]      |
[INFO] [stdout] 1224 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1224 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]      |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1262:39
[INFO] [stdout]      |
[INFO] [stdout] 1262 |                     while index_sum + (*node).links_len[lvl] <= index {
[INFO] [stdout]      |                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                         |
[INFO] [stdout]      |                                         this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1262:39
[INFO] [stdout]      |
[INFO] [stdout] 1262 |                     while index_sum + (*node).links_len[lvl] <= index {
[INFO] [stdout]      |                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1262 |                     while index_sum + (&(*node).links_len)[lvl] <= index {
[INFO] [stdout]      |                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1263:38
[INFO] [stdout]      |
[INFO] [stdout] 1263 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                        |
[INFO] [stdout]      |                                        this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1263:38
[INFO] [stdout]      |
[INFO] [stdout] 1263 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1263 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]      |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1264:32
[INFO] [stdout]      |
[INFO] [stdout] 1264 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]      |                                ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                  |
[INFO] [stdout]      |                                  this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1264:32
[INFO] [stdout]      |
[INFO] [stdout] 1264 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]      |                                ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1264 |                         node = (&(*node).links)[lvl].unwrap();
[INFO] [stdout]      |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1291:61
[INFO] [stdout]      |
[INFO] [stdout] 1291 |                 let max_str_len = format!("{} -{}-", value, (*node).links_len[(*node).level]).len();
[INFO] [stdout]      |                                                             ^^----^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                               |
[INFO] [stdout]      |                                                               this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1291:61
[INFO] [stdout]      |
[INFO] [stdout] 1291 |                 let max_str_len = format!("{} -{}-", value, (*node).links_len[(*node).level]).len();
[INFO] [stdout]      |                                                             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1291 |                 let max_str_len = format!("{} -{}-", value, (&(*node).links_len)[(*node).level]).len();
[INFO] [stdout]      |                                                             ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1299:63
[INFO] [stdout]      |
[INFO] [stdout] 1299 |                         value_len = format!("{} -{}-", value, (*node).links_len[lvl]);
[INFO] [stdout]      |                                                               ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                                 |
[INFO] [stdout]      |                                                                 this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1299:63
[INFO] [stdout]      |
[INFO] [stdout] 1299 |                         value_len = format!("{} -{}-", value, (*node).links_len[lvl]);
[INFO] [stdout]      |                                                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1299 |                         value_len = format!("{} -{}-", value, (&(*node).links_len)[lvl]);
[INFO] [stdout]      |                                                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1319:37
[INFO] [stdout]      |
[INFO] [stdout] 1319 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                     ^^----^^^^^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1319:37
[INFO] [stdout]      |
[INFO] [stdout] 1319 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1319 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]      |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> src/ordered_skiplist.rs:1347:17
[INFO] [stdout]      |
[INFO] [stdout] 1347 |                 mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1347 |                 let _ = mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1507:33
[INFO] [stdout]      |
[INFO] [stdout] 1507 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1507:33
[INFO] [stdout]      |
[INFO] [stdout] 1507 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1507 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1556:33
[INFO] [stdout]      |
[INFO] [stdout] 1556 |             if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                 ^^---------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1556:33
[INFO] [stdout]      |
[INFO] [stdout] 1556 |             if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1556 |             if let Some(next) = (&(*self.head).links)[0] {
[INFO] [stdout]      |                                 ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1559:51
[INFO] [stdout]      |
[INFO] [stdout] 1559 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                                                   ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1559:51
[INFO] [stdout]      |
[INFO] [stdout] 1559 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                                                   ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1559 |                         (*self.head).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]      |                                                   ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1559:25
[INFO] [stdout]      |
[INFO] [stdout] 1559 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1559:25
[INFO] [stdout]      |
[INFO] [stdout] 1559 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1559 |                         (&mut (*self.head).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1560:55
[INFO] [stdout]      |
[INFO] [stdout] 1560 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1560:55
[INFO] [stdout]      |
[INFO] [stdout] 1560 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1560 |                         (*self.head).links_len[lvl] = (&(*next).links_len)[lvl] - 1;
[INFO] [stdout]      |                                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1560:25
[INFO] [stdout]      |
[INFO] [stdout] 1560 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1560:25
[INFO] [stdout]      |
[INFO] [stdout] 1560 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1560 |                         (&mut (*self.head).links_len)[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1562:25
[INFO] [stdout]      |
[INFO] [stdout] 1562 |                         (*self.head).links_len[lvl] -= 1;
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1562:25
[INFO] [stdout]      |
[INFO] [stdout] 1562 |                         (*self.head).links_len[lvl] -= 1;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1562 |                         (&mut (*self.head).links_len)[lvl] -= 1;
[INFO] [stdout]      |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1565:37
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                 if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                     ^^---------^^^^^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1565:37
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                 if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                 if let Some(next) = (&(*self.head).links)[0] {
[INFO] [stdout]      |                                     ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1597:17
[INFO] [stdout]      |
[INFO] [stdout] 1597 |                 (*self.end).links[0] = None;
[INFO] [stdout]      |                 ^^--------^^^^^^^^^^
[INFO] [stdout]      |                   |
[INFO] [stdout]      |                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1597:17
[INFO] [stdout]      |
[INFO] [stdout] 1597 |                 (*self.end).links[0] = None;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1597 |                 (&mut (*self.end).links)[0] = None;
[INFO] [stdout]      |                 +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:206:44
[INFO] [stdout]     |
[INFO] [stdout] 206 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:206:44
[INFO] [stdout]     |
[INFO] [stdout] 206 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 206 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:216:44
[INFO] [stdout]     |
[INFO] [stdout] 216 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:216:44
[INFO] [stdout]     |
[INFO] [stdout] 216 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 216 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:237:24
[INFO] [stdout]     |
[INFO] [stdout] 237 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:237:24
[INFO] [stdout]     |
[INFO] [stdout] 237 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 237 |                     if (&(*node).links)[lvl].is_none() {
[INFO] [stdout]     |                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:256:47
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         new_node.links[lvl] = (*prev_node).links[lvl];
[INFO] [stdout]     |                                               ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:256:47
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         new_node.links[lvl] = (*prev_node).links[lvl];
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         new_node.links[lvl] = (&(*prev_node).links)[lvl];
[INFO] [stdout]     |                                               ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:257:25
[INFO] [stdout]     |
[INFO] [stdout] 257 |                         (*prev_node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:257:25
[INFO] [stdout]     |
[INFO] [stdout] 257 |                         (*prev_node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 257 |                         (&mut (*prev_node).links)[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:268:55
[INFO] [stdout]     |
[INFO] [stdout] 268 | ...                   new_node.links_len[lvl] = (*prev_node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                                 ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:268:55
[INFO] [stdout]     |
[INFO] [stdout] 268 | ...                   new_node.links_len[lvl] = (*prev_node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 268 |                             new_node.links_len[lvl] = (&(*prev_node).links_len)[lvl] - length + 1;
[INFO] [stdout]     |                                                       ++                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:269:29
[INFO] [stdout]     |
[INFO] [stdout] 269 | ...                   (*prev_node).links_len[lvl] = length;
[INFO] [stdout]     |                       ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:269:29
[INFO] [stdout]     |
[INFO] [stdout] 269 | ...                   (*prev_node).links_len[lvl] = length;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 269 |                             (&mut (*prev_node).links_len)[lvl] = length;
[INFO] [stdout]     |                             +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:272:25
[INFO] [stdout]     |
[INFO] [stdout] 272 |                         (*prev_node).links_len[lvl] += 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:272:25
[INFO] [stdout]     |
[INFO] [stdout] 272 |                         (*prev_node).links_len[lvl] += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 272 |                         (&mut (*prev_node).links_len)[lvl] += 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/skipmap.rs:308:17
[INFO] [stdout]     |
[INFO] [stdout] 308 |                 mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 308 |                 let _ = mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/skipmap.rs:313:9
[INFO] [stdout]     |
[INFO] [stdout] 313 |         mem::replace(&mut self.head, new_head);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 313 |         let _ = mem::replace(&mut self.head, new_head);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:489:40
[INFO] [stdout]     |
[INFO] [stdout] 489 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:489:40
[INFO] [stdout]     |
[INFO] [stdout] 489 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 489 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:539:40
[INFO] [stdout]     |
[INFO] [stdout] 539 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:539:40
[INFO] [stdout]     |
[INFO] [stdout] 539 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 539 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:628:40
[INFO] [stdout]     |
[INFO] [stdout] 628 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:628:40
[INFO] [stdout]     |
[INFO] [stdout] 628 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 628 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:685:44
[INFO] [stdout]     |
[INFO] [stdout] 685 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:685:44
[INFO] [stdout]     |
[INFO] [stdout] 685 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 685 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:696:24
[INFO] [stdout]     |
[INFO] [stdout] 696 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:696:24
[INFO] [stdout]     |
[INFO] [stdout] 696 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 696 |                     if (&(*node).links)[lvl].is_none() {
[INFO] [stdout]     |                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:700:44
[INFO] [stdout]     |
[INFO] [stdout] 700 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:700:44
[INFO] [stdout]     |
[INFO] [stdout] 700 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 700 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:726:24
[INFO] [stdout]     |
[INFO] [stdout] 726 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:726:24
[INFO] [stdout]     |
[INFO] [stdout] 726 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 726 |                     if (&(*prev_node).links)[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:727:51
[INFO] [stdout]     |
[INFO] [stdout] 727 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                                                     |
[INFO] [stdout]     |                                                     this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:727:51
[INFO] [stdout]     |
[INFO] [stdout] 727 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 727 |                         (*prev_node).links[lvl] = (&(*return_node).links)[lvl];
[INFO] [stdout]     |                                                   ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:727:25
[INFO] [stdout]     |
[INFO] [stdout] 727 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:727:25
[INFO] [stdout]     |
[INFO] [stdout] 727 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 727 |                         (&mut (*prev_node).links)[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:728:56
[INFO] [stdout]     |
[INFO] [stdout] 728 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                          |
[INFO] [stdout]     |                                                          this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:728:56
[INFO] [stdout]     |
[INFO] [stdout] 728 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 728 |                         (*prev_node).links_len[lvl] += (&(*return_node).links_len)[lvl] - 1;
[INFO] [stdout]     |                                                        ++                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:728:25
[INFO] [stdout]     |
[INFO] [stdout] 728 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:728:25
[INFO] [stdout]     |
[INFO] [stdout] 728 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 728 |                         (&mut (*prev_node).links_len)[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:730:25
[INFO] [stdout]     |
[INFO] [stdout] 730 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:730:25
[INFO] [stdout]     |
[INFO] [stdout] 730 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 730 |                         (&mut (*prev_node).links_len)[lvl] -= 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:733:42
[INFO] [stdout]     |
[INFO] [stdout] 733 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^-----------^^^^^^^^^^
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:733:42
[INFO] [stdout]     |
[INFO] [stdout] 733 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 733 |                 if let Some(next_node) = (&(*return_node).links)[0] {
[INFO] [stdout]     |                                          ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:776:41
[INFO] [stdout]     |
[INFO] [stdout] 776 |                     while &(index_sum + (*node).links_len[lvl]) < index {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:776:41
[INFO] [stdout]     |
[INFO] [stdout] 776 |                     while &(index_sum + (*node).links_len[lvl]) < index {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 776 |                     while &(index_sum + (&(*node).links_len)[lvl]) < index {
[INFO] [stdout]     |                                         ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:777:38
[INFO] [stdout]     |
[INFO] [stdout] 777 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:777:38
[INFO] [stdout]     |
[INFO] [stdout] 777 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 777 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]     |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:778:32
[INFO] [stdout]     |
[INFO] [stdout] 778 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]     |                                ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:778:32
[INFO] [stdout]     |
[INFO] [stdout] 778 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 778 |                         node = (&(*node).links)[lvl].unwrap();
[INFO] [stdout]     |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:781:38
[INFO] [stdout]     |
[INFO] [stdout] 781 |                     if &(index_sum + (*node).links_len[lvl]) == index {
[INFO] [stdout]     |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:781:38
[INFO] [stdout]     |
[INFO] [stdout] 781 |                     if &(index_sum + (*node).links_len[lvl]) == index {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 781 |                     if &(index_sum + (&(*node).links_len)[lvl]) == index {
[INFO] [stdout]     |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:782:45
[INFO] [stdout]     |
[INFO] [stdout] 782 |                         if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                             ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:782:45
[INFO] [stdout]     |
[INFO] [stdout] 782 |                         if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 782 |                         if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                             ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:784:50
[INFO] [stdout]     |
[INFO] [stdout] 784 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:784:50
[INFO] [stdout]     |
[INFO] [stdout] 784 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 784 |                             (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                  ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:784:29
[INFO] [stdout]     |
[INFO] [stdout] 784 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:784:29
[INFO] [stdout]     |
[INFO] [stdout] 784 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 784 |                             (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                             +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:785:55
[INFO] [stdout]     |
[INFO] [stdout] 785 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                                                 ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:785:55
[INFO] [stdout]     |
[INFO] [stdout] 785 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 785 |                             (*node).links_len[lvl] += (&(*next).links_len)[lvl] - 1;
[INFO] [stdout]     |                                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:785:29
[INFO] [stdout]     |
[INFO] [stdout] 785 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:785:29
[INFO] [stdout]     |
[INFO] [stdout] 785 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 785 |                             (&mut (*node).links_len)[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                             +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:788:25
[INFO] [stdout]     |
[INFO] [stdout] 788 |                         (*node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:788:25
[INFO] [stdout]     |
[INFO] [stdout] 788 |                         (*node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 788 |                         (&mut (*node).links_len)[lvl] -= 1;
[INFO] [stdout]     |                         +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:792:37
[INFO] [stdout]     |
[INFO] [stdout] 792 |                 if let Some(next) = (*return_node).links[0] {
[INFO] [stdout]     |                                     ^^-----------^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:792:37
[INFO] [stdout]     |
[INFO] [stdout] 792 |                 if let Some(next) = (*return_node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 792 |                 if let Some(next) = (&(*return_node).links)[0] {
[INFO] [stdout]     |                                     ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skipmap.rs:840:17
[INFO] [stdout]     |
[INFO] [stdout] 840 |     pub fn iter(&self) -> Iter<K, V> {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 840 |     pub fn iter(&self) -> Iter<'_, K, V> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skipmap.rs:865:21
[INFO] [stdout]     |
[INFO] [stdout] 865 |     pub fn iter_mut(&self) -> IterMut<K, V> {
[INFO] [stdout]     |                     ^^^^^     ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 865 |     pub fn iter_mut(&self) -> IterMut<'_, K, V> {
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skipmap.rs:888:17
[INFO] [stdout]     |
[INFO] [stdout] 888 |     pub fn keys(&self) -> Keys<K, V> {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 888 |     pub fn keys(&self) -> Keys<'_, K, V> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skipmap.rs:910:19
[INFO] [stdout]     |
[INFO] [stdout] 910 |     pub fn values(&self) -> Values<K, V> {
[INFO] [stdout]     |                   ^^^^^     ^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 910 |     pub fn values(&self) -> Values<'_, K, V> {
[INFO] [stdout]     |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skipmap.rs:937:21
[INFO] [stdout]     |
[INFO] [stdout] 937 |     pub fn range<Q>(&self, min: Bound<&Q>, max: Bound<&Q>) -> Iter<K, V>
[INFO] [stdout]     |                     ^^^^^ the lifetime is elided here         ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 937 |     pub fn range<Q>(&self, min: Bound<&Q>, max: Bound<&Q>) -> Iter<'_, K, V>
[INFO] [stdout]     |                                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1013:35
[INFO] [stdout]      |
[INFO] [stdout] 1013 |                     length_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                   ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                     |
[INFO] [stdout]      |                                     this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1013:35
[INFO] [stdout]      |
[INFO] [stdout] 1013 |                     length_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1013 |                     length_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]      |                                   ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1016:32
[INFO] [stdout]      |
[INFO] [stdout] 1016 |                     assert_eq!((*node).links_len[lvl],
[INFO] [stdout]      |                                ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                  |
[INFO] [stdout]      |                                  this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1016:32
[INFO] [stdout]      |
[INFO] [stdout] 1016 |                     assert_eq!((*node).links_len[lvl],
[INFO] [stdout]      |                                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1016 |                     assert_eq!((&(*node).links_len)[lvl],
[INFO] [stdout]      |                                ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1018:49
[INFO] [stdout]      |
[INFO] [stdout] 1018 | ...                   (*node).links[lvl],
[INFO] [stdout]      |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                         |
[INFO] [stdout]      |                         this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1018:49
[INFO] [stdout]      |
[INFO] [stdout] 1018 | ...                   (*node).links[lvl],
[INFO] [stdout]      |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1018 |                                                 (&(*node).links)[lvl],
[INFO] [stdout]      |                                                 ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1023:59
[INFO] [stdout]      |
[INFO] [stdout] 1023 |                         assert!((*node).next.is_some() == (*node).links[lvl].is_some());
[INFO] [stdout]      |                                                           ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                                             |
[INFO] [stdout]      |                                                             this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1023:59
[INFO] [stdout]      |
[INFO] [stdout] 1023 |                         assert!((*node).next.is_some() == (*node).links[lvl].is_some());
[INFO] [stdout]      |                                                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1023 |                         assert!((*node).next.is_some() == (&(*node).links)[lvl].is_some());
[INFO] [stdout]      |                                                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1026:40
[INFO] [stdout]      |
[INFO] [stdout] 1026 | ...                   assert_eq!((*prev).links[lvl], Some(node as *mut SkipNode<K, V>));
[INFO] [stdout]      |                                  ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                    |
[INFO] [stdout]      |                                    this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1026:40
[INFO] [stdout]      |
[INFO] [stdout] 1026 | ...                   assert_eq!((*prev).links[lvl], Some(node as *mut SkipNode<K, V>));
[INFO] [stdout]      |                                  ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1026 |                             assert_eq!((&(*prev).links)[lvl], Some(node as *mut SkipNode<K, V>));
[INFO] [stdout]      |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1031:41
[INFO] [stdout]      |
[INFO] [stdout] 1031 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                           |
[INFO] [stdout]      |                                           this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1031:41
[INFO] [stdout]      |
[INFO] [stdout] 1031 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1031 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]      |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1073:27
[INFO] [stdout]      |
[INFO] [stdout] 1073 |                     match (*node).links[lvl] {
[INFO] [stdout]      |                           ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1073:27
[INFO] [stdout]      |
[INFO] [stdout] 1073 |                     match (*node).links[lvl] {
[INFO] [stdout]      |                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1073 |                     match (&(*node).links)[lvl] {
[INFO] [stdout]      |                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1080:31
[INFO] [stdout]      |
[INFO] [stdout] 1080 |                     length += (*node).links_len[lvl - 1];
[INFO] [stdout]      |                               ^^----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                 |
[INFO] [stdout]      |                                 this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1080:31
[INFO] [stdout]      |
[INFO] [stdout] 1080 |                     length += (*node).links_len[lvl - 1];
[INFO] [stdout]      |                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1080 |                     length += (&(*node).links_len)[lvl - 1];
[INFO] [stdout]      |                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1081:27
[INFO] [stdout]      |
[INFO] [stdout] 1081 |                     match (*node).links[lvl - 1] {
[INFO] [stdout]      |                           ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1081:27
[INFO] [stdout]      |
[INFO] [stdout] 1081 |                     match (*node).links[lvl - 1] {
[INFO] [stdout]      |                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1081 |                     match (&(*node).links)[lvl - 1] {
[INFO] [stdout]      |                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1106:40
[INFO] [stdout]      |
[INFO] [stdout] 1106 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                          |
[INFO] [stdout]      |                                          this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1106:40
[INFO] [stdout]      |
[INFO] [stdout] 1106 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1106 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]      |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1133:40
[INFO] [stdout]      |
[INFO] [stdout] 1133 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                          |
[INFO] [stdout]      |                                          this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1133:40
[INFO] [stdout]      |
[INFO] [stdout] 1133 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1133 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]      |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1168:39
[INFO] [stdout]      |
[INFO] [stdout] 1168 |                     while index_sum + (*node).links_len[lvl] <= index {
[INFO] [stdout]      |                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                         |
[INFO] [stdout]      |                                         this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1168:39
[INFO] [stdout]      |
[INFO] [stdout] 1168 |                     while index_sum + (*node).links_len[lvl] <= index {
[INFO] [stdout]      |                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1168 |                     while index_sum + (&(*node).links_len)[lvl] <= index {
[INFO] [stdout]      |                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1169:38
[INFO] [stdout]      |
[INFO] [stdout] 1169 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                        |
[INFO] [stdout]      |                                        this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1169:38
[INFO] [stdout]      |
[INFO] [stdout] 1169 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1169 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]      |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1170:32
[INFO] [stdout]      |
[INFO] [stdout] 1170 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]      |                                ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                  |
[INFO] [stdout]      |                                  this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1170:32
[INFO] [stdout]      |
[INFO] [stdout] 1170 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]      |                                ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1170 |                         node = (&(*node).links)[lvl].unwrap();
[INFO] [stdout]      |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1199:61
[INFO] [stdout]      |
[INFO] [stdout] 1199 |                 let max_str_len = format!("{} -{}-", value, (*node).links_len[(*node).level]).len();
[INFO] [stdout]      |                                                             ^^----^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                               |
[INFO] [stdout]      |                                                               this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1199:61
[INFO] [stdout]      |
[INFO] [stdout] 1199 |                 let max_str_len = format!("{} -{}-", value, (*node).links_len[(*node).level]).len();
[INFO] [stdout]      |                                                             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1199 |                 let max_str_len = format!("{} -{}-", value, (&(*node).links_len)[(*node).level]).len();
[INFO] [stdout]      |                                                             ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1207:63
[INFO] [stdout]      |
[INFO] [stdout] 1207 |                         value_len = format!("{} -{}-", value, (*node).links_len[lvl]);
[INFO] [stdout]      |                                                               ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                                 |
[INFO] [stdout]      |                                                                 this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1207:63
[INFO] [stdout]      |
[INFO] [stdout] 1207 |                         value_len = format!("{} -{}-", value, (*node).links_len[lvl]);
[INFO] [stdout]      |                                                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1207 |                         value_len = format!("{} -{}-", value, (&(*node).links_len)[lvl]);
[INFO] [stdout]      |                                                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1227:37
[INFO] [stdout]      |
[INFO] [stdout] 1227 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                     ^^----^^^^^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1227:37
[INFO] [stdout]      |
[INFO] [stdout] 1227 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1227 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]      |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> src/skipmap.rs:1255:17
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                 mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                 let _ = mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1451:33
[INFO] [stdout]      |
[INFO] [stdout] 1451 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1451:33
[INFO] [stdout]      |
[INFO] [stdout] 1451 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1451 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1508:33
[INFO] [stdout]      |
[INFO] [stdout] 1508 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1508:33
[INFO] [stdout]      |
[INFO] [stdout] 1508 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1508 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1560:33
[INFO] [stdout]      |
[INFO] [stdout] 1560 |             if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                 ^^---------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1560:33
[INFO] [stdout]      |
[INFO] [stdout] 1560 |             if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1560 |             if let Some(next) = (&(*self.head).links)[0] {
[INFO] [stdout]      |                                 ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1563:51
[INFO] [stdout]      |
[INFO] [stdout] 1563 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                                                   ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1563:51
[INFO] [stdout]      |
[INFO] [stdout] 1563 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                                                   ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1563 |                         (*self.head).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]      |                                                   ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1563:25
[INFO] [stdout]      |
[INFO] [stdout] 1563 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1563:25
[INFO] [stdout]      |
[INFO] [stdout] 1563 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1563 |                         (&mut (*self.head).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1564:55
[INFO] [stdout]      |
[INFO] [stdout] 1564 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1564:55
[INFO] [stdout]      |
[INFO] [stdout] 1564 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1564 |                         (*self.head).links_len[lvl] = (&(*next).links_len)[lvl] - 1;
[INFO] [stdout]      |                                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1564:25
[INFO] [stdout]      |
[INFO] [stdout] 1564 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1564:25
[INFO] [stdout]      |
[INFO] [stdout] 1564 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1564 |                         (&mut (*self.head).links_len)[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1566:25
[INFO] [stdout]      |
[INFO] [stdout] 1566 |                         (*self.head).links_len[lvl] -= 1;
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1566:25
[INFO] [stdout]      |
[INFO] [stdout] 1566 |                         (*self.head).links_len[lvl] -= 1;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1566 |                         (&mut (*self.head).links_len)[lvl] -= 1;
[INFO] [stdout]      |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1569:37
[INFO] [stdout]      |
[INFO] [stdout] 1569 |                 if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                     ^^---------^^^^^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1569:37
[INFO] [stdout]      |
[INFO] [stdout] 1569 |                 if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1569 |                 if let Some(next) = (&(*self.head).links)[0] {
[INFO] [stdout]      |                                     ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1602:17
[INFO] [stdout]      |
[INFO] [stdout] 1602 |                 (*self.end).links[0] = None;
[INFO] [stdout]      |                 ^^--------^^^^^^^^^^
[INFO] [stdout]      |                   |
[INFO] [stdout]      |                   this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1602:17
[INFO] [stdout]      |
[INFO] [stdout] 1602 |                 (*self.end).links[0] = None;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1602 |                 (&mut (*self.end).links)[0] = None;
[INFO] [stdout]      |                 +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1627:33
[INFO] [stdout]      |
[INFO] [stdout] 1627 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1627:33
[INFO] [stdout]      |
[INFO] [stdout] 1627 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1627 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1681:33
[INFO] [stdout]      |
[INFO] [stdout] 1681 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1681:33
[INFO] [stdout]      |
[INFO] [stdout] 1681 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1681 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]   --> src/skiplist.rs:94:17
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 let _ = mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]   --> src/skiplist.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |         mem::replace(&mut self.head, new_head);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let _ = mem::replace(&mut self.head, new_head);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:176:40
[INFO] [stdout]     |
[INFO] [stdout] 176 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:176:40
[INFO] [stdout]     |
[INFO] [stdout] 176 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 176 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:177:36
[INFO] [stdout]     |
[INFO] [stdout] 177 |                     if index_sum + (*node).links_len[lvl] < index {
[INFO] [stdout]     |                                    ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:177:36
[INFO] [stdout]     |
[INFO] [stdout] 177 |                     if index_sum + (*node).links_len[lvl] < index {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 177 |                     if index_sum + (&(*node).links_len)[lvl] < index {
[INFO] [stdout]     |                                    ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:178:38
[INFO] [stdout]     |
[INFO] [stdout] 178 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:178:38
[INFO] [stdout]     |
[INFO] [stdout] 178 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 178 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]     |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:191:43
[INFO] [stdout]     |
[INFO] [stdout] 191 |                     new_node.links[lvl] = (*node).links[lvl];
[INFO] [stdout]     |                                           ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:191:43
[INFO] [stdout]     |
[INFO] [stdout] 191 |                     new_node.links[lvl] = (*node).links[lvl];
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 191 |                     new_node.links[lvl] = (&(*node).links)[lvl];
[INFO] [stdout]     |                                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:192:21
[INFO] [stdout]     |
[INFO] [stdout] 192 |                     (*node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:192:21
[INFO] [stdout]     |
[INFO] [stdout] 192 |                     (*node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 192 |                     (&mut (*node).links)[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:194:21
[INFO] [stdout]     |
[INFO] [stdout] 194 |                     (*node).links_len[lvl] += 1;
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:194:21
[INFO] [stdout]     |
[INFO] [stdout] 194 |                     (*node).links_len[lvl] += 1;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 194 |                     (&mut (*node).links_len)[lvl] += 1;
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:202:21
[INFO] [stdout]     |
[INFO] [stdout] 202 |                     (*node).links_len[lvl] = if (*node).is_head() {
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:202:21
[INFO] [stdout]     |
[INFO] [stdout] 202 |                     (*node).links_len[lvl] = if (*node).is_head() {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 202 |                     (&mut (*node).links_len)[lvl] = if (*node).is_head() {
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:210:47
[INFO] [stdout]     |
[INFO] [stdout] 210 |                     new_node.links_len[lvl] = (*node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                               ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:210:47
[INFO] [stdout]     |
[INFO] [stdout] 210 |                     new_node.links_len[lvl] = (*node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 210 |                     new_node.links_len[lvl] = (&(*node).links_len)[lvl] - length + 1;
[INFO] [stdout]     |                                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:211:21
[INFO] [stdout]     |
[INFO] [stdout] 211 |                     (*node).links_len[lvl] = length;
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:211:21
[INFO] [stdout]     |
[INFO] [stdout] 211 |                     (*node).links_len[lvl] = length;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 211 |                     (&mut (*node).links_len)[lvl] = length;
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:479:39
[INFO] [stdout]     |
[INFO] [stdout] 479 |                     while index_sum + (*node).links_len[lvl] < index {
[INFO] [stdout]     |                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:479:39
[INFO] [stdout]     |
[INFO] [stdout] 479 |                     while index_sum + (*node).links_len[lvl] < index {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 479 |                     while index_sum + (&(*node).links_len)[lvl] < index {
[INFO] [stdout]     |                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:480:38
[INFO] [stdout]     |
[INFO] [stdout] 480 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:480:38
[INFO] [stdout]     |
[INFO] [stdout] 480 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 480 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]     |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:481:32
[INFO] [stdout]     |
[INFO] [stdout] 481 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]     |                                ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:481:32
[INFO] [stdout]     |
[INFO] [stdout] 481 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 481 |                         node = (&(*node).links)[lvl].unwrap();
[INFO] [stdout]     |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:484:36
[INFO] [stdout]     |
[INFO] [stdout] 484 |                     if index_sum + (*node).links_len[lvl] == index {
[INFO] [stdout]     |                                    ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:484:36
[INFO] [stdout]     |
[INFO] [stdout] 484 |                     if index_sum + (*node).links_len[lvl] == index {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 484 |                     if index_sum + (&(*node).links_len)[lvl] == index {
[INFO] [stdout]     |                                    ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:485:45
[INFO] [stdout]     |
[INFO] [stdout] 485 |                         if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                             ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:485:45
[INFO] [stdout]     |
[INFO] [stdout] 485 |                         if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 485 |                         if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                             ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:487:50
[INFO] [stdout]     |
[INFO] [stdout] 487 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:487:50
[INFO] [stdout]     |
[INFO] [stdout] 487 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 487 |                             (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                  ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:487:29
[INFO] [stdout]     |
[INFO] [stdout] 487 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:487:29
[INFO] [stdout]     |
[INFO] [stdout] 487 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 487 |                             (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                             +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:488:55
[INFO] [stdout]     |
[INFO] [stdout] 488 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                                                 ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:488:55
[INFO] [stdout]     |
[INFO] [stdout] 488 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 488 |                             (*node).links_len[lvl] += (&(*next).links_len)[lvl] - 1;
[INFO] [stdout]     |                                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:488:29
[INFO] [stdout]     |
[INFO] [stdout] 488 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:488:29
[INFO] [stdout]     |
[INFO] [stdout] 488 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 488 |                             (&mut (*node).links_len)[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                             +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:491:25
[INFO] [stdout]     |
[INFO] [stdout] 491 |                         (*node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:491:25
[INFO] [stdout]     |
[INFO] [stdout] 491 |                         (*node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 491 |                         (&mut (*node).links_len)[lvl] -= 1;
[INFO] [stdout]     |                         +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:495:37
[INFO] [stdout]     |
[INFO] [stdout] 495 |                 if let Some(next) = (*return_node).links[0] {
[INFO] [stdout]     |                                     ^^-----------^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:495:37
[INFO] [stdout]     |
[INFO] [stdout] 495 |                 if let Some(next) = (*return_node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 495 |                 if let Some(next) = (&(*return_node).links)[0] {
[INFO] [stdout]     |                                     ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:536:41
[INFO] [stdout]     |
[INFO] [stdout] 536 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:536:41
[INFO] [stdout]     |
[INFO] [stdout] 536 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 536 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:539:54
[INFO] [stdout]     |
[INFO] [stdout] 539 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:539:54
[INFO] [stdout]     |
[INFO] [stdout] 539 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 539 |                                 (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                      ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:539:33
[INFO] [stdout]     |
[INFO] [stdout] 539 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:539:33
[INFO] [stdout]     |
[INFO] [stdout] 539 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 539 |                                 (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                 +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:549:69
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                                                       |
[INFO] [stdout]     |                                                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:549:69
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     (*node).links_len[lvl] = self.link_length(node, (&(*node).links)[lvl], lvl)
[INFO] [stdout]     |                                                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:549:21
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:549:21
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     (&mut (*node).links_len)[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:552:41
[INFO] [stdout]     |
[INFO] [stdout] 552 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:552:41
[INFO] [stdout]     |
[INFO] [stdout] 552 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 552 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:563:37
[INFO] [stdout]     |
[INFO] [stdout] 563 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^----^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:563:37
[INFO] [stdout]     |
[INFO] [stdout] 563 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 563 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]     |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/skiplist.rs:567:21
[INFO] [stdout]     |
[INFO] [stdout] 567 |                     mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 567 |                     let _ = mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skiplist.rs:608:17
[INFO] [stdout]     |
[INFO] [stdout] 608 |     pub fn iter(&self) -> Iter<T> {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 608 |     pub fn iter(&self) -> Iter<'_, T> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skiplist.rs:630:21
[INFO] [stdout]     |
[INFO] [stdout] 630 |     pub fn iter_mut(&self) -> IterMut<T> {
[INFO] [stdout]     |                     ^^^^^     ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 630 |     pub fn iter_mut(&self) -> IterMut<'_, T> {
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skiplist.rs:657:18
[INFO] [stdout]     |
[INFO] [stdout] 657 |     pub fn range(&self, min: Bound<usize>, max: Bound<usize>) -> Iter<T> {
[INFO] [stdout]     |                  ^^^^^ the lifetime is elided here               ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 657 |     pub fn range(&self, min: Bound<usize>, max: Bound<usize>) -> Iter<'_, T> {
[INFO] [stdout]     |                                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skiplist.rs:720:22
[INFO] [stdout]     |
[INFO] [stdout] 720 |     pub fn range_mut(&mut self, min: Bound<usize>, max: Bound<usize>) -> IterMut<T> {
[INFO] [stdout]     |                      ^^^^^^^^^ the lifetime is elided here               ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 720 |     pub fn range_mut(&mut self, min: Bound<usize>, max: Bound<usize>) -> IterMut<'_, T> {
[INFO] [stdout]     |                                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:820:41
[INFO] [stdout]     |
[INFO] [stdout] 820 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:820:41
[INFO] [stdout]     |
[INFO] [stdout] 820 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 820 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:824:58
[INFO] [stdout]     |
[INFO] [stdout] 824 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:824:58
[INFO] [stdout]     |
[INFO] [stdout] 824 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 824 |                                     (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                          ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:824:37
[INFO] [stdout]     |
[INFO] [stdout] 824 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:824:37
[INFO] [stdout]     |
[INFO] [stdout] 824 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 824 |                                     (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                     +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:838:54
[INFO] [stdout]     |
[INFO] [stdout] 838 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:838:54
[INFO] [stdout]     |
[INFO] [stdout] 838 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 838 |                                 (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                      ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:838:33
[INFO] [stdout]     |
[INFO] [stdout] 838 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:838:33
[INFO] [stdout]     |
[INFO] [stdout] 838 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 838 |                                 (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                 +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:845:69
[INFO] [stdout]     |
[INFO] [stdout] 845 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                                                       |
[INFO] [stdout]     |                                                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:845:69
[INFO] [stdout]     |
[INFO] [stdout] 845 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 845 |                     (*node).links_len[lvl] = self.link_length(node, (&(*node).links)[lvl], lvl)
[INFO] [stdout]     |                                                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:845:21
[INFO] [stdout]     |
[INFO] [stdout] 845 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:845:21
[INFO] [stdout]     |
[INFO] [stdout] 845 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 845 |                     (&mut (*node).links_len)[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:848:41
[INFO] [stdout]     |
[INFO] [stdout] 848 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:848:41
[INFO] [stdout]     |
[INFO] [stdout] 848 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 848 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:859:37
[INFO] [stdout]     |
[INFO] [stdout] 859 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^----^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:859:37
[INFO] [stdout]     |
[INFO] [stdout] 859 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 859 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]     |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/skiplist.rs:863:21
[INFO] [stdout]     |
[INFO] [stdout] 863 |                     mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 863 |                     let _ = mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:887:35
[INFO] [stdout]     |
[INFO] [stdout] 887 |                     length_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                   ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:887:35
[INFO] [stdout]     |
[INFO] [stdout] 887 |                     length_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 887 |                     length_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]     |                                   ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:890:32
[INFO] [stdout]     |
[INFO] [stdout] 890 |                     assert_eq!((*node).links_len[lvl],
[INFO] [stdout]     |                                ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:890:32
[INFO] [stdout]     |
[INFO] [stdout] 890 |                     assert_eq!((*node).links_len[lvl],
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 890 |                     assert_eq!((&(*node).links_len)[lvl],
[INFO] [stdout]     |                                ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:891:75
[INFO] [stdout]     |
[INFO] [stdout] 891 | ...                   self.link_length(node as *mut SkipNode<T>, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                  ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                                                    |
[INFO] [stdout]     |                                                                    this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:891:75
[INFO] [stdout]     |
[INFO] [stdout] 891 | ...                   self.link_length(node as *mut SkipNode<T>, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                  ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 891 |                                self.link_length(node as *mut SkipNode<T>, (&(*node).links)[lvl], lvl)
[INFO] [stdout]     |                                                                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:895:59
[INFO] [stdout]     |
[INFO] [stdout] 895 |                         assert!((*node).next.is_some() == (*node).links[lvl].is_some());
[INFO] [stdout]     |                                                           ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                                             |
[INFO] [stdout]     |                                                             this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:895:59
[INFO] [stdout]     |
[INFO] [stdout] 895 |                         assert!((*node).next.is_some() == (*node).links[lvl].is_some());
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 895 |                         assert!((*node).next.is_some() == (&(*node).links)[lvl].is_some());
[INFO] [stdout]     |                                                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:898:40
[INFO] [stdout]     |
[INFO] [stdout] 898 | ...                   assert_eq!((*prev).links[lvl], Some(node as *mut SkipNode<T>));
[INFO] [stdout]     |                                  ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:898:40
[INFO] [stdout]     |
[INFO] [stdout] 898 | ...                   assert_eq!((*prev).links[lvl], Some(node as *mut SkipNode<T>));
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 898 |                             assert_eq!((&(*prev).links)[lvl], Some(node as *mut SkipNode<T>));
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:903:41
[INFO] [stdout]     |
[INFO] [stdout] 903 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:903:41
[INFO] [stdout]     |
[INFO] [stdout] 903 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 903 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:945:27
[INFO] [stdout]     |
[INFO] [stdout] 945 |                     match (*node).links[lvl] {
[INFO] [stdout]     |                           ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:945:27
[INFO] [stdout]     |
[INFO] [stdout] 945 |                     match (*node).links[lvl] {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 945 |                     match (&(*node).links)[lvl] {
[INFO] [stdout]     |                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:952:31
[INFO] [stdout]     |
[INFO] [stdout] 952 |                     length += (*node).links_len[lvl - 1];
[INFO] [stdout]     |                               ^^----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:952:31
[INFO] [stdout]     |
[INFO] [stdout] 952 |                     length += (*node).links_len[lvl - 1];
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 952 |                     length += (&(*node).links_len)[lvl - 1];
[INFO] [stdout]     |                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:953:27
[INFO] [stdout]     |
[INFO] [stdout] 953 |                     match (*node).links[lvl - 1] {
[INFO] [stdout]     |                           ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:953:27
[INFO] [stdout]     |
[INFO] [stdout] 953 |                     match (*node).links[lvl - 1] {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 953 |                     match (&(*node).links)[lvl - 1] {
[INFO] [stdout]     |                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:978:40
[INFO] [stdout]     |
[INFO] [stdout] 978 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:978:40
[INFO] [stdout]     |
[INFO] [stdout] 978 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 978 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1003:39
[INFO] [stdout]      |
[INFO] [stdout] 1003 |                     while index_sum + (*node).links_len[lvl] <= index {
[INFO] [stdout]      |                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                         |
[INFO] [stdout]      |                                         this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1003:39
[INFO] [stdout]      |
[INFO] [stdout] 1003 |                     while index_sum + (*node).links_len[lvl] <= index {
[INFO] [stdout]      |                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1003 |                     while index_sum + (&(*node).links_len)[lvl] <= index {
[INFO] [stdout]      |                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.31s
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1004:38
[INFO] [stdout]      |
[INFO] [stdout] 1004 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                        |
[INFO] [stdout]      |                                        this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1004:38
[INFO] [stdout]      |
[INFO] [stdout] 1004 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1004 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]      |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1005:32
[INFO] [stdout]      |
[INFO] [stdout] 1005 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]      |                                ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                  |
[INFO] [stdout]      |                                  this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1005:32
[INFO] [stdout]      |
[INFO] [stdout] 1005 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]      |                                ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1005 |                         node = (&(*node).links)[lvl].unwrap();
[INFO] [stdout]      |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1032:61
[INFO] [stdout]      |
[INFO] [stdout] 1032 |                 let max_str_len = format!("{} -{}-", value, (*node).links_len[(*node).level]).len();
[INFO] [stdout]      |                                                             ^^----^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                               |
[INFO] [stdout]      |                                                               this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1032:61
[INFO] [stdout]      |
[INFO] [stdout] 1032 |                 let max_str_len = format!("{} -{}-", value, (*node).links_len[(*node).level]).len();
[INFO] [stdout]      |                                                             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1032 |                 let max_str_len = format!("{} -{}-", value, (&(*node).links_len)[(*node).level]).len();
[INFO] [stdout]      |                                                             ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1040:63
[INFO] [stdout]      |
[INFO] [stdout] 1040 |                         value_len = format!("{} -{}-", value, (*node).links_len[lvl]);
[INFO] [stdout]      |                                                               ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                                 |
[INFO] [stdout]      |                                                                 this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1040:63
[INFO] [stdout]      |
[INFO] [stdout] 1040 |                         value_len = format!("{} -{}-", value, (*node).links_len[lvl]);
[INFO] [stdout]      |                                                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1040 |                         value_len = format!("{} -{}-", value, (&(*node).links_len)[lvl]);
[INFO] [stdout]      |                                                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1060:37
[INFO] [stdout]      |
[INFO] [stdout] 1060 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                     ^^----^^^^^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1060:37
[INFO] [stdout]      |
[INFO] [stdout] 1060 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1060 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]      |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> src/skiplist.rs:1088:17
[INFO] [stdout]      |
[INFO] [stdout] 1088 |                 mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1088 |                 let _ = mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1248:33
[INFO] [stdout]      |
[INFO] [stdout] 1248 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1248:33
[INFO] [stdout]      |
[INFO] [stdout] 1248 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1248 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1300:33
[INFO] [stdout]      |
[INFO] [stdout] 1300 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1300:33
[INFO] [stdout]      |
[INFO] [stdout] 1300 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1300 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1346:33
[INFO] [stdout]      |
[INFO] [stdout] 1346 |             if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                 ^^---------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1346:33
[INFO] [stdout]      |
[INFO] [stdout] 1346 |             if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1346 |             if let Some(next) = (&(*self.head).links)[0] {
[INFO] [stdout]      |                                 ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1349:51
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                                                   ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1349:51
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                                                   ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                         (*self.head).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]      |                                                   ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1349:25
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1349:25
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                         (&mut (*self.head).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1350:55
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1350:55
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         (*self.head).links_len[lvl] = (&(*next).links_len)[lvl] - 1;
[INFO] [stdout]      |                                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1350:25
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1350:25
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         (&mut (*self.head).links_len)[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1352:25
[INFO] [stdout]      |
[INFO] [stdout] 1352 |                         (*self.head).links_len[lvl] -= 1;
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1352:25
[INFO] [stdout]      |
[INFO] [stdout] 1352 |                         (*self.head).links_len[lvl] -= 1;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1352 |                         (&mut (*self.head).links_len)[lvl] -= 1;
[INFO] [stdout]      |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1355:37
[INFO] [stdout]      |
[INFO] [stdout] 1355 |                 if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                     ^^---------^^^^^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1355:37
[INFO] [stdout]      |
[INFO] [stdout] 1355 |                 if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1355 |                 if let Some(next) = (&(*self.head).links)[0] {
[INFO] [stdout]      |                                     ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1387:17
[INFO] [stdout]      |
[INFO] [stdout] 1387 |                 (*self.end).links[0] = None;
[INFO] [stdout]      |                 ^^--------^^^^^^^^^^
[INFO] [stdout]      |                   |
[INFO] [stdout]      |                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1387:17
[INFO] [stdout]      |
[INFO] [stdout] 1387 |                 (*self.end).links[0] = None;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1387 |                 (&mut (*self.end).links)[0] = None;
[INFO] [stdout]      |                 +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "0dbac104836d4f9ade5bf4a5ea1cb1ceee184da0651acf9bc59772f34105b4d1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0dbac104836d4f9ade5bf4a5ea1cb1ceee184da0651acf9bc59772f34105b4d1", kill_on_drop: false }`
[INFO] [stdout] 0dbac104836d4f9ade5bf4a5ea1cb1ceee184da0651acf9bc59772f34105b4d1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 636beab41f3583f085c28d8e471fc187e22b98e50f671da7e9d2d00df18ba614
[INFO] running `Command { std: "docker" "start" "-a" "636beab41f3583f085c28d8e471fc187e22b98e50f671da7e9d2d00df18ba614", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stdout] warning: unexpected `cfg` condition value: `bench`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1878:17
[INFO] [stdout]      |
[INFO] [stdout] 1878 | #[cfg(all(test, feature="bench"))]
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected values for `feature` are: `unstable`
[INFO] [stdout]      = help: consider adding `bench` as a feature in `Cargo.toml`
[INFO] [stdout]      = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]      = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1415:9
[INFO] [stdout]      |
[INFO] [stdout] 1415 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1421:13
[INFO] [stdout]      |
[INFO] [stdout] 1421 |             try!(write!(f, "{:?}", entry));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1419:17
[INFO] [stdout]      |
[INFO] [stdout] 1419 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1430:9
[INFO] [stdout]      |
[INFO] [stdout] 1430 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1436:13
[INFO] [stdout]      |
[INFO] [stdout] 1436 |             try!(write!(f, "{}", entry));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1434:17
[INFO] [stdout]      |
[INFO] [stdout] 1434 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `bench`
[INFO] [stdout]     --> src/skipmap.rs:1944:17
[INFO] [stdout]      |
[INFO] [stdout] 1944 | #[cfg(all(test, feature="bench"))]
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected values for `feature` are: `unstable`
[INFO] [stdout]      = help: consider adding `bench` as a feature in `Cargo.toml`
[INFO] [stdout]      = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1356:9
[INFO] [stdout]      |
[INFO] [stdout] 1356 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1362:13
[INFO] [stdout]      |
[INFO] [stdout] 1362 |             try!(write!(f, "({:?}, {:?})", k, v));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1360:17
[INFO] [stdout]      |
[INFO] [stdout] 1360 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1373:9
[INFO] [stdout]      |
[INFO] [stdout] 1373 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1379:13
[INFO] [stdout]      |
[INFO] [stdout] 1379 |             try!(write!(f, "({}, {})", k, v));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1377:17
[INFO] [stdout]      |
[INFO] [stdout] 1377 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `bench`
[INFO] [stdout]     --> src/skiplist.rs:1671:17
[INFO] [stdout]      |
[INFO] [stdout] 1671 | #[cfg(all(test, feature="bench"))]
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected values for `feature` are: `unstable`
[INFO] [stdout]      = help: consider adding `bench` as a feature in `Cargo.toml`
[INFO] [stdout]      = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1156:9
[INFO] [stdout]      |
[INFO] [stdout] 1156 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1162:13
[INFO] [stdout]      |
[INFO] [stdout] 1162 |             try!(write!(f, "{:?}", entry));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1160:17
[INFO] [stdout]      |
[INFO] [stdout] 1160 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1171:9
[INFO] [stdout]      |
[INFO] [stdout] 1171 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1177:13
[INFO] [stdout]      |
[INFO] [stdout] 1177 |             try!(write!(f, "{}", entry));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1175:17
[INFO] [stdout]      |
[INFO] [stdout] 1175 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ordered_skiplist.rs:44:18
[INFO] [stdout]    |
[INFO] [stdout] 44 |     compare: Box<Fn(&T, &T) -> Ordering>,
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 |     compare: Box<dyn Fn(&T, &T) -> Ordering>,
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ordered_skiplist.rs:81:24
[INFO] [stdout]    |
[INFO] [stdout] 81 |             })) as Box<Fn(&T, &T) -> Ordering>,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 81 |             })) as Box<dyn Fn(&T, &T) -> Ordering>,
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ordered_skiplist.rs:115:24
[INFO] [stdout]     |
[INFO] [stdout] 115 |             })) as Box<Fn(&T, &T) -> Ordering>,
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 115 |             })) as Box<dyn Fn(&T, &T) -> Ordering>,
[INFO] [stdout]     |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:206:32
[INFO] [stdout]     |
[INFO] [stdout] 206 |         while let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                ^^----^^^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:206:32
[INFO] [stdout]     |
[INFO] [stdout] 206 |         while let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(dangerous_implicit_autorefs)]` on by default
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 206 |         while let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]     |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/ordered_skiplist.rs:236:17
[INFO] [stdout]     |
[INFO] [stdout] 236 |                 mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 236 |                 let _ = mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/ordered_skiplist.rs:241:9
[INFO] [stdout]     |
[INFO] [stdout] 241 |         mem::replace(&mut self.head, new_head);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 241 |         let _ = mem::replace(&mut self.head, new_head);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:310:40
[INFO] [stdout]     |
[INFO] [stdout] 310 |                 while let Some(next) = (*insert_node).links[lvl] {
[INFO] [stdout]     |                                        ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:310:40
[INFO] [stdout]     |
[INFO] [stdout] 310 |                 while let Some(next) = (*insert_node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 310 |                 while let Some(next) = (&(*insert_node).links)[lvl] {
[INFO] [stdout]     |                                        ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:325:43
[INFO] [stdout]     |
[INFO] [stdout] 325 |                     new_node.links[lvl] = (*insert_node).links[lvl];
[INFO] [stdout]     |                                           ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:325:43
[INFO] [stdout]     |
[INFO] [stdout] 325 |                     new_node.links[lvl] = (*insert_node).links[lvl];
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 325 |                     new_node.links[lvl] = (&(*insert_node).links)[lvl];
[INFO] [stdout]     |                                           ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:326:21
[INFO] [stdout]     |
[INFO] [stdout] 326 |                     (*insert_node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:326:21
[INFO] [stdout]     |
[INFO] [stdout] 326 |                     (*insert_node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 326 |                     (&mut (*insert_node).links)[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     +++++                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:328:21
[INFO] [stdout]     |
[INFO] [stdout] 328 |                     (*insert_node).links_len[lvl] += 1;
[INFO] [stdout]     |                     ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:328:21
[INFO] [stdout]     |
[INFO] [stdout] 328 |                     (*insert_node).links_len[lvl] += 1;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 328 |                     (&mut (*insert_node).links_len)[lvl] += 1;
[INFO] [stdout]     |                     +++++                         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:336:21
[INFO] [stdout]     |
[INFO] [stdout] 336 |                     (*insert_node).links_len[lvl] = if (*insert_node).is_head() {
[INFO] [stdout]     |                     ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:336:21
[INFO] [stdout]     |
[INFO] [stdout] 336 |                     (*insert_node).links_len[lvl] = if (*insert_node).is_head() {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 336 |                     (&mut (*insert_node).links_len)[lvl] = if (*insert_node).is_head() {
[INFO] [stdout]     |                     +++++                         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:344:47
[INFO] [stdout]     |
[INFO] [stdout] 344 |                     new_node.links_len[lvl] = (*insert_node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                               ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:344:47
[INFO] [stdout]     |
[INFO] [stdout] 344 |                     new_node.links_len[lvl] = (*insert_node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 344 |                     new_node.links_len[lvl] = (&(*insert_node).links_len)[lvl] - length + 1;
[INFO] [stdout]     |                                               ++                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:345:21
[INFO] [stdout]     |
[INFO] [stdout] 345 |                     (*insert_node).links_len[lvl] = length;
[INFO] [stdout]     |                     ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:345:21
[INFO] [stdout]     |
[INFO] [stdout] 345 |                     (*insert_node).links_len[lvl] = length;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 345 |                     (&mut (*insert_node).links_len)[lvl] = length;
[INFO] [stdout]     |                     +++++                         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:503:40
[INFO] [stdout]     |
[INFO] [stdout] 503 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:503:40
[INFO] [stdout]     |
[INFO] [stdout] 503 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 503 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:562:44
[INFO] [stdout]     |
[INFO] [stdout] 562 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:562:44
[INFO] [stdout]     |
[INFO] [stdout] 562 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 562 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:571:44
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:571:44
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:592:24
[INFO] [stdout]     |
[INFO] [stdout] 592 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:592:24
[INFO] [stdout]     |
[INFO] [stdout] 592 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 592 |                     if (&(*node).links)[lvl].is_none() {
[INFO] [stdout]     |                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:603:24
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:603:24
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     if (&(*prev_node).links)[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:604:51
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                                                     |
[INFO] [stdout]     |                                                     this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:604:51
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (&(*return_node).links)[lvl];
[INFO] [stdout]     |                                                   ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:604:25
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:604:25
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (&mut (*prev_node).links)[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:605:56
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                          |
[INFO] [stdout]     |                                                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:605:56
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (&(*return_node).links_len)[lvl] - 1;
[INFO] [stdout]     |                                                        ++                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:605:25
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:605:25
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (&mut (*prev_node).links_len)[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:607:25
[INFO] [stdout]     |
[INFO] [stdout] 607 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:607:25
[INFO] [stdout]     |
[INFO] [stdout] 607 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 607 |                         (&mut (*prev_node).links_len)[lvl] -= 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:610:42
[INFO] [stdout]     |
[INFO] [stdout] 610 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^-----------^^^^^^^^^^
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:610:42
[INFO] [stdout]     |
[INFO] [stdout] 610 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 610 |                 if let Some(next_node) = (&(*return_node).links)[0] {
[INFO] [stdout]     |                                          ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:667:44
[INFO] [stdout]     |
[INFO] [stdout] 667 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:667:44
[INFO] [stdout]     |
[INFO] [stdout] 667 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 667 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:676:44
[INFO] [stdout]     |
[INFO] [stdout] 676 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:676:44
[INFO] [stdout]     |
[INFO] [stdout] 676 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 676 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:702:24
[INFO] [stdout]     |
[INFO] [stdout] 702 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:702:24
[INFO] [stdout]     |
[INFO] [stdout] 702 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 702 |                     if (&(*node).links)[lvl].is_none() {
[INFO] [stdout]     |                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:711:24
[INFO] [stdout]     |
[INFO] [stdout] 711 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:711:24
[INFO] [stdout]     |
[INFO] [stdout] 711 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 711 |                     if (&(*prev_node).links)[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:712:51
[INFO] [stdout]     |
[INFO] [stdout] 712 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                                                     |
[INFO] [stdout]     |                                                     this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:712:51
[INFO] [stdout]     |
[INFO] [stdout] 712 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 712 |                         (*prev_node).links[lvl] = (&(*return_node).links)[lvl];
[INFO] [stdout]     |                                                   ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:712:25
[INFO] [stdout]     |
[INFO] [stdout] 712 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:712:25
[INFO] [stdout]     |
[INFO] [stdout] 712 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 712 |                         (&mut (*prev_node).links)[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:713:56
[INFO] [stdout]     |
[INFO] [stdout] 713 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                          |
[INFO] [stdout]     |                                                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:713:56
[INFO] [stdout]     |
[INFO] [stdout] 713 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 713 |                         (*prev_node).links_len[lvl] += (&(*return_node).links_len)[lvl] - 1;
[INFO] [stdout]     |                                                        ++                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:713:25
[INFO] [stdout]     |
[INFO] [stdout] 713 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:713:25
[INFO] [stdout]     |
[INFO] [stdout] 713 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 713 |                         (&mut (*prev_node).links_len)[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:715:25
[INFO] [stdout]     |
[INFO] [stdout] 715 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:715:25
[INFO] [stdout]     |
[INFO] [stdout] 715 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 715 |                         (&mut (*prev_node).links_len)[lvl] -= 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:718:42
[INFO] [stdout]     |
[INFO] [stdout] 718 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^-----------^^^^^^^^^^
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:718:42
[INFO] [stdout]     |
[INFO] [stdout] 718 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 718 |                 if let Some(next_node) = (&(*return_node).links)[0] {
[INFO] [stdout]     |                                          ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:759:41
[INFO] [stdout]     |
[INFO] [stdout] 759 |                     while &(index_sum + (*node).links_len[lvl]) < index {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:759:41
[INFO] [stdout]     |
[INFO] [stdout] 759 |                     while &(index_sum + (*node).links_len[lvl]) < index {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 759 |                     while &(index_sum + (&(*node).links_len)[lvl]) < index {
[INFO] [stdout]     |                                         ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:760:38
[INFO] [stdout]     |
[INFO] [stdout] 760 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:760:38
[INFO] [stdout]     |
[INFO] [stdout] 760 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 760 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]     |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:761:32
[INFO] [stdout]     |
[INFO] [stdout] 761 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]     |                                ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:761:32
[INFO] [stdout]     |
[INFO] [stdout] 761 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 761 |                         node = (&(*node).links)[lvl].unwrap();
[INFO] [stdout]     |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:764:38
[INFO] [stdout]     |
[INFO] [stdout] 764 |                     if &(index_sum + (*node).links_len[lvl]) == index {
[INFO] [stdout]     |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:764:38
[INFO] [stdout]     |
[INFO] [stdout] 764 |                     if &(index_sum + (*node).links_len[lvl]) == index {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 764 |                     if &(index_sum + (&(*node).links_len)[lvl]) == index {
[INFO] [stdout]     |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:765:45
[INFO] [stdout]     |
[INFO] [stdout] 765 |                         if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                             ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:765:45
[INFO] [stdout]     |
[INFO] [stdout] 765 |                         if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 765 |                         if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                             ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:767:50
[INFO] [stdout]     |
[INFO] [stdout] 767 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:767:50
[INFO] [stdout]     |
[INFO] [stdout] 767 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 767 |                             (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                  ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:767:29
[INFO] [stdout]     |
[INFO] [stdout] 767 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:767:29
[INFO] [stdout]     |
[INFO] [stdout] 767 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 767 |                             (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                             +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:768:55
[INFO] [stdout]     |
[INFO] [stdout] 768 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                                                 ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:768:55
[INFO] [stdout]     |
[INFO] [stdout] 768 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 768 |                             (*node).links_len[lvl] += (&(*next).links_len)[lvl] - 1;
[INFO] [stdout]     |                                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:768:29
[INFO] [stdout]     |
[INFO] [stdout] 768 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:768:29
[INFO] [stdout]     |
[INFO] [stdout] 768 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 768 |                             (&mut (*node).links_len)[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                             +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:771:25
[INFO] [stdout]     |
[INFO] [stdout] 771 |                         (*node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:771:25
[INFO] [stdout]     |
[INFO] [stdout] 771 |                         (*node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 771 |                         (&mut (*node).links_len)[lvl] -= 1;
[INFO] [stdout]     |                         +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:775:37
[INFO] [stdout]     |
[INFO] [stdout] 775 |                 if let Some(next) = (*return_node).links[0] {
[INFO] [stdout]     |                                     ^^-----------^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:775:37
[INFO] [stdout]     |
[INFO] [stdout] 775 |                 if let Some(next) = (*return_node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 775 |                 if let Some(next) = (&(*return_node).links)[0] {
[INFO] [stdout]     |                                     ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:816:41
[INFO] [stdout]     |
[INFO] [stdout] 816 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:816:41
[INFO] [stdout]     |
[INFO] [stdout] 816 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 816 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:819:54
[INFO] [stdout]     |
[INFO] [stdout] 819 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:819:54
[INFO] [stdout]     |
[INFO] [stdout] 819 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 819 |                                 (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                      ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:819:33
[INFO] [stdout]     |
[INFO] [stdout] 819 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:819:33
[INFO] [stdout]     |
[INFO] [stdout] 819 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 819 |                                 (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                 +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:829:69
[INFO] [stdout]     |
[INFO] [stdout] 829 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                                                       |
[INFO] [stdout]     |                                                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:829:69
[INFO] [stdout]     |
[INFO] [stdout] 829 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 829 |                     (*node).links_len[lvl] = self.link_length(node, (&(*node).links)[lvl], lvl)
[INFO] [stdout]     |                                                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:829:21
[INFO] [stdout]     |
[INFO] [stdout] 829 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:829:21
[INFO] [stdout]     |
[INFO] [stdout] 829 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 829 |                     (&mut (*node).links_len)[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:832:41
[INFO] [stdout]     |
[INFO] [stdout] 832 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:832:41
[INFO] [stdout]     |
[INFO] [stdout] 832 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 832 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:843:37
[INFO] [stdout]     |
[INFO] [stdout] 843 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^----^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:843:37
[INFO] [stdout]     |
[INFO] [stdout] 843 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 843 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]     |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/ordered_skiplist.rs:847:21
[INFO] [stdout]     |
[INFO] [stdout] 847 |                     mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 847 |                     let _ = mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:879:41
[INFO] [stdout]     |
[INFO] [stdout] 879 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:879:41
[INFO] [stdout]     |
[INFO] [stdout] 879 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 879 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:883:58
[INFO] [stdout]     |
[INFO] [stdout] 883 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:883:58
[INFO] [stdout]     |
[INFO] [stdout] 883 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 883 |                                     (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                          ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:883:37
[INFO] [stdout]     |
[INFO] [stdout] 883 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:883:37
[INFO] [stdout]     |
[INFO] [stdout] 883 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 883 |                                     (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                     +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:897:54
[INFO] [stdout]     |
[INFO] [stdout] 897 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:897:54
[INFO] [stdout]     |
[INFO] [stdout] 897 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 897 |                                 (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                      ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:897:33
[INFO] [stdout]     |
[INFO] [stdout] 897 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:897:33
[INFO] [stdout]     |
[INFO] [stdout] 897 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 897 |                                 (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                 +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:904:69
[INFO] [stdout]     |
[INFO] [stdout] 904 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                                                       |
[INFO] [stdout]     |                                                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:904:69
[INFO] [stdout]     |
[INFO] [stdout] 904 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 904 |                     (*node).links_len[lvl] = self.link_length(node, (&(*node).links)[lvl], lvl)
[INFO] [stdout]     |                                                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:904:21
[INFO] [stdout]     |
[INFO] [stdout] 904 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:904:21
[INFO] [stdout]     |
[INFO] [stdout] 904 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 904 |                     (&mut (*node).links_len)[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:907:41
[INFO] [stdout]     |
[INFO] [stdout] 907 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:907:41
[INFO] [stdout]     |
[INFO] [stdout] 907 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 907 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:918:37
[INFO] [stdout]     |
[INFO] [stdout] 918 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^----^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:918:37
[INFO] [stdout]     |
[INFO] [stdout] 918 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 918 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]     |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/ordered_skiplist.rs:922:21
[INFO] [stdout]     |
[INFO] [stdout] 922 |                     mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 922 |                     let _ = mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ordered_skiplist.rs:963:17
[INFO] [stdout]     |
[INFO] [stdout] 963 |     pub fn iter(&self) -> Iter<T> {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 963 |     pub fn iter(&self) -> Iter<'_, T> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ordered_skiplist.rs:990:18
[INFO] [stdout]     |
[INFO] [stdout] 990 |     pub fn range(&self, min: Bound<&T>, max: Bound<&T>) -> Iter<T> {
[INFO] [stdout]     |                  ^^^^^ the lifetime is elided here         ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 990 |     pub fn range(&self, min: Bound<&T>, max: Bound<&T>) -> Iter<'_, T> {
[INFO] [stdout]     |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1017:44
[INFO] [stdout]      |
[INFO] [stdout] 1017 |                     while let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                            ^^----^^^^^^^^^^
[INFO] [stdout]      |                                              |
[INFO] [stdout]      |                                              this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1017:44
[INFO] [stdout]      |
[INFO] [stdout] 1017 |                     while let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1017 |                     while let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]      |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1035:52
[INFO] [stdout]      |
[INFO] [stdout] 1035 | ...                   while let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                              ^^----^^^^^^^^^^
[INFO] [stdout]      |                                                |
[INFO] [stdout]      |                                                this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1035:52
[INFO] [stdout]      |
[INFO] [stdout] 1035 | ...                   while let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                              ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1035 |                             while let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]      |                                                    ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1109:35
[INFO] [stdout]      |
[INFO] [stdout] 1109 |                     length_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                   ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                     |
[INFO] [stdout]      |                                     this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1109:35
[INFO] [stdout]      |
[INFO] [stdout] 1109 |                     length_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1109 |                     length_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]      |                                   ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1112:32
[INFO] [stdout]      |
[INFO] [stdout] 1112 |                     assert_eq!((*node).links_len[lvl],
[INFO] [stdout]      |                                ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                  |
[INFO] [stdout]      |                                  this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1112:32
[INFO] [stdout]      |
[INFO] [stdout] 1112 |                     assert_eq!((*node).links_len[lvl],
[INFO] [stdout]      |                                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1112 |                     assert_eq!((&(*node).links_len)[lvl],
[INFO] [stdout]      |                                ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1113:75
[INFO] [stdout]      |
[INFO] [stdout] 1113 | ...                   self.link_length(node as *mut SkipNode<T>, (*node).links[lvl], lvl)
[INFO] [stdout]      |                                                                  ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                                                    |
[INFO] [stdout]      |                                                                    this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1113:75
[INFO] [stdout]      |
[INFO] [stdout] 1113 | ...                   self.link_length(node as *mut SkipNode<T>, (*node).links[lvl], lvl)
[INFO] [stdout]      |                                                                  ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1113 |                                self.link_length(node as *mut SkipNode<T>, (&(*node).links)[lvl], lvl)
[INFO] [stdout]      |                                                                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1117:59
[INFO] [stdout]      |
[INFO] [stdout] 1117 |                         assert!((*node).next.is_some() == (*node).links[lvl].is_some());
[INFO] [stdout]      |                                                           ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                                             |
[INFO] [stdout]      |                                                             this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1117:59
[INFO] [stdout]      |
[INFO] [stdout] 1117 |                         assert!((*node).next.is_some() == (*node).links[lvl].is_some());
[INFO] [stdout]      |                                                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1117 |                         assert!((*node).next.is_some() == (&(*node).links)[lvl].is_some());
[INFO] [stdout]      |                                                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1120:40
[INFO] [stdout]      |
[INFO] [stdout] 1120 | ...                   assert_eq!((*prev).links[lvl], Some(node as *mut SkipNode<T>));
[INFO] [stdout]      |                                  ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                    |
[INFO] [stdout]      |                                    this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1120:40
[INFO] [stdout]      |
[INFO] [stdout] 1120 | ...                   assert_eq!((*prev).links[lvl], Some(node as *mut SkipNode<T>));
[INFO] [stdout]      |                                  ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1120 |                             assert_eq!((&(*prev).links)[lvl], Some(node as *mut SkipNode<T>));
[INFO] [stdout]      |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1125:41
[INFO] [stdout]      |
[INFO] [stdout] 1125 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                           |
[INFO] [stdout]      |                                           this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1125:41
[INFO] [stdout]      |
[INFO] [stdout] 1125 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1125 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]      |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1167:27
[INFO] [stdout]      |
[INFO] [stdout] 1167 |                     match (*node).links[lvl] {
[INFO] [stdout]      |                           ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1167:27
[INFO] [stdout]      |
[INFO] [stdout] 1167 |                     match (*node).links[lvl] {
[INFO] [stdout]      |                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1167 |                     match (&(*node).links)[lvl] {
[INFO] [stdout]      |                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1174:31
[INFO] [stdout]      |
[INFO] [stdout] 1174 |                     length += (*node).links_len[lvl - 1];
[INFO] [stdout]      |                               ^^----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                 |
[INFO] [stdout]      |                                 this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1174:31
[INFO] [stdout]      |
[INFO] [stdout] 1174 |                     length += (*node).links_len[lvl - 1];
[INFO] [stdout]      |                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1174 |                     length += (&(*node).links_len)[lvl - 1];
[INFO] [stdout]      |                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1175:27
[INFO] [stdout]      |
[INFO] [stdout] 1175 |                     match (*node).links[lvl - 1] {
[INFO] [stdout]      |                           ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1175:27
[INFO] [stdout]      |
[INFO] [stdout] 1175 |                     match (*node).links[lvl - 1] {
[INFO] [stdout]      |                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1175 |                     match (&(*node).links)[lvl - 1] {
[INFO] [stdout]      |                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1200:40
[INFO] [stdout]      |
[INFO] [stdout] 1200 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                          |
[INFO] [stdout]      |                                          this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1200:40
[INFO] [stdout]      |
[INFO] [stdout] 1200 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1200 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]      |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1224:40
[INFO] [stdout]      |
[INFO] [stdout] 1224 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                          |
[INFO] [stdout]      |                                          this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1224:40
[INFO] [stdout]      |
[INFO] [stdout] 1224 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1224 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]      |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1262:39
[INFO] [stdout]      |
[INFO] [stdout] 1262 |                     while index_sum + (*node).links_len[lvl] <= index {
[INFO] [stdout]      |                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                         |
[INFO] [stdout]      |                                         this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1262:39
[INFO] [stdout]      |
[INFO] [stdout] 1262 |                     while index_sum + (*node).links_len[lvl] <= index {
[INFO] [stdout]      |                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1262 |                     while index_sum + (&(*node).links_len)[lvl] <= index {
[INFO] [stdout]      |                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1263:38
[INFO] [stdout]      |
[INFO] [stdout] 1263 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                        |
[INFO] [stdout]      |                                        this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1263:38
[INFO] [stdout]      |
[INFO] [stdout] 1263 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1263 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]      |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1264:32
[INFO] [stdout]      |
[INFO] [stdout] 1264 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]      |                                ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                  |
[INFO] [stdout]      |                                  this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1264:32
[INFO] [stdout]      |
[INFO] [stdout] 1264 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]      |                                ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1264 |                         node = (&(*node).links)[lvl].unwrap();
[INFO] [stdout]      |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1291:61
[INFO] [stdout]      |
[INFO] [stdout] 1291 |                 let max_str_len = format!("{} -{}-", value, (*node).links_len[(*node).level]).len();
[INFO] [stdout]      |                                                             ^^----^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                               |
[INFO] [stdout]      |                                                               this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1291:61
[INFO] [stdout]      |
[INFO] [stdout] 1291 |                 let max_str_len = format!("{} -{}-", value, (*node).links_len[(*node).level]).len();
[INFO] [stdout]      |                                                             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1291 |                 let max_str_len = format!("{} -{}-", value, (&(*node).links_len)[(*node).level]).len();
[INFO] [stdout]      |                                                             ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1299:63
[INFO] [stdout]      |
[INFO] [stdout] 1299 |                         value_len = format!("{} -{}-", value, (*node).links_len[lvl]);
[INFO] [stdout]      |                                                               ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                                 |
[INFO] [stdout]      |                                                                 this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1299:63
[INFO] [stdout]      |
[INFO] [stdout] 1299 |                         value_len = format!("{} -{}-", value, (*node).links_len[lvl]);
[INFO] [stdout]      |                                                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1299 |                         value_len = format!("{} -{}-", value, (&(*node).links_len)[lvl]);
[INFO] [stdout]      |                                                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1319:37
[INFO] [stdout]      |
[INFO] [stdout] 1319 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                     ^^----^^^^^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1319:37
[INFO] [stdout]      |
[INFO] [stdout] 1319 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1319 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]      |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> src/ordered_skiplist.rs:1347:17
[INFO] [stdout]      |
[INFO] [stdout] 1347 |                 mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1347 |                 let _ = mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1507:33
[INFO] [stdout]      |
[INFO] [stdout] 1507 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1507:33
[INFO] [stdout]      |
[INFO] [stdout] 1507 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1507 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1556:33
[INFO] [stdout]      |
[INFO] [stdout] 1556 |             if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                 ^^---------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1556:33
[INFO] [stdout]      |
[INFO] [stdout] 1556 |             if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1556 |             if let Some(next) = (&(*self.head).links)[0] {
[INFO] [stdout]      |                                 ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1559:51
[INFO] [stdout]      |
[INFO] [stdout] 1559 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                                                   ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1559:51
[INFO] [stdout]      |
[INFO] [stdout] 1559 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                                                   ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1559 |                         (*self.head).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]      |                                                   ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1559:25
[INFO] [stdout]      |
[INFO] [stdout] 1559 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1559:25
[INFO] [stdout]      |
[INFO] [stdout] 1559 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1559 |                         (&mut (*self.head).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1560:55
[INFO] [stdout]      |
[INFO] [stdout] 1560 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1560:55
[INFO] [stdout]      |
[INFO] [stdout] 1560 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1560 |                         (*self.head).links_len[lvl] = (&(*next).links_len)[lvl] - 1;
[INFO] [stdout]      |                                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1560:25
[INFO] [stdout]      |
[INFO] [stdout] 1560 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1560:25
[INFO] [stdout]      |
[INFO] [stdout] 1560 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1560 |                         (&mut (*self.head).links_len)[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1562:25
[INFO] [stdout]      |
[INFO] [stdout] 1562 |                         (*self.head).links_len[lvl] -= 1;
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1562:25
[INFO] [stdout]      |
[INFO] [stdout] 1562 |                         (*self.head).links_len[lvl] -= 1;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1562 |                         (&mut (*self.head).links_len)[lvl] -= 1;
[INFO] [stdout]      |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1565:37
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                 if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                     ^^---------^^^^^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1565:37
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                 if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                 if let Some(next) = (&(*self.head).links)[0] {
[INFO] [stdout]      |                                     ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/ordered_skiplist.rs:1597:17
[INFO] [stdout]      |
[INFO] [stdout] 1597 |                 (*self.end).links[0] = None;
[INFO] [stdout]      |                 ^^--------^^^^^^^^^^
[INFO] [stdout]      |                   |
[INFO] [stdout]      |                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1597:17
[INFO] [stdout]      |
[INFO] [stdout] 1597 |                 (*self.end).links[0] = None;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1597 |                 (&mut (*self.end).links)[0] = None;
[INFO] [stdout]      |                 +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:206:44
[INFO] [stdout]     |
[INFO] [stdout] 206 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:206:44
[INFO] [stdout]     |
[INFO] [stdout] 206 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 206 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:216:44
[INFO] [stdout]     |
[INFO] [stdout] 216 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:216:44
[INFO] [stdout]     |
[INFO] [stdout] 216 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 216 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:237:24
[INFO] [stdout]     |
[INFO] [stdout] 237 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:237:24
[INFO] [stdout]     |
[INFO] [stdout] 237 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 237 |                     if (&(*node).links)[lvl].is_none() {
[INFO] [stdout]     |                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:256:47
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         new_node.links[lvl] = (*prev_node).links[lvl];
[INFO] [stdout]     |                                               ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:256:47
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         new_node.links[lvl] = (*prev_node).links[lvl];
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         new_node.links[lvl] = (&(*prev_node).links)[lvl];
[INFO] [stdout]     |                                               ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:257:25
[INFO] [stdout]     |
[INFO] [stdout] 257 |                         (*prev_node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:257:25
[INFO] [stdout]     |
[INFO] [stdout] 257 |                         (*prev_node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 257 |                         (&mut (*prev_node).links)[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:268:55
[INFO] [stdout]     |
[INFO] [stdout] 268 | ...                   new_node.links_len[lvl] = (*prev_node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                                 ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:268:55
[INFO] [stdout]     |
[INFO] [stdout] 268 | ...                   new_node.links_len[lvl] = (*prev_node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 268 |                             new_node.links_len[lvl] = (&(*prev_node).links_len)[lvl] - length + 1;
[INFO] [stdout]     |                                                       ++                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:269:29
[INFO] [stdout]     |
[INFO] [stdout] 269 | ...                   (*prev_node).links_len[lvl] = length;
[INFO] [stdout]     |                       ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:269:29
[INFO] [stdout]     |
[INFO] [stdout] 269 | ...                   (*prev_node).links_len[lvl] = length;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 269 |                             (&mut (*prev_node).links_len)[lvl] = length;
[INFO] [stdout]     |                             +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:272:25
[INFO] [stdout]     |
[INFO] [stdout] 272 |                         (*prev_node).links_len[lvl] += 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:272:25
[INFO] [stdout]     |
[INFO] [stdout] 272 |                         (*prev_node).links_len[lvl] += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 272 |                         (&mut (*prev_node).links_len)[lvl] += 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/skipmap.rs:308:17
[INFO] [stdout]     |
[INFO] [stdout] 308 |                 mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 308 |                 let _ = mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/skipmap.rs:313:9
[INFO] [stdout]     |
[INFO] [stdout] 313 |         mem::replace(&mut self.head, new_head);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 313 |         let _ = mem::replace(&mut self.head, new_head);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:489:40
[INFO] [stdout]     |
[INFO] [stdout] 489 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:489:40
[INFO] [stdout]     |
[INFO] [stdout] 489 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 489 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:539:40
[INFO] [stdout]     |
[INFO] [stdout] 539 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:539:40
[INFO] [stdout]     |
[INFO] [stdout] 539 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 539 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:628:40
[INFO] [stdout]     |
[INFO] [stdout] 628 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:628:40
[INFO] [stdout]     |
[INFO] [stdout] 628 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 628 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:685:44
[INFO] [stdout]     |
[INFO] [stdout] 685 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:685:44
[INFO] [stdout]     |
[INFO] [stdout] 685 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 685 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:696:24
[INFO] [stdout]     |
[INFO] [stdout] 696 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:696:24
[INFO] [stdout]     |
[INFO] [stdout] 696 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 696 |                     if (&(*node).links)[lvl].is_none() {
[INFO] [stdout]     |                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:700:44
[INFO] [stdout]     |
[INFO] [stdout] 700 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:700:44
[INFO] [stdout]     |
[INFO] [stdout] 700 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 700 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:726:24
[INFO] [stdout]     |
[INFO] [stdout] 726 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:726:24
[INFO] [stdout]     |
[INFO] [stdout] 726 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 726 |                     if (&(*prev_node).links)[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:727:51
[INFO] [stdout]     |
[INFO] [stdout] 727 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                                                     |
[INFO] [stdout]     |                                                     this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:727:51
[INFO] [stdout]     |
[INFO] [stdout] 727 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 727 |                         (*prev_node).links[lvl] = (&(*return_node).links)[lvl];
[INFO] [stdout]     |                                                   ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:727:25
[INFO] [stdout]     |
[INFO] [stdout] 727 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:727:25
[INFO] [stdout]     |
[INFO] [stdout] 727 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 727 |                         (&mut (*prev_node).links)[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:728:56
[INFO] [stdout]     |
[INFO] [stdout] 728 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                          |
[INFO] [stdout]     |                                                          this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:728:56
[INFO] [stdout]     |
[INFO] [stdout] 728 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 728 |                         (*prev_node).links_len[lvl] += (&(*return_node).links_len)[lvl] - 1;
[INFO] [stdout]     |                                                        ++                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:728:25
[INFO] [stdout]     |
[INFO] [stdout] 728 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:728:25
[INFO] [stdout]     |
[INFO] [stdout] 728 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 728 |                         (&mut (*prev_node).links_len)[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:730:25
[INFO] [stdout]     |
[INFO] [stdout] 730 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:730:25
[INFO] [stdout]     |
[INFO] [stdout] 730 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 730 |                         (&mut (*prev_node).links_len)[lvl] -= 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:733:42
[INFO] [stdout]     |
[INFO] [stdout] 733 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^-----------^^^^^^^^^^
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:733:42
[INFO] [stdout]     |
[INFO] [stdout] 733 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 733 |                 if let Some(next_node) = (&(*return_node).links)[0] {
[INFO] [stdout]     |                                          ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:776:41
[INFO] [stdout]     |
[INFO] [stdout] 776 |                     while &(index_sum + (*node).links_len[lvl]) < index {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:776:41
[INFO] [stdout]     |
[INFO] [stdout] 776 |                     while &(index_sum + (*node).links_len[lvl]) < index {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 776 |                     while &(index_sum + (&(*node).links_len)[lvl]) < index {
[INFO] [stdout]     |                                         ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:777:38
[INFO] [stdout]     |
[INFO] [stdout] 777 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:777:38
[INFO] [stdout]     |
[INFO] [stdout] 777 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 777 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]     |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:778:32
[INFO] [stdout]     |
[INFO] [stdout] 778 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]     |                                ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:778:32
[INFO] [stdout]     |
[INFO] [stdout] 778 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 778 |                         node = (&(*node).links)[lvl].unwrap();
[INFO] [stdout]     |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:781:38
[INFO] [stdout]     |
[INFO] [stdout] 781 |                     if &(index_sum + (*node).links_len[lvl]) == index {
[INFO] [stdout]     |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:781:38
[INFO] [stdout]     |
[INFO] [stdout] 781 |                     if &(index_sum + (*node).links_len[lvl]) == index {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 781 |                     if &(index_sum + (&(*node).links_len)[lvl]) == index {
[INFO] [stdout]     |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:782:45
[INFO] [stdout]     |
[INFO] [stdout] 782 |                         if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                             ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:782:45
[INFO] [stdout]     |
[INFO] [stdout] 782 |                         if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 782 |                         if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                             ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:784:50
[INFO] [stdout]     |
[INFO] [stdout] 784 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:784:50
[INFO] [stdout]     |
[INFO] [stdout] 784 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 784 |                             (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                  ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:784:29
[INFO] [stdout]     |
[INFO] [stdout] 784 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:784:29
[INFO] [stdout]     |
[INFO] [stdout] 784 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 784 |                             (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                             +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:785:55
[INFO] [stdout]     |
[INFO] [stdout] 785 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                                                 ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:785:55
[INFO] [stdout]     |
[INFO] [stdout] 785 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 785 |                             (*node).links_len[lvl] += (&(*next).links_len)[lvl] - 1;
[INFO] [stdout]     |                                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:785:29
[INFO] [stdout]     |
[INFO] [stdout] 785 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:785:29
[INFO] [stdout]     |
[INFO] [stdout] 785 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 785 |                             (&mut (*node).links_len)[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                             +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:788:25
[INFO] [stdout]     |
[INFO] [stdout] 788 |                         (*node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skipmap.rs:788:25
[INFO] [stdout]     |
[INFO] [stdout] 788 |                         (*node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 788 |                         (&mut (*node).links_len)[lvl] -= 1;
[INFO] [stdout]     |                         +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skipmap.rs:792:37
[INFO] [stdout]     |
[INFO] [stdout] 792 |                 if let Some(next) = (*return_node).links[0] {
[INFO] [stdout]     |                                     ^^-----------^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]    --> src/skipmap.rs:792:37
[INFO] [stdout]     |
[INFO] [stdout] 792 |                 if let Some(next) = (*return_node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 792 |                 if let Some(next) = (&(*return_node).links)[0] {
[INFO] [stdout]     |                                     ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skipmap.rs:840:17
[INFO] [stdout]     |
[INFO] [stdout] 840 |     pub fn iter(&self) -> Iter<K, V> {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 840 |     pub fn iter(&self) -> Iter<'_, K, V> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skipmap.rs:865:21
[INFO] [stdout]     |
[INFO] [stdout] 865 |     pub fn iter_mut(&self) -> IterMut<K, V> {
[INFO] [stdout]     |                     ^^^^^     ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 865 |     pub fn iter_mut(&self) -> IterMut<'_, K, V> {
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skipmap.rs:888:17
[INFO] [stdout]     |
[INFO] [stdout] 888 |     pub fn keys(&self) -> Keys<K, V> {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 888 |     pub fn keys(&self) -> Keys<'_, K, V> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skipmap.rs:910:19
[INFO] [stdout]     |
[INFO] [stdout] 910 |     pub fn values(&self) -> Values<K, V> {
[INFO] [stdout]     |                   ^^^^^     ^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 910 |     pub fn values(&self) -> Values<'_, K, V> {
[INFO] [stdout]     |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skipmap.rs:937:21
[INFO] [stdout]     |
[INFO] [stdout] 937 |     pub fn range<Q>(&self, min: Bound<&Q>, max: Bound<&Q>) -> Iter<K, V>
[INFO] [stdout]     |                     ^^^^^ the lifetime is elided here         ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 937 |     pub fn range<Q>(&self, min: Bound<&Q>, max: Bound<&Q>) -> Iter<'_, K, V>
[INFO] [stdout]     |                                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1013:35
[INFO] [stdout]      |
[INFO] [stdout] 1013 |                     length_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                   ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                     |
[INFO] [stdout]      |                                     this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1013:35
[INFO] [stdout]      |
[INFO] [stdout] 1013 |                     length_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1013 |                     length_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]      |                                   ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1016:32
[INFO] [stdout]      |
[INFO] [stdout] 1016 |                     assert_eq!((*node).links_len[lvl],
[INFO] [stdout]      |                                ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                  |
[INFO] [stdout]      |                                  this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1016:32
[INFO] [stdout]      |
[INFO] [stdout] 1016 |                     assert_eq!((*node).links_len[lvl],
[INFO] [stdout]      |                                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1016 |                     assert_eq!((&(*node).links_len)[lvl],
[INFO] [stdout]      |                                ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1018:49
[INFO] [stdout]      |
[INFO] [stdout] 1018 | ...                   (*node).links[lvl],
[INFO] [stdout]      |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                         |
[INFO] [stdout]      |                         this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1018:49
[INFO] [stdout]      |
[INFO] [stdout] 1018 | ...                   (*node).links[lvl],
[INFO] [stdout]      |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1018 |                                                 (&(*node).links)[lvl],
[INFO] [stdout]      |                                                 ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1023:59
[INFO] [stdout]      |
[INFO] [stdout] 1023 |                         assert!((*node).next.is_some() == (*node).links[lvl].is_some());
[INFO] [stdout]      |                                                           ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                                             |
[INFO] [stdout]      |                                                             this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1023:59
[INFO] [stdout]      |
[INFO] [stdout] 1023 |                         assert!((*node).next.is_some() == (*node).links[lvl].is_some());
[INFO] [stdout]      |                                                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1023 |                         assert!((*node).next.is_some() == (&(*node).links)[lvl].is_some());
[INFO] [stdout]      |                                                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1026:40
[INFO] [stdout]      |
[INFO] [stdout] 1026 | ...                   assert_eq!((*prev).links[lvl], Some(node as *mut SkipNode<K, V>));
[INFO] [stdout]      |                                  ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                    |
[INFO] [stdout]      |                                    this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1026:40
[INFO] [stdout]      |
[INFO] [stdout] 1026 | ...                   assert_eq!((*prev).links[lvl], Some(node as *mut SkipNode<K, V>));
[INFO] [stdout]      |                                  ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1026 |                             assert_eq!((&(*prev).links)[lvl], Some(node as *mut SkipNode<K, V>));
[INFO] [stdout]      |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1031:41
[INFO] [stdout]      |
[INFO] [stdout] 1031 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                           |
[INFO] [stdout]      |                                           this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1031:41
[INFO] [stdout]      |
[INFO] [stdout] 1031 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1031 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]      |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1073:27
[INFO] [stdout]      |
[INFO] [stdout] 1073 |                     match (*node).links[lvl] {
[INFO] [stdout]      |                           ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1073:27
[INFO] [stdout]      |
[INFO] [stdout] 1073 |                     match (*node).links[lvl] {
[INFO] [stdout]      |                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1073 |                     match (&(*node).links)[lvl] {
[INFO] [stdout]      |                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1080:31
[INFO] [stdout]      |
[INFO] [stdout] 1080 |                     length += (*node).links_len[lvl - 1];
[INFO] [stdout]      |                               ^^----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                 |
[INFO] [stdout]      |                                 this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1080:31
[INFO] [stdout]      |
[INFO] [stdout] 1080 |                     length += (*node).links_len[lvl - 1];
[INFO] [stdout]      |                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1080 |                     length += (&(*node).links_len)[lvl - 1];
[INFO] [stdout]      |                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1081:27
[INFO] [stdout]      |
[INFO] [stdout] 1081 |                     match (*node).links[lvl - 1] {
[INFO] [stdout]      |                           ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1081:27
[INFO] [stdout]      |
[INFO] [stdout] 1081 |                     match (*node).links[lvl - 1] {
[INFO] [stdout]      |                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1081 |                     match (&(*node).links)[lvl - 1] {
[INFO] [stdout]      |                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1106:40
[INFO] [stdout]      |
[INFO] [stdout] 1106 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                          |
[INFO] [stdout]      |                                          this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1106:40
[INFO] [stdout]      |
[INFO] [stdout] 1106 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1106 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]      |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1133:40
[INFO] [stdout]      |
[INFO] [stdout] 1133 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                          |
[INFO] [stdout]      |                                          this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1133:40
[INFO] [stdout]      |
[INFO] [stdout] 1133 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]      |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1133 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]      |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1168:39
[INFO] [stdout]      |
[INFO] [stdout] 1168 |                     while index_sum + (*node).links_len[lvl] <= index {
[INFO] [stdout]      |                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                         |
[INFO] [stdout]      |                                         this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1168:39
[INFO] [stdout]      |
[INFO] [stdout] 1168 |                     while index_sum + (*node).links_len[lvl] <= index {
[INFO] [stdout]      |                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1168 |                     while index_sum + (&(*node).links_len)[lvl] <= index {
[INFO] [stdout]      |                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1169:38
[INFO] [stdout]      |
[INFO] [stdout] 1169 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                        |
[INFO] [stdout]      |                                        this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1169:38
[INFO] [stdout]      |
[INFO] [stdout] 1169 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1169 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]      |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1170:32
[INFO] [stdout]      |
[INFO] [stdout] 1170 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]      |                                ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                  |
[INFO] [stdout]      |                                  this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1170:32
[INFO] [stdout]      |
[INFO] [stdout] 1170 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]      |                                ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1170 |                         node = (&(*node).links)[lvl].unwrap();
[INFO] [stdout]      |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1199:61
[INFO] [stdout]      |
[INFO] [stdout] 1199 |                 let max_str_len = format!("{} -{}-", value, (*node).links_len[(*node).level]).len();
[INFO] [stdout]      |                                                             ^^----^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                               |
[INFO] [stdout]      |                                                               this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1199:61
[INFO] [stdout]      |
[INFO] [stdout] 1199 |                 let max_str_len = format!("{} -{}-", value, (*node).links_len[(*node).level]).len();
[INFO] [stdout]      |                                                             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1199 |                 let max_str_len = format!("{} -{}-", value, (&(*node).links_len)[(*node).level]).len();
[INFO] [stdout]      |                                                             ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1207:63
[INFO] [stdout]      |
[INFO] [stdout] 1207 |                         value_len = format!("{} -{}-", value, (*node).links_len[lvl]);
[INFO] [stdout]      |                                                               ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                                 |
[INFO] [stdout]      |                                                                 this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1207:63
[INFO] [stdout]      |
[INFO] [stdout] 1207 |                         value_len = format!("{} -{}-", value, (*node).links_len[lvl]);
[INFO] [stdout]      |                                                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1207 |                         value_len = format!("{} -{}-", value, (&(*node).links_len)[lvl]);
[INFO] [stdout]      |                                                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1227:37
[INFO] [stdout]      |
[INFO] [stdout] 1227 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                     ^^----^^^^^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1227:37
[INFO] [stdout]      |
[INFO] [stdout] 1227 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1227 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]      |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> src/skipmap.rs:1255:17
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                 mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                 let _ = mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1451:33
[INFO] [stdout]      |
[INFO] [stdout] 1451 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1451:33
[INFO] [stdout]      |
[INFO] [stdout] 1451 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1451 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1508:33
[INFO] [stdout]      |
[INFO] [stdout] 1508 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1508:33
[INFO] [stdout]      |
[INFO] [stdout] 1508 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1508 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1560:33
[INFO] [stdout]      |
[INFO] [stdout] 1560 |             if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                 ^^---------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1560:33
[INFO] [stdout]      |
[INFO] [stdout] 1560 |             if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1560 |             if let Some(next) = (&(*self.head).links)[0] {
[INFO] [stdout]      |                                 ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1563:51
[INFO] [stdout]      |
[INFO] [stdout] 1563 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                                                   ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1563:51
[INFO] [stdout]      |
[INFO] [stdout] 1563 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                                                   ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1563 |                         (*self.head).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]      |                                                   ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1563:25
[INFO] [stdout]      |
[INFO] [stdout] 1563 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1563:25
[INFO] [stdout]      |
[INFO] [stdout] 1563 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1563 |                         (&mut (*self.head).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1564:55
[INFO] [stdout]      |
[INFO] [stdout] 1564 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1564:55
[INFO] [stdout]      |
[INFO] [stdout] 1564 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1564 |                         (*self.head).links_len[lvl] = (&(*next).links_len)[lvl] - 1;
[INFO] [stdout]      |                                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1564:25
[INFO] [stdout]      |
[INFO] [stdout] 1564 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1564:25
[INFO] [stdout]      |
[INFO] [stdout] 1564 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1564 |                         (&mut (*self.head).links_len)[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1566:25
[INFO] [stdout]      |
[INFO] [stdout] 1566 |                         (*self.head).links_len[lvl] -= 1;
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]     --> src/skipmap.rs:1566:25
[INFO] [stdout]      |
[INFO] [stdout] 1566 |                         (*self.head).links_len[lvl] -= 1;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1566 |                         (&mut (*self.head).links_len)[lvl] -= 1;
[INFO] [stdout]      |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1569:37
[INFO] [stdout]      |
[INFO] [stdout] 1569 |                 if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                     ^^---------^^^^^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1569:37
[INFO] [stdout]      |
[INFO] [stdout] 1569 |                 if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1569 |                 if let Some(next) = (&(*self.head).links)[0] {
[INFO] [stdout]      |                                     ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1602:17
[INFO] [stdout]      |
[INFO] [stdout] 1602 |                 (*self.end).links[0] = None;
[INFO] [stdout]      |                 ^^--------^^^^^^^^^^
[INFO] [stdout]      |                   |
[INFO] [stdout]      |                   this raw pointer has type `*mut skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1602:17
[INFO] [stdout]      |
[INFO] [stdout] 1602 |                 (*self.end).links[0] = None;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1602 |                 (&mut (*self.end).links)[0] = None;
[INFO] [stdout]      |                 +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1627:33
[INFO] [stdout]      |
[INFO] [stdout] 1627 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1627:33
[INFO] [stdout]      |
[INFO] [stdout] 1627 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1627 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skipmap.rs:1681:33
[INFO] [stdout]      |
[INFO] [stdout] 1681 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*const skipmap::SkipNode<K, V>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipmap::SkipNode<K, V>>>`
[INFO] [stdout]     --> src/skipmap.rs:1681:33
[INFO] [stdout]      |
[INFO] [stdout] 1681 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1681 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]   --> src/skiplist.rs:94:17
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 let _ = mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]   --> src/skiplist.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |         mem::replace(&mut self.head, new_head);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let _ = mem::replace(&mut self.head, new_head);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:176:40
[INFO] [stdout]     |
[INFO] [stdout] 176 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:176:40
[INFO] [stdout]     |
[INFO] [stdout] 176 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 176 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:177:36
[INFO] [stdout]     |
[INFO] [stdout] 177 |                     if index_sum + (*node).links_len[lvl] < index {
[INFO] [stdout]     |                                    ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:177:36
[INFO] [stdout]     |
[INFO] [stdout] 177 |                     if index_sum + (*node).links_len[lvl] < index {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 177 |                     if index_sum + (&(*node).links_len)[lvl] < index {
[INFO] [stdout]     |                                    ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:178:38
[INFO] [stdout]     |
[INFO] [stdout] 178 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:178:38
[INFO] [stdout]     |
[INFO] [stdout] 178 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 178 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]     |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:191:43
[INFO] [stdout]     |
[INFO] [stdout] 191 |                     new_node.links[lvl] = (*node).links[lvl];
[INFO] [stdout]     |                                           ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:191:43
[INFO] [stdout]     |
[INFO] [stdout] 191 |                     new_node.links[lvl] = (*node).links[lvl];
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 191 |                     new_node.links[lvl] = (&(*node).links)[lvl];
[INFO] [stdout]     |                                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:192:21
[INFO] [stdout]     |
[INFO] [stdout] 192 |                     (*node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:192:21
[INFO] [stdout]     |
[INFO] [stdout] 192 |                     (*node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 192 |                     (&mut (*node).links)[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:194:21
[INFO] [stdout]     |
[INFO] [stdout] 194 |                     (*node).links_len[lvl] += 1;
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:194:21
[INFO] [stdout]     |
[INFO] [stdout] 194 |                     (*node).links_len[lvl] += 1;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 194 |                     (&mut (*node).links_len)[lvl] += 1;
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:202:21
[INFO] [stdout]     |
[INFO] [stdout] 202 |                     (*node).links_len[lvl] = if (*node).is_head() {
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:202:21
[INFO] [stdout]     |
[INFO] [stdout] 202 |                     (*node).links_len[lvl] = if (*node).is_head() {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 202 |                     (&mut (*node).links_len)[lvl] = if (*node).is_head() {
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:210:47
[INFO] [stdout]     |
[INFO] [stdout] 210 |                     new_node.links_len[lvl] = (*node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                               ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:210:47
[INFO] [stdout]     |
[INFO] [stdout] 210 |                     new_node.links_len[lvl] = (*node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 210 |                     new_node.links_len[lvl] = (&(*node).links_len)[lvl] - length + 1;
[INFO] [stdout]     |                                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:211:21
[INFO] [stdout]     |
[INFO] [stdout] 211 |                     (*node).links_len[lvl] = length;
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:211:21
[INFO] [stdout]     |
[INFO] [stdout] 211 |                     (*node).links_len[lvl] = length;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 211 |                     (&mut (*node).links_len)[lvl] = length;
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:479:39
[INFO] [stdout]     |
[INFO] [stdout] 479 |                     while index_sum + (*node).links_len[lvl] < index {
[INFO] [stdout]     |                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:479:39
[INFO] [stdout]     |
[INFO] [stdout] 479 |                     while index_sum + (*node).links_len[lvl] < index {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 479 |                     while index_sum + (&(*node).links_len)[lvl] < index {
[INFO] [stdout]     |                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:480:38
[INFO] [stdout]     |
[INFO] [stdout] 480 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:480:38
[INFO] [stdout]     |
[INFO] [stdout] 480 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 480 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]     |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:481:32
[INFO] [stdout]     |
[INFO] [stdout] 481 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]     |                                ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:481:32
[INFO] [stdout]     |
[INFO] [stdout] 481 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 481 |                         node = (&(*node).links)[lvl].unwrap();
[INFO] [stdout]     |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:484:36
[INFO] [stdout]     |
[INFO] [stdout] 484 |                     if index_sum + (*node).links_len[lvl] == index {
[INFO] [stdout]     |                                    ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:484:36
[INFO] [stdout]     |
[INFO] [stdout] 484 |                     if index_sum + (*node).links_len[lvl] == index {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 484 |                     if index_sum + (&(*node).links_len)[lvl] == index {
[INFO] [stdout]     |                                    ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:485:45
[INFO] [stdout]     |
[INFO] [stdout] 485 |                         if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                             ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:485:45
[INFO] [stdout]     |
[INFO] [stdout] 485 |                         if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 485 |                         if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                             ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:487:50
[INFO] [stdout]     |
[INFO] [stdout] 487 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:487:50
[INFO] [stdout]     |
[INFO] [stdout] 487 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 487 |                             (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                  ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:487:29
[INFO] [stdout]     |
[INFO] [stdout] 487 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:487:29
[INFO] [stdout]     |
[INFO] [stdout] 487 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 487 |                             (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                             +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:488:55
[INFO] [stdout]     |
[INFO] [stdout] 488 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                                                 ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:488:55
[INFO] [stdout]     |
[INFO] [stdout] 488 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 488 |                             (*node).links_len[lvl] += (&(*next).links_len)[lvl] - 1;
[INFO] [stdout]     |                                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:488:29
[INFO] [stdout]     |
[INFO] [stdout] 488 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:488:29
[INFO] [stdout]     |
[INFO] [stdout] 488 | ...                   (*node).links_len[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 488 |                             (&mut (*node).links_len)[lvl] += (*next).links_len[lvl] - 1;
[INFO] [stdout]     |                             +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:491:25
[INFO] [stdout]     |
[INFO] [stdout] 491 |                         (*node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:491:25
[INFO] [stdout]     |
[INFO] [stdout] 491 |                         (*node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 491 |                         (&mut (*node).links_len)[lvl] -= 1;
[INFO] [stdout]     |                         +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:495:37
[INFO] [stdout]     |
[INFO] [stdout] 495 |                 if let Some(next) = (*return_node).links[0] {
[INFO] [stdout]     |                                     ^^-----------^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:495:37
[INFO] [stdout]     |
[INFO] [stdout] 495 |                 if let Some(next) = (*return_node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 495 |                 if let Some(next) = (&(*return_node).links)[0] {
[INFO] [stdout]     |                                     ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:536:41
[INFO] [stdout]     |
[INFO] [stdout] 536 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:536:41
[INFO] [stdout]     |
[INFO] [stdout] 536 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 536 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:539:54
[INFO] [stdout]     |
[INFO] [stdout] 539 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:539:54
[INFO] [stdout]     |
[INFO] [stdout] 539 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 539 |                                 (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                      ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:539:33
[INFO] [stdout]     |
[INFO] [stdout] 539 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:539:33
[INFO] [stdout]     |
[INFO] [stdout] 539 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 539 |                                 (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                 +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:549:69
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                                                       |
[INFO] [stdout]     |                                                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:549:69
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     (*node).links_len[lvl] = self.link_length(node, (&(*node).links)[lvl], lvl)
[INFO] [stdout]     |                                                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:549:21
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:549:21
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     (&mut (*node).links_len)[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:552:41
[INFO] [stdout]     |
[INFO] [stdout] 552 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:552:41
[INFO] [stdout]     |
[INFO] [stdout] 552 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 552 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:563:37
[INFO] [stdout]     |
[INFO] [stdout] 563 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^----^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:563:37
[INFO] [stdout]     |
[INFO] [stdout] 563 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 563 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]     |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/skiplist.rs:567:21
[INFO] [stdout]     |
[INFO] [stdout] 567 |                     mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 567 |                     let _ = mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skiplist.rs:608:17
[INFO] [stdout]     |
[INFO] [stdout] 608 |     pub fn iter(&self) -> Iter<T> {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 608 |     pub fn iter(&self) -> Iter<'_, T> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skiplist.rs:630:21
[INFO] [stdout]     |
[INFO] [stdout] 630 |     pub fn iter_mut(&self) -> IterMut<T> {
[INFO] [stdout]     |                     ^^^^^     ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 630 |     pub fn iter_mut(&self) -> IterMut<'_, T> {
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skiplist.rs:657:18
[INFO] [stdout]     |
[INFO] [stdout] 657 |     pub fn range(&self, min: Bound<usize>, max: Bound<usize>) -> Iter<T> {
[INFO] [stdout]     |                  ^^^^^ the lifetime is elided here               ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 657 |     pub fn range(&self, min: Bound<usize>, max: Bound<usize>) -> Iter<'_, T> {
[INFO] [stdout]     |                                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/skiplist.rs:720:22
[INFO] [stdout]     |
[INFO] [stdout] 720 |     pub fn range_mut(&mut self, min: Bound<usize>, max: Bound<usize>) -> IterMut<T> {
[INFO] [stdout]     |                      ^^^^^^^^^ the lifetime is elided here               ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 720 |     pub fn range_mut(&mut self, min: Bound<usize>, max: Bound<usize>) -> IterMut<'_, T> {
[INFO] [stdout]     |                                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:820:41
[INFO] [stdout]     |
[INFO] [stdout] 820 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:820:41
[INFO] [stdout]     |
[INFO] [stdout] 820 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 820 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:824:58
[INFO] [stdout]     |
[INFO] [stdout] 824 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:824:58
[INFO] [stdout]     |
[INFO] [stdout] 824 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 824 |                                     (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                          ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:824:37
[INFO] [stdout]     |
[INFO] [stdout] 824 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:824:37
[INFO] [stdout]     |
[INFO] [stdout] 824 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 824 |                                     (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                     +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:838:54
[INFO] [stdout]     |
[INFO] [stdout] 838 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:838:54
[INFO] [stdout]     |
[INFO] [stdout] 838 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 838 |                                 (*node).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]     |                                                      ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:838:33
[INFO] [stdout]     |
[INFO] [stdout] 838 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:838:33
[INFO] [stdout]     |
[INFO] [stdout] 838 | ...                   (*node).links[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 838 |                                 (&mut (*node).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]     |                                 +++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:845:69
[INFO] [stdout]     |
[INFO] [stdout] 845 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                                                       |
[INFO] [stdout]     |                                                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:845:69
[INFO] [stdout]     |
[INFO] [stdout] 845 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 845 |                     (*node).links_len[lvl] = self.link_length(node, (&(*node).links)[lvl], lvl)
[INFO] [stdout]     |                                                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:845:21
[INFO] [stdout]     |
[INFO] [stdout] 845 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:845:21
[INFO] [stdout]     |
[INFO] [stdout] 845 |                     (*node).links_len[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 845 |                     (&mut (*node).links_len)[lvl] = self.link_length(node, (*node).links[lvl], lvl)
[INFO] [stdout]     |                     +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:848:41
[INFO] [stdout]     |
[INFO] [stdout] 848 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:848:41
[INFO] [stdout]     |
[INFO] [stdout] 848 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 848 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:859:37
[INFO] [stdout]     |
[INFO] [stdout] 859 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^----^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:859:37
[INFO] [stdout]     |
[INFO] [stdout] 859 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 859 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]     |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/skiplist.rs:863:21
[INFO] [stdout]     |
[INFO] [stdout] 863 |                     mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 863 |                     let _ = mem::replace(&mut (*prev).next, mem::replace(&mut (*node).next, None));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:887:35
[INFO] [stdout]     |
[INFO] [stdout] 887 |                     length_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                   ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:887:35
[INFO] [stdout]     |
[INFO] [stdout] 887 |                     length_sum += (*node).links_len[lvl];
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 887 |                     length_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]     |                                   ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:890:32
[INFO] [stdout]     |
[INFO] [stdout] 890 |                     assert_eq!((*node).links_len[lvl],
[INFO] [stdout]     |                                ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:890:32
[INFO] [stdout]     |
[INFO] [stdout] 890 |                     assert_eq!((*node).links_len[lvl],
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 890 |                     assert_eq!((&(*node).links_len)[lvl],
[INFO] [stdout]     |                                ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:891:75
[INFO] [stdout]     |
[INFO] [stdout] 891 | ...                   self.link_length(node as *mut SkipNode<T>, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                  ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                                                    |
[INFO] [stdout]     |                                                                    this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:891:75
[INFO] [stdout]     |
[INFO] [stdout] 891 | ...                   self.link_length(node as *mut SkipNode<T>, (*node).links[lvl], lvl)
[INFO] [stdout]     |                                                                  ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 891 |                                self.link_length(node as *mut SkipNode<T>, (&(*node).links)[lvl], lvl)
[INFO] [stdout]     |                                                                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:895:59
[INFO] [stdout]     |
[INFO] [stdout] 895 |                         assert!((*node).next.is_some() == (*node).links[lvl].is_some());
[INFO] [stdout]     |                                                           ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                                             |
[INFO] [stdout]     |                                                             this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:895:59
[INFO] [stdout]     |
[INFO] [stdout] 895 |                         assert!((*node).next.is_some() == (*node).links[lvl].is_some());
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 895 |                         assert!((*node).next.is_some() == (&(*node).links)[lvl].is_some());
[INFO] [stdout]     |                                                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:898:40
[INFO] [stdout]     |
[INFO] [stdout] 898 | ...                   assert_eq!((*prev).links[lvl], Some(node as *mut SkipNode<T>));
[INFO] [stdout]     |                                  ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:898:40
[INFO] [stdout]     |
[INFO] [stdout] 898 | ...                   assert_eq!((*prev).links[lvl], Some(node as *mut SkipNode<T>));
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 898 |                             assert_eq!((&(*prev).links)[lvl], Some(node as *mut SkipNode<T>));
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:903:41
[INFO] [stdout]     |
[INFO] [stdout] 903 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:903:41
[INFO] [stdout]     |
[INFO] [stdout] 903 |                     if let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 903 |                     if let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                         ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:945:27
[INFO] [stdout]     |
[INFO] [stdout] 945 |                     match (*node).links[lvl] {
[INFO] [stdout]     |                           ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:945:27
[INFO] [stdout]     |
[INFO] [stdout] 945 |                     match (*node).links[lvl] {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 945 |                     match (&(*node).links)[lvl] {
[INFO] [stdout]     |                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:952:31
[INFO] [stdout]     |
[INFO] [stdout] 952 |                     length += (*node).links_len[lvl - 1];
[INFO] [stdout]     |                               ^^----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/skiplist.rs:952:31
[INFO] [stdout]     |
[INFO] [stdout] 952 |                     length += (*node).links_len[lvl - 1];
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 952 |                     length += (&(*node).links_len)[lvl - 1];
[INFO] [stdout]     |                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:953:27
[INFO] [stdout]     |
[INFO] [stdout] 953 |                     match (*node).links[lvl - 1] {
[INFO] [stdout]     |                           ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:953:27
[INFO] [stdout]     |
[INFO] [stdout] 953 |                     match (*node).links[lvl - 1] {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 953 |                     match (&(*node).links)[lvl - 1] {
[INFO] [stdout]     |                           ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/skiplist.rs:978:40
[INFO] [stdout]     |
[INFO] [stdout] 978 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/skiplist.rs:978:40
[INFO] [stdout]     |
[INFO] [stdout] 978 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 978 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1003:39
[INFO] [stdout]      |
[INFO] [stdout] 1003 |                     while index_sum + (*node).links_len[lvl] <= index {
[INFO] [stdout]      |                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                         |
[INFO] [stdout]      |                                         this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1003:39
[INFO] [stdout]      |
[INFO] [stdout] 1003 |                     while index_sum + (*node).links_len[lvl] <= index {
[INFO] [stdout]      |                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1003 |                     while index_sum + (&(*node).links_len)[lvl] <= index {
[INFO] [stdout]      |                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1004:38
[INFO] [stdout]      |
[INFO] [stdout] 1004 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                      ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                        |
[INFO] [stdout]      |                                        this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1004:38
[INFO] [stdout]      |
[INFO] [stdout] 1004 |                         index_sum += (*node).links_len[lvl];
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1004 |                         index_sum += (&(*node).links_len)[lvl];
[INFO] [stdout]      |                                      ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling stable-skiplist v0.1.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1005:32
[INFO] [stdout]      |
[INFO] [stdout] 1005 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]      |                                ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                  |
[INFO] [stdout]      |                                  this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1005:32
[INFO] [stdout]      |
[INFO] [stdout] 1005 |                         node = (*node).links[lvl].unwrap();
[INFO] [stdout]      |                                ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1005 |                         node = (&(*node).links)[lvl].unwrap();
[INFO] [stdout]      |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1032:61
[INFO] [stdout]      |
[INFO] [stdout] 1032 |                 let max_str_len = format!("{} -{}-", value, (*node).links_len[(*node).level]).len();
[INFO] [stdout]      |                                                             ^^----^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                               |
[INFO] [stdout]      |                                                               this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1032:61
[INFO] [stdout]      |
[INFO] [stdout] 1032 |                 let max_str_len = format!("{} -{}-", value, (*node).links_len[(*node).level]).len();
[INFO] [stdout]      |                                                             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1032 |                 let max_str_len = format!("{} -{}-", value, (&(*node).links_len)[(*node).level]).len();
[INFO] [stdout]      |                                                             ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1040:63
[INFO] [stdout]      |
[INFO] [stdout] 1040 |                         value_len = format!("{} -{}-", value, (*node).links_len[lvl]);
[INFO] [stdout]      |                                                               ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                                 |
[INFO] [stdout]      |                                                                 this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1040:63
[INFO] [stdout]      |
[INFO] [stdout] 1040 |                         value_len = format!("{} -{}-", value, (*node).links_len[lvl]);
[INFO] [stdout]      |                                                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1040 |                         value_len = format!("{} -{}-", value, (&(*node).links_len)[lvl]);
[INFO] [stdout]      |                                                               ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1060:37
[INFO] [stdout]      |
[INFO] [stdout] 1060 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                     ^^----^^^^^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1060:37
[INFO] [stdout]      |
[INFO] [stdout] 1060 |                 if let Some(next) = (*node).links[0] {
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1060 |                 if let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]      |                                     ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> src/skiplist.rs:1088:17
[INFO] [stdout]      |
[INFO] [stdout] 1088 |                 mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1088 |                 let _ = mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1248:33
[INFO] [stdout]      |
[INFO] [stdout] 1248 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1248:33
[INFO] [stdout]      |
[INFO] [stdout] 1248 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1248 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1300:33
[INFO] [stdout]      |
[INFO] [stdout] 1300 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^----------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1300:33
[INFO] [stdout]      |
[INFO] [stdout] 1300 |             if let Some(next) = (*self.start).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1300 |             if let Some(next) = (&(*self.start).links)[0] {
[INFO] [stdout]      |                                 ++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1346:33
[INFO] [stdout]      |
[INFO] [stdout] 1346 |             if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                 ^^---------^^^^^^^^^^
[INFO] [stdout]      |                                   |
[INFO] [stdout]      |                                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1346:33
[INFO] [stdout]      |
[INFO] [stdout] 1346 |             if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1346 |             if let Some(next) = (&(*self.head).links)[0] {
[INFO] [stdout]      |                                 ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1349:51
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                                                   ^^----^^^^^^^^^^^^
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1349:51
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                                                   ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                         (*self.head).links[lvl] = (&(*next).links)[lvl];
[INFO] [stdout]      |                                                   ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1349:25
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1349:25
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                         (*self.head).links[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                         (&mut (*self.head).links)[lvl] = (*next).links[lvl];
[INFO] [stdout]      |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1350:55
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                                                       ^^----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1350:55
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         (*self.head).links_len[lvl] = (&(*next).links_len)[lvl] - 1;
[INFO] [stdout]      |                                                       ++                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1350:25
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1350:25
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         (*self.head).links_len[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1350 |                         (&mut (*self.head).links_len)[lvl] = (*next).links_len[lvl] - 1;
[INFO] [stdout]      |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1352:25
[INFO] [stdout]      |
[INFO] [stdout] 1352 |                         (*self.head).links_len[lvl] -= 1;
[INFO] [stdout]      |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]     --> src/skiplist.rs:1352:25
[INFO] [stdout]      |
[INFO] [stdout] 1352 |                         (*self.head).links_len[lvl] -= 1;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1352 |                         (&mut (*self.head).links_len)[lvl] -= 1;
[INFO] [stdout]      |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1355:37
[INFO] [stdout]      |
[INFO] [stdout] 1355 |                 if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                     ^^---------^^^^^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1355:37
[INFO] [stdout]      |
[INFO] [stdout] 1355 |                 if let Some(next) = (*self.head).links[0] {
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1355 |                 if let Some(next) = (&(*self.head).links)[0] {
[INFO] [stdout]      |                                     ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]     --> src/skiplist.rs:1387:17
[INFO] [stdout]      |
[INFO] [stdout] 1387 |                 (*self.end).links[0] = None;
[INFO] [stdout]      |                 ^^--------^^^^^^^^^^
[INFO] [stdout]      |                   |
[INFO] [stdout]      |                   this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]      |
[INFO] [stdout]      = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]     --> src/skiplist.rs:1387:17
[INFO] [stdout]      |
[INFO] [stdout] 1387 |                 (*self.end).links[0] = None;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]      |
[INFO] [stdout] 1387 |                 (&mut (*self.end).links)[0] = None;
[INFO] [stdout]      |                 +++++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `bench`
[INFO] [stdout]     --> src/ordered_skiplist.rs:1878:17
[INFO] [stdout]      |
[INFO] [stdout] 1878 | #[cfg(all(test, feature="bench"))]
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected values for `feature` are: `unstable`
[INFO] [stdout]      = help: consider adding `bench` as a feature in `Cargo.toml`
[INFO] [stdout]      = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]      = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1415:9
[INFO] [stdout]      |
[INFO] [stdout] 1415 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1421:13
[INFO] [stdout]      |
[INFO] [stdout] 1421 |             try!(write!(f, "{:?}", entry));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1419:17
[INFO] [stdout]      |
[INFO] [stdout] 1419 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1430:9
[INFO] [stdout]      |
[INFO] [stdout] 1430 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1436:13
[INFO] [stdout]      |
[INFO] [stdout] 1436 |             try!(write!(f, "{}", entry));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/ordered_skiplist.rs:1434:17
[INFO] [stdout]      |
[INFO] [stdout] 1434 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `bench`
[INFO] [stdout]     --> src/skipmap.rs:1944:17
[INFO] [stdout]      |
[INFO] [stdout] 1944 | #[cfg(all(test, feature="bench"))]
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected values for `feature` are: `unstable`
[INFO] [stdout]      = help: consider adding `bench` as a feature in `Cargo.toml`
[INFO] [stdout]      = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1356:9
[INFO] [stdout]      |
[INFO] [stdout] 1356 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1362:13
[INFO] [stdout]      |
[INFO] [stdout] 1362 |             try!(write!(f, "({:?}, {:?})", k, v));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1360:17
[INFO] [stdout]      |
[INFO] [stdout] 1360 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1373:9
[INFO] [stdout]      |
[INFO] [stdout] 1373 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1379:13
[INFO] [stdout]      |
[INFO] [stdout] 1379 |             try!(write!(f, "({}, {})", k, v));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skipmap.rs:1377:17
[INFO] [stdout]      |
[INFO] [stdout] 1377 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `bench`
[INFO] [stdout]     --> src/skiplist.rs:1671:17
[INFO] [stdout]      |
[INFO] [stdout] 1671 | #[cfg(all(test, feature="bench"))]
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected values for `feature` are: `unstable`
[INFO] [stdout]      = help: consider adding `bench` as a feature in `Cargo.toml`
[INFO] [stdout]      = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1156:9
[INFO] [stdout]      |
[INFO] [stdout] 1156 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1162:13
[INFO] [stdout]      |
[INFO] [stdout] 1162 |             try!(write!(f, "{:?}", entry));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1160:17
[INFO] [stdout]      |
[INFO] [stdout] 1160 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1171:9
[INFO] [stdout]      |
[INFO] [stdout] 1171 |         try!(write!(f, "["));
[INFO] [stdout]      |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1177:13
[INFO] [stdout]      |
[INFO] [stdout] 1177 |             try!(write!(f, "{}", entry));
[INFO] [stdout]      |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]     --> src/skiplist.rs:1175:17
[INFO] [stdout]      |
[INFO] [stdout] 1175 |                 try!(write!(f, ", "));
[INFO] [stdout]      |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ordered_skiplist.rs:44:18
[INFO] [stdout]    |
[INFO] [stdout] 44 |     compare: Box<Fn(&T, &T) -> Ordering>,
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 |     compare: Box<dyn Fn(&T, &T) -> Ordering>,
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ordered_skiplist.rs:81:24
[INFO] [stdout]    |
[INFO] [stdout] 81 |             })) as Box<Fn(&T, &T) -> Ordering>,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 81 |             })) as Box<dyn Fn(&T, &T) -> Ordering>,
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ordered_skiplist.rs:115:24
[INFO] [stdout]     |
[INFO] [stdout] 115 |             })) as Box<Fn(&T, &T) -> Ordering>,
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 115 |             })) as Box<dyn Fn(&T, &T) -> Ordering>,
[INFO] [stdout]     |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:206:32
[INFO] [stdout]     |
[INFO] [stdout] 206 |         while let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                ^^----^^^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:206:32
[INFO] [stdout]     |
[INFO] [stdout] 206 |         while let Some(next) = (*node).links[0] {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(dangerous_implicit_autorefs)]` on by default
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 206 |         while let Some(next) = (&(*node).links)[0] {
[INFO] [stdout]     |                                ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/ordered_skiplist.rs:236:17
[INFO] [stdout]     |
[INFO] [stdout] 236 |                 mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 236 |                 let _ = mem::replace(&mut (*node).next, mem::replace(&mut next.next, None));
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/ordered_skiplist.rs:241:9
[INFO] [stdout]     |
[INFO] [stdout] 241 |         mem::replace(&mut self.head, new_head);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 241 |         let _ = mem::replace(&mut self.head, new_head);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:310:40
[INFO] [stdout]     |
[INFO] [stdout] 310 |                 while let Some(next) = (*insert_node).links[lvl] {
[INFO] [stdout]     |                                        ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:310:40
[INFO] [stdout]     |
[INFO] [stdout] 310 |                 while let Some(next) = (*insert_node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 310 |                 while let Some(next) = (&(*insert_node).links)[lvl] {
[INFO] [stdout]     |                                        ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:325:43
[INFO] [stdout]     |
[INFO] [stdout] 325 |                     new_node.links[lvl] = (*insert_node).links[lvl];
[INFO] [stdout]     |                                           ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:325:43
[INFO] [stdout]     |
[INFO] [stdout] 325 |                     new_node.links[lvl] = (*insert_node).links[lvl];
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 325 |                     new_node.links[lvl] = (&(*insert_node).links)[lvl];
[INFO] [stdout]     |                                           ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:326:21
[INFO] [stdout]     |
[INFO] [stdout] 326 |                     (*insert_node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:326:21
[INFO] [stdout]     |
[INFO] [stdout] 326 |                     (*insert_node).links[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 326 |                     (&mut (*insert_node).links)[lvl] = Some(new_node_ptr);
[INFO] [stdout]     |                     +++++                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:328:21
[INFO] [stdout]     |
[INFO] [stdout] 328 |                     (*insert_node).links_len[lvl] += 1;
[INFO] [stdout]     |                     ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:328:21
[INFO] [stdout]     |
[INFO] [stdout] 328 |                     (*insert_node).links_len[lvl] += 1;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 328 |                     (&mut (*insert_node).links_len)[lvl] += 1;
[INFO] [stdout]     |                     +++++                         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:336:21
[INFO] [stdout]     |
[INFO] [stdout] 336 |                     (*insert_node).links_len[lvl] = if (*insert_node).is_head() {
[INFO] [stdout]     |                     ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:336:21
[INFO] [stdout]     |
[INFO] [stdout] 336 |                     (*insert_node).links_len[lvl] = if (*insert_node).is_head() {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 336 |                     (&mut (*insert_node).links_len)[lvl] = if (*insert_node).is_head() {
[INFO] [stdout]     |                     +++++                         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:344:47
[INFO] [stdout]     |
[INFO] [stdout] 344 |                     new_node.links_len[lvl] = (*insert_node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                               ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:344:47
[INFO] [stdout]     |
[INFO] [stdout] 344 |                     new_node.links_len[lvl] = (*insert_node).links_len[lvl] - length + 1;
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 344 |                     new_node.links_len[lvl] = (&(*insert_node).links_len)[lvl] - length + 1;
[INFO] [stdout]     |                                               ++                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:345:21
[INFO] [stdout]     |
[INFO] [stdout] 345 |                     (*insert_node).links_len[lvl] = length;
[INFO] [stdout]     |                     ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:345:21
[INFO] [stdout]     |
[INFO] [stdout] 345 |                     (*insert_node).links_len[lvl] = length;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 345 |                     (&mut (*insert_node).links_len)[lvl] = length;
[INFO] [stdout]     |                     +++++                         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:503:40
[INFO] [stdout]     |
[INFO] [stdout] 503 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*const skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:503:40
[INFO] [stdout]     |
[INFO] [stdout] 503 |                 while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 503 |                 while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:562:44
[INFO] [stdout]     |
[INFO] [stdout] 562 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:562:44
[INFO] [stdout]     |
[INFO] [stdout] 562 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 562 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:571:44
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:571:44
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     while let Some(next) = (*node).links[lvl] {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     while let Some(next) = (&(*node).links)[lvl] {
[INFO] [stdout]     |                                            ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:592:24
[INFO] [stdout]     |
[INFO] [stdout] 592 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^----^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:592:24
[INFO] [stdout]     |
[INFO] [stdout] 592 |                     if (*node).links[lvl].is_none() {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 592 |                     if (&(*node).links)[lvl].is_none() {
[INFO] [stdout]     |                        ++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:603:24
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:603:24
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     if (*prev_node).links[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     if (&(*prev_node).links)[lvl] == Some(return_node) {
[INFO] [stdout]     |                        ++                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:604:51
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^-----------^^^^^^^^^^^^
[INFO] [stdout]     |                                                     |
[INFO] [stdout]     |                                                     this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:604:51
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (&(*return_node).links)[lvl];
[INFO] [stdout]     |                                                   ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:604:25
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:604:25
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (*prev_node).links[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 604 |                         (&mut (*prev_node).links)[lvl] = (*return_node).links[lvl];
[INFO] [stdout]     |                         +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:605:56
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^-----------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                          |
[INFO] [stdout]     |                                                          this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:605:56
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (&(*return_node).links_len)[lvl] - 1;
[INFO] [stdout]     |                                                        ++                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:605:25
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:605:25
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (*prev_node).links_len[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 605 |                         (&mut (*prev_node).links_len)[lvl] += (*return_node).links_len[lvl] - 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:607:25
[INFO] [stdout]     |
[INFO] [stdout] 607 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&mut Vec<usize>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:607:25
[INFO] [stdout]     |
[INFO] [stdout] 607 |                         (*prev_node).links_len[lvl] -= 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 607 |                         (&mut (*prev_node).links_len)[lvl] -= 1;
[INFO] [stdout]     |                         +++++                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:610:42
[INFO] [stdout]     |
[INFO] [stdout] 610 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^-----------^^^^^^^^^^
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            this raw pointer has type `*mut skipnode::SkipNode<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Option<*mut skipnode::SkipNode<T>>>`
[INFO] [stdout]    --> src/ordered_skiplist.rs:610:42
[INFO] [stdout]     |
[INFO] [stdout] 610 |                 if let Some(next_node) = (*return_node).links[0] {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 610 |                 if let Some(next_node) = (&(*return_node).links)[0] {
[INFO] [stdout]     |                                          ++                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/ordered_skiplist.rs:667:44
[WARN] too many lines in the log, truncating it
