[INFO] crate hamt-rs 0.3.0 is already in cache [INFO] extracting crate hamt-rs 0.3.0 into work/ex/clippy-test-run/sources/stable/reg/hamt-rs/0.3.0 [INFO] extracting crate hamt-rs 0.3.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/hamt-rs/0.3.0 [INFO] validating manifest of hamt-rs-0.3.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of hamt-rs-0.3.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing hamt-rs-0.3.0 [INFO] finished frobbing hamt-rs-0.3.0 [INFO] frobbed toml for hamt-rs-0.3.0 written to work/ex/clippy-test-run/sources/stable/reg/hamt-rs/0.3.0/Cargo.toml [INFO] started frobbing hamt-rs-0.3.0 [INFO] finished frobbing hamt-rs-0.3.0 [INFO] frobbed toml for hamt-rs-0.3.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/hamt-rs/0.3.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting hamt-rs-0.3.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/hamt-rs/0.3.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 26d0c0b680940e527b8d88f1d6e94988a57fc1ece08d7070bf05137df43dee47 [INFO] running `"docker" "start" "-a" "26d0c0b680940e527b8d88f1d6e94988a57fc1ece08d7070bf05137df43dee47"` [INFO] [stderr] Checking hamt-rs v0.3.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hamt.rs:1243:21 [INFO] [stderr] | [INFO] [stderr] 1243 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hamt.rs:1265:17 [INFO] [stderr] | [INFO] [stderr] 1265 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/item_store.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | key: key, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/item_store.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | val: val [INFO] [stderr] | ^^^^^^^^ help: replace it with: `val` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hamt.rs:1243:21 [INFO] [stderr] | [INFO] [stderr] 1243 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hamt.rs:1265:17 [INFO] [stderr] | [INFO] [stderr] 1265 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/item_store.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | key: key, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/item_store.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | val: val [INFO] [stderr] | ^^^^^^^^ help: replace it with: `val` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:665:9 [INFO] [stderr] | [INFO] [stderr] 665 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Variant name ends with the enum's name [INFO] [stderr] --> src/hamt.rs:790:13 [INFO] [stderr] | [INFO] [stderr] 790 | NoAction, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:981:9 [INFO] [stderr] | [INFO] [stderr] 981 | return new_node_ref; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_node_ref` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1011:54 [INFO] [stderr] | [INFO] [stderr] 1011 | let type_mask_up_to_index: u64 = 0xFFFFFFFFFFFFFFFFu64 << ((index + 1) * 2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider: `0xFFFF_FFFF_FFFF_FFFFu64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:1064:9 [INFO] [stderr] | [INFO] [stderr] 1064 | return new_node_ref; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_node_ref` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1086:50 [INFO] [stderr] | [INFO] [stderr] 1086 | let type_mask_up_to_index: u64 = 0xFFFFFFFFFFFFFFFFu64 << ((index + 1) * 2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider: `0xFFFF_FFFF_FFFF_FFFFu64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1222:35 [INFO] [stderr] | [INFO] [stderr] 1222 | let mut insertion_count = 0xdeadbeaf; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xdead_beaf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1231:42 [INFO] [stderr] | [INFO] [stderr] 1231 | debug_assert!(insertion_count != 0xdeadbeaf); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xdead_beaf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1254:33 [INFO] [stderr] | [INFO] [stderr] 1254 | let mut removal_count = 0xdeadbeaf; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xdead_beaf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1260:40 [INFO] [stderr] | [INFO] [stderr] 1260 | debug_assert!(removal_count != 0xdeadbeaf); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xdead_beaf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:1516:25 [INFO] [stderr] | [INFO] [stderr] 1516 | return Some((item_ref.key(), item_ref.val())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some((item_ref.key(), item_ref.val()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:1523:25 [INFO] [stderr] | [INFO] [stderr] 1523 | return Some((item.key(), item.val())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some((item.key(), item.val()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:1528:25 [INFO] [stderr] | [INFO] [stderr] 1528 | return self.next(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.next()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:1539:17 [INFO] [stderr] | [INFO] [stderr] 1539 | return Some((item.key(), item.val())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some((item.key(), item.val()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:665:9 [INFO] [stderr] | [INFO] [stderr] 665 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Variant name ends with the enum's name [INFO] [stderr] --> src/hamt.rs:790:13 [INFO] [stderr] | [INFO] [stderr] 790 | NoAction, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:981:9 [INFO] [stderr] | [INFO] [stderr] 981 | return new_node_ref; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_node_ref` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1011:54 [INFO] [stderr] | [INFO] [stderr] 1011 | let type_mask_up_to_index: u64 = 0xFFFFFFFFFFFFFFFFu64 << ((index + 1) * 2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider: `0xFFFF_FFFF_FFFF_FFFFu64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:1064:9 [INFO] [stderr] | [INFO] [stderr] 1064 | return new_node_ref; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_node_ref` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1086:50 [INFO] [stderr] | [INFO] [stderr] 1086 | let type_mask_up_to_index: u64 = 0xFFFFFFFFFFFFFFFFu64 << ((index + 1) * 2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider: `0xFFFF_FFFF_FFFF_FFFFu64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1222:35 [INFO] [stderr] | [INFO] [stderr] 1222 | let mut insertion_count = 0xdeadbeaf; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xdead_beaf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1231:42 [INFO] [stderr] | [INFO] [stderr] 1231 | debug_assert!(insertion_count != 0xdeadbeaf); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xdead_beaf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1254:33 [INFO] [stderr] | [INFO] [stderr] 1254 | let mut removal_count = 0xdeadbeaf; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xdead_beaf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1260:40 [INFO] [stderr] | [INFO] [stderr] 1260 | debug_assert!(removal_count != 0xdeadbeaf); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xdead_beaf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:1516:25 [INFO] [stderr] | [INFO] [stderr] 1516 | return Some((item_ref.key(), item_ref.val())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some((item_ref.key(), item_ref.val()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:1523:25 [INFO] [stderr] | [INFO] [stderr] 1523 | return Some((item.key(), item.val())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some((item.key(), item.val()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:1528:25 [INFO] [stderr] | [INFO] [stderr] 1528 | return self.next(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.next()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hamt.rs:1539:17 [INFO] [stderr] | [INFO] [stderr] 1539 | return Some((item.key(), item.val())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some((item.key(), item.val()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1601:30 [INFO] [stderr] | [INFO] [stderr] 1601 | assert_eq!(get_index(0b00000000000000000000000000000001, 0), 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `0b0000_0000_0000_0000_0000_0000_0000_0001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1602:30 [INFO] [stderr] | [INFO] [stderr] 1602 | assert_eq!(get_index(0b00000000000000000000000000000010, 1), 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `0b0000_0000_0000_0000_0000_0000_0000_0010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1603:30 [INFO] [stderr] | [INFO] [stderr] 1603 | assert_eq!(get_index(0b00000000000000000000000000000100, 2), 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `0b0000_0000_0000_0000_0000_0000_0000_0100` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1604:30 [INFO] [stderr] | [INFO] [stderr] 1604 | assert_eq!(get_index(0b10000000000000000000000000000000, 31), 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `0b1000_0000_0000_0000_0000_0000_0000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1606:30 [INFO] [stderr] | [INFO] [stderr] 1606 | assert_eq!(get_index(0b00000000000000000000000000101010, 1), 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `0b0000_0000_0000_0000_0000_0000_0010_1010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1607:30 [INFO] [stderr] | [INFO] [stderr] 1607 | assert_eq!(get_index(0b00000000000000000000000000101010, 3), 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `0b0000_0000_0000_0000_0000_0000_0010_1010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hamt.rs:1608:30 [INFO] [stderr] | [INFO] [stderr] 1608 | assert_eq!(get_index(0b00000000000000000000000000101010, 5), 2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `0b0000_0000_0000_0000_0000_0000_0010_1010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/testing.rs:198:23 [INFO] [stderr] | [INFO] [stderr] 198 | for _ in 0 .. 5000000usize { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `5_000_000usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut hamt::UnsafeNode`) to a reference type (`&'a hamt::UnsafeNode`) [INFO] [stderr] --> src/hamt.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | mem::transmute(self.ptr) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*self.ptr` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut hamt::UnsafeNode`) to a reference type (`&'a mut hamt::UnsafeNode`) [INFO] [stderr] --> src/hamt.rs:77:13 [INFO] [stderr] | [INFO] [stderr] 77 | mem::transmute(self.ptr) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *self.ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/hamt.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | / fn try_borrow_owned<'a>(&'a mut self) -> BorrowedNodeRef<'a, K, V, IS, H> { [INFO] [stderr] 84 | | unsafe { [INFO] [stderr] 85 | | if (*self.ptr).ref_count.load(Ordering::Acquire) == 1 { [INFO] [stderr] 86 | | BorrowedNodeRef::Exclusive(mem::transmute(self.ptr)) [INFO] [stderr] ... | [INFO] [stderr] 90 | | } [INFO] [stderr] 91 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut hamt::UnsafeNode`) to a reference type (`&'a mut hamt::UnsafeNode`) [INFO] [stderr] --> src/hamt.rs:86:44 [INFO] [stderr] | [INFO] [stderr] 86 | BorrowedNodeRef::Exclusive(mem::transmute(self.ptr)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *self.ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut hamt::UnsafeNode`) to a reference type (`&'a hamt::UnsafeNode`) [INFO] [stderr] --> src/hamt.rs:88:41 [INFO] [stderr] | [INFO] [stderr] 88 | BorrowedNodeRef::Shared(mem::transmute(self.ptr)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*self.ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut hamt::UnsafeNode`) to a reference type (`&mut hamt::UnsafeNode`) [INFO] [stderr] --> src/hamt.rs:97:54 [INFO] [stderr] | [INFO] [stderr] 97 | let node: &mut UnsafeNode = mem::transmute(self.ptr); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *self.ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut hamt::UnsafeNode`) to a reference type (`&mut hamt::UnsafeNode`) [INFO] [stderr] --> src/hamt.rs:110:54 [INFO] [stderr] | [INFO] [stderr] 110 | let node: &mut UnsafeNode = mem::transmute(self.ptr); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *self.ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/hamt.rs:263:35 [INFO] [stderr] | [INFO] [stderr] 263 | let base: *const u8 = mem::transmute(&self.__entries); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&self.__entries as *const [hamt::AlignmentStruct; 0] as *const u8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/hamt.rs:264:13 [INFO] [stderr] | [INFO] [stderr] 264 | base.offset((index * UnsafeNode::::node_entry_size()) as isize) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `base.add((index * UnsafeNode::::node_entry_size()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_offset_with_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const u8`) to a reference type (`&'a IS`) [INFO] [stderr] --> src/hamt.rs:274:49 [INFO] [stderr] | [INFO] [stderr] 274 | KVP_ENTRY => NodeEntryRef::Item(mem::transmute(entry_ptr)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(entry_ptr as *const IS)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const u8`) to a reference type (`&'a hamt::NodeRef`) [INFO] [stderr] --> src/hamt.rs:275:56 [INFO] [stderr] | [INFO] [stderr] 275 | SUBTREE_ENTRY => NodeEntryRef::SubTree(mem::transmute(entry_ptr)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(entry_ptr as *const hamt::NodeRef)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const u8`) to a reference type (`&'a std::sync::Arc>`) [INFO] [stderr] --> src/hamt.rs:276:60 [INFO] [stderr] | [INFO] [stderr] 276 | COLLISION_ENTRY => NodeEntryRef::Collision(mem::transmute(entry_ptr)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(entry_ptr as *const std::sync::Arc>)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const u8`) to a reference type (`&'a mut IS`) [INFO] [stderr] --> src/hamt.rs:288:52 [INFO] [stderr] | [INFO] [stderr] 288 | KVP_ENTRY => NodeEntryMutRef::Item(mem::transmute(entry_ptr)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *(entry_ptr as *mut IS)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const u8`) to a reference type (`&'a mut hamt::NodeRef`) [INFO] [stderr] --> src/hamt.rs:289:59 [INFO] [stderr] | [INFO] [stderr] 289 | SUBTREE_ENTRY => NodeEntryMutRef::SubTree(mem::transmute(entry_ptr)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *(entry_ptr as *mut hamt::NodeRef)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const u8`) to a reference type (`&'a mut std::sync::Arc>`) [INFO] [stderr] --> src/hamt.rs:290:63 [INFO] [stderr] | [INFO] [stderr] 290 | COLLISION_ENTRY => NodeEntryMutRef::Collision(mem::transmute(entry_ptr)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *(entry_ptr as *mut std::sync::Arc>)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/hamt.rs:305:32 [INFO] [stderr] | [INFO] [stderr] 305 | ptr::write(mem::transmute(entry_ptr), kvp); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `entry_ptr as *mut IS` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/hamt.rs:309:32 [INFO] [stderr] | [INFO] [stderr] 309 | ptr::write(mem::transmute(entry_ptr), node_ref); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `entry_ptr as *mut hamt::NodeRef` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/hamt.rs:313:32 [INFO] [stderr] | [INFO] [stderr] 313 | ptr::write(mem::transmute(entry_ptr), arc); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `entry_ptr as *mut std::sync::Arc>` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/hamt.rs:362:58 [INFO] [stderr] | [INFO] [stderr] 362 | let node_ptr: *mut UnsafeNode = mem::transmute(allocate(node_size, align)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `allocate(node_size, align) as *mut hamt::UnsafeNode` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/hamt.rs:385:24 [INFO] [stderr] | [INFO] [stderr] 385 | deallocate(mem::transmute(self), node_size, align); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self as *mut hamt::UnsafeNode as *mut u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/hamt.rs:656:9 [INFO] [stderr] | [INFO] [stderr] 656 | / match new_entry { [INFO] [stderr] 657 | | Some(e) => { [INFO] [stderr] 658 | | self.insert_entry_in_place(local_key, e); [INFO] [stderr] 659 | | } [INFO] [stderr] ... | [INFO] [stderr] 662 | | } [INFO] [stderr] 663 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 656 | if let Some(e) = new_entry { [INFO] [stderr] 657 | self.insert_entry_in_place(local_key, e); [INFO] [stderr] 658 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/hamt.rs:923:13 [INFO] [stderr] | [INFO] [stderr] 923 | / match self.get_entry(other_index) { [INFO] [stderr] 924 | | NodeEntryRef::Item(kvp_ref) => { [INFO] [stderr] 925 | | return RemovalResult::CollapseSubTree(kvp_ref.clone()) [INFO] [stderr] 926 | | } [INFO] [stderr] 927 | | _ => { /* */ } [INFO] [stderr] 928 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 923 | if let NodeEntryRef::Item(kvp_ref) = self.get_entry(other_index) { [INFO] [stderr] 924 | return RemovalResult::CollapseSubTree(kvp_ref.clone()) [INFO] [stderr] 925 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/hamt.rs:1005:41 [INFO] [stderr] | [INFO] [stderr] 1005 | let dest: *mut u8 = mem::transmute( [INFO] [stderr] | _________________________________________^ [INFO] [stderr] 1006 | | source.offset(UnsafeNode::::node_entry_size() as isize)); [INFO] [stderr] | |_____________________________________________________________________________________________^ help: try: `source.offset(UnsafeNode::::node_entry_size() as isize) as *mut u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/hamt.rs:1006:25 [INFO] [stderr] | [INFO] [stderr] 1006 | source.offset(UnsafeNode::::node_entry_size() as isize)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `source.add(UnsafeNode::::node_entry_size())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/hamt.rs:1079:37 [INFO] [stderr] | [INFO] [stderr] 1079 | let dest: *mut u8 = mem::transmute( [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 1080 | | source.offset(-(UnsafeNode::::node_entry_size() as isize)) [INFO] [stderr] 1081 | | ); [INFO] [stderr] | |_____________________^ help: try: `source.offset(-(UnsafeNode::::node_entry_size() as isize)) as *mut u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: item `hamt::HamtMap` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/hamt.rs:1161:1 [INFO] [stderr] | [INFO] [stderr] 1161 | / impl HamtMap [INFO] [stderr] 1162 | | where K: Eq+Send+Sync+Hash, [INFO] [stderr] 1163 | | V: Send+Sync, [INFO] [stderr] 1164 | | IS: ItemStore, [INFO] [stderr] ... | [INFO] [stderr] 1324 | | } [INFO] [stderr] 1325 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/hamt.rs:1174:5 [INFO] [stderr] | [INFO] [stderr] 1174 | / pub fn iter<'a>(&'a self) -> HamtMapIterator<'a, K, V, IS, H> { [INFO] [stderr] 1175 | | HamtMapIterator::new(self) [INFO] [stderr] 1176 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/hamt.rs:1212:21 [INFO] [stderr] | [INFO] [stderr] 1212 | hash = hash >> BITS_PER_LEVEL; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `hash >>= BITS_PER_LEVEL` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/hamt.rs:1392:5 [INFO] [stderr] | [INFO] [stderr] 1392 | / fn ne(&self, other: &HamtMap) -> bool { [INFO] [stderr] 1393 | | !(*self == *other) [INFO] [stderr] 1394 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::partialeq_ne_impl)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/item_store.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | fn key<'a>(&'a self) -> &'a K; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/item_store.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | fn val<'a>(&'a self) -> &'a V; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/item_store.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | fn key<'a>(&'a self) -> &'a K { &self.key } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/item_store.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | fn val<'a>(&'a self) -> &'a V { &self.val } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/item_store.rs:74:5 [INFO] [stderr] | [INFO] [stderr] 74 | fn key<'a>(&'a self) -> &'a K { &self.store.0 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/item_store.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | fn val<'a>(&'a self) -> &'a V { &self.store.1 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut hamt::UnsafeNode`) to a reference type (`&'a hamt::UnsafeNode`) [INFO] [stderr] --> src/hamt.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | mem::transmute(self.ptr) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*self.ptr` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut hamt::UnsafeNode`) to a reference type (`&'a mut hamt::UnsafeNode`) [INFO] [stderr] --> src/hamt.rs:77:13 [INFO] [stderr] | [INFO] [stderr] 77 | mem::transmute(self.ptr) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *self.ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/hamt.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | / fn try_borrow_owned<'a>(&'a mut self) -> BorrowedNodeRef<'a, K, V, IS, H> { [INFO] [stderr] 84 | | unsafe { [INFO] [stderr] 85 | | if (*self.ptr).ref_count.load(Ordering::Acquire) == 1 { [INFO] [stderr] 86 | | BorrowedNodeRef::Exclusive(mem::transmute(self.ptr)) [INFO] [stderr] ... | [INFO] [stderr] 90 | | } [INFO] [stderr] 91 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut hamt::UnsafeNode`) to a reference type (`&'a mut hamt::UnsafeNode`) [INFO] [stderr] --> src/hamt.rs:86:44 [INFO] [stderr] | [INFO] [stderr] 86 | BorrowedNodeRef::Exclusive(mem::transmute(self.ptr)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *self.ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut hamt::UnsafeNode`) to a reference type (`&'a hamt::UnsafeNode`) [INFO] [stderr] --> src/hamt.rs:88:41 [INFO] [stderr] | [INFO] [stderr] 88 | BorrowedNodeRef::Shared(mem::transmute(self.ptr)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*self.ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut hamt::UnsafeNode`) to a reference type (`&mut hamt::UnsafeNode`) [INFO] [stderr] --> src/hamt.rs:97:54 [INFO] [stderr] | [INFO] [stderr] 97 | let node: &mut UnsafeNode = mem::transmute(self.ptr); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *self.ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut hamt::UnsafeNode`) to a reference type (`&mut hamt::UnsafeNode`) [INFO] [stderr] --> src/hamt.rs:110:54 [INFO] [stderr] | [INFO] [stderr] 110 | let node: &mut UnsafeNode = mem::transmute(self.ptr); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *self.ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/hamt.rs:263:35 [INFO] [stderr] | [INFO] [stderr] 263 | let base: *const u8 = mem::transmute(&self.__entries); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&self.__entries as *const [hamt::AlignmentStruct; 0] as *const u8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/hamt.rs:264:13 [INFO] [stderr] | [INFO] [stderr] 264 | base.offset((index * UnsafeNode::::node_entry_size()) as isize) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `base.add((index * UnsafeNode::::node_entry_size()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_offset_with_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const u8`) to a reference type (`&'a IS`) [INFO] [stderr] --> src/hamt.rs:274:49 [INFO] [stderr] | [INFO] [stderr] 274 | KVP_ENTRY => NodeEntryRef::Item(mem::transmute(entry_ptr)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(entry_ptr as *const IS)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const u8`) to a reference type (`&'a hamt::NodeRef`) [INFO] [stderr] --> src/hamt.rs:275:56 [INFO] [stderr] | [INFO] [stderr] 275 | SUBTREE_ENTRY => NodeEntryRef::SubTree(mem::transmute(entry_ptr)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(entry_ptr as *const hamt::NodeRef)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const u8`) to a reference type (`&'a std::sync::Arc>`) [INFO] [stderr] --> src/hamt.rs:276:60 [INFO] [stderr] | [INFO] [stderr] 276 | COLLISION_ENTRY => NodeEntryRef::Collision(mem::transmute(entry_ptr)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(entry_ptr as *const std::sync::Arc>)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const u8`) to a reference type (`&'a mut IS`) [INFO] [stderr] --> src/hamt.rs:288:52 [INFO] [stderr] | [INFO] [stderr] 288 | KVP_ENTRY => NodeEntryMutRef::Item(mem::transmute(entry_ptr)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *(entry_ptr as *mut IS)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const u8`) to a reference type (`&'a mut hamt::NodeRef`) [INFO] [stderr] --> src/hamt.rs:289:59 [INFO] [stderr] | [INFO] [stderr] 289 | SUBTREE_ENTRY => NodeEntryMutRef::SubTree(mem::transmute(entry_ptr)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *(entry_ptr as *mut hamt::NodeRef)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const u8`) to a reference type (`&'a mut std::sync::Arc>`) [INFO] [stderr] --> src/hamt.rs:290:63 [INFO] [stderr] | [INFO] [stderr] 290 | COLLISION_ENTRY => NodeEntryMutRef::Collision(mem::transmute(entry_ptr)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *(entry_ptr as *mut std::sync::Arc>)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/hamt.rs:305:32 [INFO] [stderr] | [INFO] [stderr] 305 | ptr::write(mem::transmute(entry_ptr), kvp); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `entry_ptr as *mut IS` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/hamt.rs:309:32 [INFO] [stderr] | [INFO] [stderr] 309 | ptr::write(mem::transmute(entry_ptr), node_ref); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `entry_ptr as *mut hamt::NodeRef` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/hamt.rs:313:32 [INFO] [stderr] | [INFO] [stderr] 313 | ptr::write(mem::transmute(entry_ptr), arc); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `entry_ptr as *mut std::sync::Arc>` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/hamt.rs:362:58 [INFO] [stderr] | [INFO] [stderr] 362 | let node_ptr: *mut UnsafeNode = mem::transmute(allocate(node_size, align)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `allocate(node_size, align) as *mut hamt::UnsafeNode` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/hamt.rs:385:24 [INFO] [stderr] | [INFO] [stderr] 385 | deallocate(mem::transmute(self), node_size, align); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self as *mut hamt::UnsafeNode as *mut u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/hamt.rs:656:9 [INFO] [stderr] | [INFO] [stderr] 656 | / match new_entry { [INFO] [stderr] 657 | | Some(e) => { [INFO] [stderr] 658 | | self.insert_entry_in_place(local_key, e); [INFO] [stderr] 659 | | } [INFO] [stderr] ... | [INFO] [stderr] 662 | | } [INFO] [stderr] 663 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 656 | if let Some(e) = new_entry { [INFO] [stderr] 657 | self.insert_entry_in_place(local_key, e); [INFO] [stderr] 658 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/hamt.rs:923:13 [INFO] [stderr] | [INFO] [stderr] 923 | / match self.get_entry(other_index) { [INFO] [stderr] 924 | | NodeEntryRef::Item(kvp_ref) => { [INFO] [stderr] 925 | | return RemovalResult::CollapseSubTree(kvp_ref.clone()) [INFO] [stderr] 926 | | } [INFO] [stderr] 927 | | _ => { /* */ } [INFO] [stderr] 928 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 923 | if let NodeEntryRef::Item(kvp_ref) = self.get_entry(other_index) { [INFO] [stderr] 924 | return RemovalResult::CollapseSubTree(kvp_ref.clone()) [INFO] [stderr] 925 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/hamt.rs:1005:41 [INFO] [stderr] | [INFO] [stderr] 1005 | let dest: *mut u8 = mem::transmute( [INFO] [stderr] | _________________________________________^ [INFO] [stderr] 1006 | | source.offset(UnsafeNode::::node_entry_size() as isize)); [INFO] [stderr] | |_____________________________________________________________________________________________^ help: try: `source.offset(UnsafeNode::::node_entry_size() as isize) as *mut u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/hamt.rs:1006:25 [INFO] [stderr] | [INFO] [stderr] 1006 | source.offset(UnsafeNode::::node_entry_size() as isize)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `source.add(UnsafeNode::::node_entry_size())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/hamt.rs:1079:37 [INFO] [stderr] | [INFO] [stderr] 1079 | let dest: *mut u8 = mem::transmute( [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 1080 | | source.offset(-(UnsafeNode::::node_entry_size() as isize)) [INFO] [stderr] 1081 | | ); [INFO] [stderr] | |_____________________^ help: try: `source.offset(-(UnsafeNode::::node_entry_size() as isize)) as *mut u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: item `hamt::HamtMap` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/hamt.rs:1161:1 [INFO] [stderr] | [INFO] [stderr] 1161 | / impl HamtMap [INFO] [stderr] 1162 | | where K: Eq+Send+Sync+Hash, [INFO] [stderr] 1163 | | V: Send+Sync, [INFO] [stderr] 1164 | | IS: ItemStore, [INFO] [stderr] ... | [INFO] [stderr] 1324 | | } [INFO] [stderr] 1325 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/hamt.rs:1174:5 [INFO] [stderr] | [INFO] [stderr] 1174 | / pub fn iter<'a>(&'a self) -> HamtMapIterator<'a, K, V, IS, H> { [INFO] [stderr] 1175 | | HamtMapIterator::new(self) [INFO] [stderr] 1176 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/hamt.rs:1212:21 [INFO] [stderr] | [INFO] [stderr] 1212 | hash = hash >> BITS_PER_LEVEL; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `hash >>= BITS_PER_LEVEL` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/hamt.rs:1392:5 [INFO] [stderr] | [INFO] [stderr] 1392 | / fn ne(&self, other: &HamtMap) -> bool { [INFO] [stderr] 1393 | | !(*self == *other) [INFO] [stderr] 1394 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::partialeq_ne_impl)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/item_store.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | fn key<'a>(&'a self) -> &'a K; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/item_store.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | fn val<'a>(&'a self) -> &'a V; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/item_store.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | fn key<'a>(&'a self) -> &'a K { &self.key } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/item_store.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | fn val<'a>(&'a self) -> &'a V { &self.val } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/item_store.rs:74:5 [INFO] [stderr] | [INFO] [stderr] 74 | fn key<'a>(&'a self) -> &'a K { &self.store.0 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/item_store.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | fn val<'a>(&'a self) -> &'a V { &self.store.1 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] error[E0554]: #![feature] may not be used on the stable release channel [INFO] [stderr] --> benches/benches.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | #![feature(test)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0554`. [INFO] [stderr] error: Could not compile `hamt-rs`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "26d0c0b680940e527b8d88f1d6e94988a57fc1ece08d7070bf05137df43dee47"` [INFO] running `"docker" "rm" "-f" "26d0c0b680940e527b8d88f1d6e94988a57fc1ece08d7070bf05137df43dee47"` [INFO] [stdout] 26d0c0b680940e527b8d88f1d6e94988a57fc1ece08d7070bf05137df43dee47