[INFO] cloning repository https://github.com/hundredeir/NoSQL
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hundredeir/NoSQL" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhundredeir%2FNoSQL", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhundredeir%2FNoSQL'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] b07c2cd36358f442a2d79fa5ce79fbb475bd75ce
[INFO] checking hundredeir/NoSQL against e5e97e3ef0ee95d34bea49cdac051ed1bbac01df for pr-158759-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhundredeir%2FNoSQL" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/hundredeir/NoSQL
[INFO] finished tweaking git repo https://github.com/hundredeir/NoSQL
[INFO] tweaked toml for git repo https://github.com/hundredeir/NoSQL written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hundredeir/NoSQL on toolchain e5e97e3ef0ee95d34bea49cdac051ed1bbac01df
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e5e97e3ef0ee95d34bea49cdac051ed1bbac01df" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hundredeir/NoSQL already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e5e97e3ef0ee95d34bea49cdac051ed1bbac01df" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 87a7fbe262084304c65a32a68c81de6508f8142e1fe02a8e893ab4a7d416bcfc
[INFO] running `Command { std: "docker" "start" "87a7fbe262084304c65a32a68c81de6508f8142e1fe02a8e893ab4a7d416bcfc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "87a7fbe262084304c65a32a68c81de6508f8142e1fe02a8e893ab4a7d416bcfc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "87a7fbe262084304c65a32a68c81de6508f8142e1fe02a8e893ab4a7d416bcfc" "/opt/rustwide/cargo-home/bin/cargo" "+e5e97e3ef0ee95d34bea49cdac051ed1bbac01df" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "87a7fbe262084304c65a32a68c81de6508f8142e1fe02a8e893ab4a7d416bcfc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "87a7fbe262084304c65a32a68c81de6508f8142e1fe02a8e893ab4a7d416bcfc" "/opt/rustwide/cargo-home/bin/cargo" "+e5e97e3ef0ee95d34bea49cdac051ed1bbac01df" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]    Compiling libc v0.2.155
[INFO] [stderr]     Checking ppv-lite86 v0.2.9
[INFO] [stderr]    Compiling libm v0.2.8
[INFO] [stderr]    Compiling getrandom v0.1.15
[INFO] [stderr]     Checking cfg-if v0.1.10
[INFO] [stderr]     Checking file v0.1.0 (/opt/rustwide/workdir/src/file)
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking log v0.1.0 (/opt/rustwide/workdir/src/log)
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking rand_distr v0.4.3
[INFO] [stdout] warning: unused variable: `op_code`
[INFO] [stdout]    --> src/log/src/lib.rs:357:43
[INFO] [stdout]     |
[INFO] [stdout] 357 |                         Record::TypeValue(op_code, key_len, val_len, key, value)
[INFO] [stdout]     |                                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_op_code`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_len`
[INFO] [stdout]    --> src/log/src/lib.rs:357:52
[INFO] [stdout]     |
[INFO] [stdout] 357 |                         Record::TypeValue(op_code, key_len, val_len, key, value)
[INFO] [stdout]     |                                                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val_len`
[INFO] [stdout]    --> src/log/src/lib.rs:357:61
[INFO] [stdout]     |
[INFO] [stdout] 357 |                         Record::TypeValue(op_code, key_len, val_len, key, value)
[INFO] [stdout]     |                                                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/log/src/lib.rs:357:70
[INFO] [stdout]     |
[INFO] [stdout] 357 |                         Record::TypeValue(op_code, key_len, val_len, key, value)
[INFO] [stdout]     |                                                                      ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/log/src/lib.rs:357:75
[INFO] [stdout]     |
[INFO] [stdout] 357 |                         Record::TypeValue(op_code, key_len, val_len, key, value)
[INFO] [stdout]     |                                                                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `op_code`
[INFO] [stdout]    --> src/log/src/lib.rs:371:62
[INFO] [stdout]     |
[INFO] [stdout] 371 |                     assert!(matches!(rec, Record::TypeDelete(op_code, key_len, key)));
[INFO] [stdout]     |                                                              ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_op_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_len`
[INFO] [stdout]    --> src/log/src/lib.rs:371:71
[INFO] [stdout]     |
[INFO] [stdout] 371 |                     assert!(matches!(rec, Record::TypeDelete(op_code, key_len, key)));
[INFO] [stdout]     |                                                                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/log/src/lib.rs:371:80
[INFO] [stdout]     |
[INFO] [stdout] 371 |                     assert!(matches!(rec, Record::TypeDelete(op_code, key_len, key)));
[INFO] [stdout]     |                                                                                ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking memtable v0.1.0 (/opt/rustwide/workdir/src/memtable)
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/memtable/src/skiplist/node.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |         'retry: loop {
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:352:19
[INFO] [stdout]     |
[INFO] [stdout] 352 |             while (record != std::ptr::null_mut()) {
[INFO] [stdout]     |                   ^                              ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 352 -             while (record != std::ptr::null_mut()) {
[INFO] [stdout] 352 +             while record != std::ptr::null_mut() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/memtable/src/skiplist/node.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AtomicPtr`, `AtomicU32`, and `Ordering`
[INFO] [stdout]  --> src/memtable/src/skiplist/tests.rs:6:29
[INFO] [stdout]   |
[INFO] [stdout] 6 |     use std::sync::atomic::{AtomicPtr, AtomicU32, Ordering};
[INFO] [stdout]   |                             ^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |         'retry: loop {
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:352:19
[INFO] [stdout]     |
[INFO] [stdout] 352 |             while (record != std::ptr::null_mut()) {
[INFO] [stdout]     |                   ^                              ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 352 -             while (record != std::ptr::null_mut()) {
[INFO] [stdout] 352 +             while record != std::ptr::null_mut() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/memtable/src/skiplist/node.rs:25:19
[INFO] [stdout]    |
[INFO] [stdout] 25 |             .map(|i| AtomicPtr::new(std::ptr::null_mut()))
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/memtable/src/skiplist/node.rs:37:19
[INFO] [stdout]    |
[INFO] [stdout] 37 |             .map(|i| AtomicPtr::new(std::ptr::null_mut()))
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/memtable/src/skiplist/node.rs:25:19
[INFO] [stdout]    |
[INFO] [stdout] 25 |             .map(|i| AtomicPtr::new(std::ptr::null_mut()))
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/memtable/src/skiplist/node.rs:37:19
[INFO] [stdout]    |
[INFO] [stdout] 37 |             .map(|i| AtomicPtr::new(std::ptr::null_mut()))
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hp_record`
[INFO] [stdout]   --> src/memtable/src/skiplist.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |         hp_record: *mut HazarPointerRecord<Node<ValueType>>,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hp_record`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hp_record`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 163 |         hp_record: *mut HazarPointerRecord<Node<ValueType>>,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hp_record`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `marked` is never read
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:209:21
[INFO] [stdout]     |
[INFO] [stdout] 209 |                     marked = get_marker(composite);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 224 |                         marked = get_marker(composite);
[INFO] [stdout]     |                         ------------------------------ `marked` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hazard_pointer_record`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:244:9
[INFO] [stdout]     |
[INFO] [stdout] 244 |         hazard_pointer_record: *mut HazarPointerRecord<Node<ValueType>>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hazard_pointer_record`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> src/memtable/src/skiplist/tests.rs:115:17
[INFO] [stdout]     |
[INFO] [stdout] 115 |             let handle = thread::Builder::new()
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> src/memtable/src/skiplist/tests.rs:127:17
[INFO] [stdout]     |
[INFO] [stdout] 127 |             let handle = thread::Builder::new()
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/memtable/src/memory_management/hazard_pointers.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |             unsafe {
[INFO] [stdout]    |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/memtable/src/memory_management/hazard_pointers.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |         unsafe { hprec }
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/memtable/src/memory_management/hazard_pointers.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |         let mut hprec = Box::into_raw(Box::new(HazarPointerRecord {
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hp_record`
[INFO] [stdout]   --> src/memtable/src/skiplist.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |         hp_record: *mut HazarPointerRecord<Node<ValueType>>,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hp_record`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/memtable/src/memory_management/hazard_pointers.rs:127:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hp_record`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 163 |         hp_record: *mut HazarPointerRecord<Node<ValueType>>,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hp_record`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `marked` is never read
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:209:21
[INFO] [stdout]     |
[INFO] [stdout] 209 |                     marked = get_marker(composite);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 224 |                         marked = get_marker(composite);
[INFO] [stdout]     |                         ------------------------------ `marked` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Memtable` is never used
[INFO] [stdout]  --> src/memtable/src/lib.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | trait Memtable {
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Color` is never used
[INFO] [stdout]    --> src/memtable/src/rbtree.rs:412:10
[INFO] [stdout]     |
[INFO] [stdout] 412 | pub enum Color {
[INFO] [stdout]     |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Node` is never constructed
[INFO] [stdout]    --> src/memtable/src/rbtree.rs:418:12
[INFO] [stdout]     |
[INFO] [stdout] 418 | pub struct Node {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hazard_pointer_record`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:244:9
[INFO] [stdout]     |
[INFO] [stdout] 244 |         hazard_pointer_record: *mut HazarPointerRecord<Node<ValueType>>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hazard_pointer_record`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_color`, `update_color`, `get_left_child`, `get_right_child`, and `get_parent` are never used
[INFO] [stdout]    --> src/memtable/src/rbtree.rs:428:12
[INFO] [stdout]     |
[INFO] [stdout] 427 | impl Node {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] 428 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub fn get_color(&self) -> Color {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |     pub fn update_color(&mut self, new_color: Color) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 465 |     pub fn get_left_child(&self) -> Option<Rc<RefCell<Node>>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     pub fn get_right_child(&self) -> Option<Rc<RefCell<Node>>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 473 |     pub fn get_parent(&self) -> Option<Rc<RefCell<Node>>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RBTree` is never constructed
[INFO] [stdout]    --> src/memtable/src/rbtree.rs:483:12
[INFO] [stdout]     |
[INFO] [stdout] 483 | pub struct RBTree {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/memtable/src/rbtree.rs:489:12
[INFO] [stdout]     |
[INFO] [stdout] 488 | impl RBTree {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 489 |     pub fn new() -> RBTree {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 496 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 500 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 504 |     fn search_node(&self, key: &str) -> Option<Rc<RefCell<Node>>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 519 |     pub fn search(&self, key: &str) -> Option<(String, Option<String>)> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 524 |     pub fn delete(&mut self, key: &str) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub fn insert(&mut self, key: &str, val: &str) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 532 |     fn insert_generic(&mut self, key: &str, val: Option<&str>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     fn insert_fixup(&mut self, new_node: Rc<RefCell<Node>>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 665 |     fn left_rotate(&mut self, parent_node: Rc<RefCell<Node>>) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 696 |     fn right_rotate(&mut self, parent_node: Rc<RefCell<Node>>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 727 |     pub fn iter(&self) -> Succesor {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Succesor` is never constructed
[INFO] [stdout]    --> src/memtable/src/rbtree.rs:732:12
[INFO] [stdout]     |
[INFO] [stdout] 732 | pub struct Succesor {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `find_smallest` are never used
[INFO] [stdout]    --> src/memtable/src/rbtree.rs:737:8
[INFO] [stdout]     |
[INFO] [stdout] 736 | impl Succesor {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] 737 |     fn new(node: Option<&Rc<RefCell<Node>>>) -> Succesor {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 747 |     fn find_smallest(node: Rc<RefCell<Node>>) -> Rc<RefCell<Node>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_node` is never used
[INFO] [stdout]   --> src/memtable/src/skiplist.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn get_node<ValueType>(ptr: *mut Node<ValueType>) -> *mut Node<ValueType>
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_marker` is never used
[INFO] [stdout]   --> src/memtable/src/skiplist.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn get_marker<ValueType>(ptr: *mut Node<ValueType>) -> bool
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_marker` is never used
[INFO] [stdout]   --> src/memtable/src/skiplist.rs:36:4
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn add_marker<ValueType>(ptr: *mut Node<ValueType>, marker: bool) -> *mut Node<ValueType>
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SkipList` is never constructed
[INFO] [stdout]   --> src/memtable/src/skiplist.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | struct SkipList<ValueType>
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/memtable/src/memory_management/hazard_pointers.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |             unsafe {
[INFO] [stdout]    |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/memtable/src/memory_management/hazard_pointers.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |         unsafe { hprec }
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:61:11
[INFO] [stdout]     |
[INFO] [stdout]  57 | / impl<ValueType> SkipList<ValueType>
[INFO] [stdout]  58 | | where
[INFO] [stdout]  59 | |     ValueType: Clone,
[INFO] [stdout]     | |_____________________- associated items in this implementation
[INFO] [stdout]  60 |   {
[INFO] [stdout]  61 |       const MAX_LEVEL: u64 = Node::<ValueType>::TOP_LEVEL as u64;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]  62 |       const MAX_HP: u64 = 5;
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout]  63 |
[INFO] [stdout]  64 |       pub fn new() -> SkipList<ValueType> {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |       pub fn add(
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |       pub fn remove(
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |       fn find(
[INFO] [stdout]     |          ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |       fn enter(&self) -> *mut HazarPointerRecord<Node<ValueType>> {
[INFO] [stdout]     |          ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |       fn exit(&self, hp_record: *mut HazarPointerRecord<Node<ValueType>>) {
[INFO] [stdout]     |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FindResult` is never constructed
[INFO] [stdout]  --> src/memtable/src/skiplist/find_result.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct FindResult<ValueType>
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `KeyType` is never used
[INFO] [stdout]  --> src/memtable/src/skiplist/node.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub type KeyType = i128;
[INFO] [stdout]   |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/memtable/src/memory_management/hazard_pointers.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |         let mut hprec = Box::into_raw(Box::new(HazarPointerRecord {
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Node` is never constructed
[INFO] [stdout]  --> src/memtable/src/skiplist/node.rs:8:19
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub(crate) struct Node<ValueType>
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `TOP_LEVEL`, `new_sentinel`, and `new` are never used
[INFO] [stdout]   --> src/memtable/src/skiplist/node.rs:22:15
[INFO] [stdout]    |
[INFO] [stdout] 18 | / impl<ValueType> Node<ValueType>
[INFO] [stdout] 19 | | where
[INFO] [stdout] 20 | |     ValueType: Clone,
[INFO] [stdout]    | |_____________________- associated items in this implementation
[INFO] [stdout] 21 |   {
[INFO] [stdout] 22 |       pub const TOP_LEVEL: usize = 31;
[INFO] [stdout]    |                 ^^^^^^^^^
[INFO] [stdout] 23 |       pub fn new_sentinel(key: KeyType) -> *mut Node<ValueType> {
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |       pub fn new(key: KeyType, value: ValueType, height: usize) -> *mut Node<ValueType> {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_random_lvl` is never used
[INFO] [stdout]  --> src/memtable/src/util.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn generate_random_lvl(max_lvl: u64) -> u64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HazarPointerRecord` is never constructed
[INFO] [stdout]   --> src/memtable/src/memory_management/hazard_pointers.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct HazarPointerRecord<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `allocate_hp_record`, `retire_hp_record`, `retire_node`, `help_scan`, and `scan` are never used
[INFO] [stdout]    --> src/memtable/src/memory_management/hazard_pointers.rs:22:12
[INFO] [stdout]     |
[INFO] [stdout]  21 | impl<T> HazarPointerRecord<T> {
[INFO] [stdout]     | ----------------------------- associated functions in this implementation
[INFO] [stdout]  22 |     pub fn allocate_hp_record(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn retire_hp_record(rec_node: *mut HazarPointerRecord<T>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn retire_node(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn help_scan(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     fn scan(head: *mut HazarPointerRecord<T>, self_ptr: *mut HazarPointerRecord<T>) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/memtable/src/memory_management/hazard_pointers.rs:127:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |             unsafe {
[INFO] [stdout]     |             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hp_record`
[INFO] [stdout]   --> src/memtable/src/memory_management/tests.rs:41:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let hp_record: *mut HazarPointerRecord<i32> =
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hp_record`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/memtable/src/memory_management/tests.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         for i in 0..2 {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:102:17
[INFO] [stdout]     |
[INFO] [stdout] 102 |             for i in 0..count {
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:103:21
[INFO] [stdout]     |
[INFO] [stdout] 103 |                 let handle = s.spawn({
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         unsafe{
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 171 |         unsafe {
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:188:13
[INFO] [stdout]     |
[INFO] [stdout] 188 |         for i in 0..4 {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Memtable` is never used
[INFO] [stdout]  --> src/memtable/src/lib.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | trait Memtable {
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_empty` is never used
[INFO] [stdout]    --> src/memtable/src/rbtree.rs:500:12
[INFO] [stdout]     |
[INFO] [stdout] 488 | impl RBTree {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 500 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]   --> src/memtable/src/skiplist/node.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub(crate) struct Node<ValueType>
[INFO] [stdout]    |                   ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub value: Option<ValueType>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `head` and `max_hp_count` are never read
[INFO] [stdout]   --> src/memtable/src/memory_management/hazard_pointers.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct HazarPointerRecord<T> {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub head: Arc<AtomicPtr<HazarPointerRecord<T>>>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 18 |     pub max_hp_count: Arc<AtomicU32>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:112:21
[INFO] [stdout]     |
[INFO] [stdout] 112 |                     (*hp_record).hazard_pointers[0].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:112:21
[INFO] [stdout]     |
[INFO] [stdout] 112 |                     (*hp_record).hazard_pointers[0].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[deny(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] 112 |                     (&(*hp_record).hazard_pointers)[0].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                     ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |                     (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |                     (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 116 |                     (&(*hp_record).hazard_pointers)[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                     ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:132:29
[INFO] [stdout]     |
[INFO] [stdout] 132 | ...                   (*hp_record).hazard_pointers[2].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                       ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:132:29
[INFO] [stdout]     |
[INFO] [stdout] 132 | ...                   (*hp_record).hazard_pointers[2].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 132 |                             (&(*hp_record).hazard_pointers)[2].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                             ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:136:29
[INFO] [stdout]     |
[INFO] [stdout] 136 | ...                   (*hp_record).hazard_pointers[3].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                       ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:136:29
[INFO] [stdout]     |
[INFO] [stdout] 136 | ...                   (*hp_record).hazard_pointers[3].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 136 |                             (&(*hp_record).hazard_pointers)[3].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                             ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:176:21
[INFO] [stdout]     |
[INFO] [stdout] 176 |                     (*hp_record).hazard_pointers[0].store(node_to_remove, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:176:21
[INFO] [stdout]     |
[INFO] [stdout] 176 |                     (*hp_record).hazard_pointers[0].store(node_to_remove, Ordering::SeqCst);
[INFO] [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 |                     (&(*hp_record).hazard_pointers)[0].store(node_to_remove, Ordering::SeqCst);
[INFO] [stdout]     |                     ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:187:25
[INFO] [stdout]     |
[INFO] [stdout] 187 |                         (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:187:25
[INFO] [stdout]     |
[INFO] [stdout] 187 |                         (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 187 |                         (&(*hp_record).hazard_pointers)[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:199:29
[INFO] [stdout]     |
[INFO] [stdout] 199 | ...                   (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                       ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:199:29
[INFO] [stdout]     |
[INFO] [stdout] 199 | ...                   (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 199 |                             (&(*hp_record).hazard_pointers)[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                             ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:208:21
[INFO] [stdout]     |
[INFO] [stdout] 208 |                     (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:208:21
[INFO] [stdout]     |
[INFO] [stdout] 208 |                     (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 208 |                     (&(*hp_record).hazard_pointers)[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                     ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:223:25
[INFO] [stdout]     |
[INFO] [stdout] 223 |                         (*hp_record).hazard_pointers[2].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:223:25
[INFO] [stdout]     |
[INFO] [stdout] 223 |                         (*hp_record).hazard_pointers[2].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 223 |                         (&(*hp_record).hazard_pointers)[2].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:260:17
[INFO] [stdout]     |
[INFO] [stdout] 260 |                 (*hazard_pointer_record).hazard_pointers[0].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                 ^^---------------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:260:17
[INFO] [stdout]     |
[INFO] [stdout] 260 |                 (*hazard_pointer_record).hazard_pointers[0].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 260 |                 (&(*hazard_pointer_record).hazard_pointers)[0].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                 ++                                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:266:21
[INFO] [stdout]     |
[INFO] [stdout] 266 |                     (*hazard_pointer_record).hazard_pointers[1].store(curr, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^---------------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:266:21
[INFO] [stdout]     |
[INFO] [stdout] 266 |                     (*hazard_pointer_record).hazard_pointers[1].store(curr, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 266 |                     (&(*hazard_pointer_record).hazard_pointers)[1].store(curr, Ordering::SeqCst);
[INFO] [stdout]     |                     ++                                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:272:25
[INFO] [stdout]     |
[INFO] [stdout] 272 |                         (*hazard_pointer_record).hazard_pointers[2].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ^^---------------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:272:25
[INFO] [stdout]     |
[INFO] [stdout] 272 |                         (*hazard_pointer_record).hazard_pointers[2].store(succ, Ordering::SeqCst);
[INFO] [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 |                         (&(*hazard_pointer_record).hazard_pointers)[2].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ++                                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:294:29
[INFO] [stdout]     |
[INFO] [stdout] 294 | ...                   (*hazard_pointer_record).hazard_pointers[1]
[INFO] [stdout]     |                       ^^---------------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:294:29
[INFO] [stdout]     |
[INFO] [stdout] 294 | ...                   (*hazard_pointer_record).hazard_pointers[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] 294 |                             (&(*hazard_pointer_record).hazard_pointers)[1]
[INFO] [stdout]     |                             ++                                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:299:29
[INFO] [stdout]     |
[INFO] [stdout] 299 | ...                   (*hazard_pointer_record).hazard_pointers[2]
[INFO] [stdout]     |                       ^^---------------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:299:29
[INFO] [stdout]     |
[INFO] [stdout] 299 | ...                   (*hazard_pointer_record).hazard_pointers[2]
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 299 |                             (&(*hazard_pointer_record).hazard_pointers)[2]
[INFO] [stdout]     |                             ++                                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:112:21
[INFO] [stdout]     |
[INFO] [stdout] 112 |                     (*hp_record).hazard_pointers[0].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:112:21
[INFO] [stdout]     |
[INFO] [stdout] 112 |                     (*hp_record).hazard_pointers[0].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[deny(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] 112 |                     (&(*hp_record).hazard_pointers)[0].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                     ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |                     (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |                     (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 116 |                     (&(*hp_record).hazard_pointers)[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                     ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:132:29
[INFO] [stdout]     |
[INFO] [stdout] 132 | ...                   (*hp_record).hazard_pointers[2].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                       ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:132:29
[INFO] [stdout]     |
[INFO] [stdout] 132 | ...                   (*hp_record).hazard_pointers[2].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 132 |                             (&(*hp_record).hazard_pointers)[2].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                             ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:136:29
[INFO] [stdout]     |
[INFO] [stdout] 136 | ...                   (*hp_record).hazard_pointers[3].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                       ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:136:29
[INFO] [stdout]     |
[INFO] [stdout] 136 | ...                   (*hp_record).hazard_pointers[3].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 136 |                             (&(*hp_record).hazard_pointers)[3].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                             ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:176:21
[INFO] [stdout]     |
[INFO] [stdout] 176 |                     (*hp_record).hazard_pointers[0].store(node_to_remove, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:176:21
[INFO] [stdout]     |
[INFO] [stdout] 176 |                     (*hp_record).hazard_pointers[0].store(node_to_remove, Ordering::SeqCst);
[INFO] [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 |                     (&(*hp_record).hazard_pointers)[0].store(node_to_remove, Ordering::SeqCst);
[INFO] [stdout]     |                     ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:187:25
[INFO] [stdout]     |
[INFO] [stdout] 187 |                         (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:187:25
[INFO] [stdout]     |
[INFO] [stdout] 187 |                         (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 187 |                         (&(*hp_record).hazard_pointers)[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `memtable` (lib) due to 14 previous errors; 33 warnings emitted
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:199:29
[INFO] [stdout]     |
[INFO] [stdout] 199 | ...                   (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                       ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:199:29
[INFO] [stdout]     |
[INFO] [stdout] 199 | ...                   (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 199 |                             (&(*hp_record).hazard_pointers)[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                             ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:208:21
[INFO] [stdout]     |
[INFO] [stdout] 208 |                     (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:208:21
[INFO] [stdout]     |
[INFO] [stdout] 208 |                     (*hp_record).hazard_pointers[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 208 |                     (&(*hp_record).hazard_pointers)[1].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                     ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:223:25
[INFO] [stdout]     |
[INFO] [stdout] 223 |                         (*hp_record).hazard_pointers[2].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:223:25
[INFO] [stdout]     |
[INFO] [stdout] 223 |                         (*hp_record).hazard_pointers[2].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 223 |                         (&(*hp_record).hazard_pointers)[2].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:260:17
[INFO] [stdout]     |
[INFO] [stdout] 260 |                 (*hazard_pointer_record).hazard_pointers[0].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                 ^^---------------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:260:17
[INFO] [stdout]     |
[INFO] [stdout] 260 |                 (*hazard_pointer_record).hazard_pointers[0].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 260 |                 (&(*hazard_pointer_record).hazard_pointers)[0].store(pred, Ordering::SeqCst);
[INFO] [stdout]     |                 ++                                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:266:21
[INFO] [stdout]     |
[INFO] [stdout] 266 |                     (*hazard_pointer_record).hazard_pointers[1].store(curr, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^---------------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:266:21
[INFO] [stdout]     |
[INFO] [stdout] 266 |                     (*hazard_pointer_record).hazard_pointers[1].store(curr, Ordering::SeqCst);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 266 |                     (&(*hazard_pointer_record).hazard_pointers)[1].store(curr, Ordering::SeqCst);
[INFO] [stdout]     |                     ++                                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:272:25
[INFO] [stdout]     |
[INFO] [stdout] 272 |                         (*hazard_pointer_record).hazard_pointers[2].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ^^---------------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:272:25
[INFO] [stdout]     |
[INFO] [stdout] 272 |                         (*hazard_pointer_record).hazard_pointers[2].store(succ, Ordering::SeqCst);
[INFO] [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 |                         (&(*hazard_pointer_record).hazard_pointers)[2].store(succ, Ordering::SeqCst);
[INFO] [stdout]     |                         ++                                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:294:29
[INFO] [stdout]     |
[INFO] [stdout] 294 | ...                   (*hazard_pointer_record).hazard_pointers[1]
[INFO] [stdout]     |                       ^^---------------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:294:29
[INFO] [stdout]     |
[INFO] [stdout] 294 | ...                   (*hazard_pointer_record).hazard_pointers[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] 294 |                             (&(*hazard_pointer_record).hazard_pointers)[1]
[INFO] [stdout]     |                             ++                                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:299:29
[INFO] [stdout]     |
[INFO] [stdout] 299 | ...                   (*hazard_pointer_record).hazard_pointers[2]
[INFO] [stdout]     |                       ^^---------------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         this raw pointer has type `*mut HazarPointerRecord<node::Node<ValueType>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut node::Node<ValueType>>>`
[INFO] [stdout]    --> src/memtable/src/skiplist.rs:299:29
[INFO] [stdout]     |
[INFO] [stdout] 299 | ...                   (*hazard_pointer_record).hazard_pointers[2]
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 299 |                             (&(*hazard_pointer_record).hazard_pointers)[2]
[INFO] [stdout]     |                             ++                                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:132:13
[INFO] [stdout]     |
[INFO] [stdout] 132 |             (*hazard_record).hazard_pointers[0].store(h1,Ordering::SeqCst);
[INFO] [stdout]     |             ^^-------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |               |
[INFO] [stdout]     |               this raw pointer has type `*mut HazarPointerRecord<i32>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut i32>>`
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:132:13
[INFO] [stdout]     |
[INFO] [stdout] 132 |             (*hazard_record).hazard_pointers[0].store(h1,Ordering::SeqCst);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 132 |             (&(*hazard_record).hazard_pointers)[0].store(h1,Ordering::SeqCst);
[INFO] [stdout]     |             ++                                +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:133:13
[INFO] [stdout]     |
[INFO] [stdout] 133 |             (*hazard_record).hazard_pointers[1].store(h2,Ordering::SeqCst);
[INFO] [stdout]     |             ^^-------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |               |
[INFO] [stdout]     |               this raw pointer has type `*mut HazarPointerRecord<i32>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut i32>>`
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:133:13
[INFO] [stdout]     |
[INFO] [stdout] 133 |             (*hazard_record).hazard_pointers[1].store(h2,Ordering::SeqCst);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 133 |             (&(*hazard_record).hazard_pointers)[1].store(h2,Ordering::SeqCst);
[INFO] [stdout]     |             ++                                +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:145:17
[INFO] [stdout]     |
[INFO] [stdout] 145 |                 (*(*head).load(Ordering::SeqCst)).hazard_pointers[0].load(Ordering::SeqCst),
[INFO] [stdout]     |                 ^^------------------------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this raw pointer has type `*mut HazarPointerRecord<i32>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut i32>>`
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:145:17
[INFO] [stdout]     |
[INFO] [stdout] 145 |                 (*(*head).load(Ordering::SeqCst)).hazard_pointers[0].load(Ordering::SeqCst),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 145 |                 (&(*(*head).load(Ordering::SeqCst)).hazard_pointers)[0].load(Ordering::SeqCst),
[INFO] [stdout]     |                 ++                                                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |                 (*(*head).load(Ordering::SeqCst)).hazard_pointers[1].load(Ordering::SeqCst),
[INFO] [stdout]     |                 ^^------------------------------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this raw pointer has type `*mut HazarPointerRecord<i32>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut i32>>`
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |                 (*(*head).load(Ordering::SeqCst)).hazard_pointers[1].load(Ordering::SeqCst),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 149 |                 (&(*(*head).load(Ordering::SeqCst)).hazard_pointers)[1].load(Ordering::SeqCst),
[INFO] [stdout]     |                 ++                                                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:195:13
[INFO] [stdout]     |
[INFO] [stdout] 195 |             (*hp_record).hazard_pointers[0].store(node,Ordering::SeqCst);
[INFO] [stdout]     |             ^^---------^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |               |
[INFO] [stdout]     |               this raw pointer has type `*mut HazarPointerRecord<i32>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout] note: autoref is being applied to this expression, resulting in: `&Vec<Atomic<*mut i32>>`
[INFO] [stdout]    --> src/memtable/src/memory_management/tests.rs:195:13
[INFO] [stdout]     |
[INFO] [stdout] 195 |             (*hp_record).hazard_pointers[0].store(node,Ordering::SeqCst);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 195 |             (&(*hp_record).hazard_pointers)[0].store(node,Ordering::SeqCst);
[INFO] [stdout]     |             ++                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `memtable` (lib test) due to 19 previous errors; 27 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "87a7fbe262084304c65a32a68c81de6508f8142e1fe02a8e893ab4a7d416bcfc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "87a7fbe262084304c65a32a68c81de6508f8142e1fe02a8e893ab4a7d416bcfc", kill_on_drop: false }`
[INFO] [stdout] 87a7fbe262084304c65a32a68c81de6508f8142e1fe02a8e893ab4a7d416bcfc
