[INFO] crate stable-skiplist 0.1.1 is already in cache [INFO] extracting crate stable-skiplist 0.1.1 into work/ex/clippy-test-run/sources/stable/reg/stable-skiplist/0.1.1 [INFO] extracting crate stable-skiplist 0.1.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/stable-skiplist/0.1.1 [INFO] validating manifest of stable-skiplist-0.1.1 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 stable-skiplist-0.1.1 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 stable-skiplist-0.1.1 [INFO] finished frobbing stable-skiplist-0.1.1 [INFO] frobbed toml for stable-skiplist-0.1.1 written to work/ex/clippy-test-run/sources/stable/reg/stable-skiplist/0.1.1/Cargo.toml [INFO] started frobbing stable-skiplist-0.1.1 [INFO] finished frobbing stable-skiplist-0.1.1 [INFO] frobbed toml for stable-skiplist-0.1.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/stable-skiplist/0.1.1/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 stable-skiplist-0.1.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/stable-skiplist/0.1.1:/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] 42fc9841269464119f43d8872384611346325754b77f7be76ff7a563e2b37a3b [INFO] running `"docker" "start" "-a" "42fc9841269464119f43d8872384611346325754b77f7be76ff7a563e2b37a3b"` [INFO] [stderr] Checking stable-skiplist v0.1.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/level_generator.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | total: total, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `total` [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/level_generator.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | p: p, [INFO] [stderr] | ^^^^ help: replace it with: `p` [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/skipnode.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | level: level, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `level` [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/ordered_skiplist.rs:1073:25 [INFO] [stderr] | [INFO] [stderr] 1073 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/ordered_skiplist.rs:1074:25 [INFO] [stderr] | [INFO] [stderr] 1074 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [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/ordered_skiplist.rs:1081:25 [INFO] [stderr] | [INFO] [stderr] 1081 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/skipmap.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | level: level, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `level` [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/skipmap.rs:973:25 [INFO] [stderr] | [INFO] [stderr] 973 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/skipmap.rs:982:25 [INFO] [stderr] | [INFO] [stderr] 982 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/skipmap.rs:983:25 [INFO] [stderr] | [INFO] [stderr] 983 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [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/skiplist.rs:684:25 [INFO] [stderr] | [INFO] [stderr] 684 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/skiplist.rs:685:25 [INFO] [stderr] | [INFO] [stderr] 685 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [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/skiplist.rs:692:25 [INFO] [stderr] | [INFO] [stderr] 692 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/skiplist.rs:747:25 [INFO] [stderr] | [INFO] [stderr] 747 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/skiplist.rs:748:25 [INFO] [stderr] | [INFO] [stderr] 748 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [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/skiplist.rs:755:25 [INFO] [stderr] | [INFO] [stderr] 755 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/level_generator.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | total: total, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `total` [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/level_generator.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | p: p, [INFO] [stderr] | ^^^^ help: replace it with: `p` [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/skipnode.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | level: level, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `level` [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/ordered_skiplist.rs:1073:25 [INFO] [stderr] | [INFO] [stderr] 1073 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/ordered_skiplist.rs:1074:25 [INFO] [stderr] | [INFO] [stderr] 1074 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [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/ordered_skiplist.rs:1081:25 [INFO] [stderr] | [INFO] [stderr] 1081 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/skipmap.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | level: level, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `level` [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/skipmap.rs:973:25 [INFO] [stderr] | [INFO] [stderr] 973 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/skipmap.rs:982:25 [INFO] [stderr] | [INFO] [stderr] 982 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/skipmap.rs:983:25 [INFO] [stderr] | [INFO] [stderr] 983 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [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/skiplist.rs:684:25 [INFO] [stderr] | [INFO] [stderr] 684 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/skiplist.rs:685:25 [INFO] [stderr] | [INFO] [stderr] 685 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [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/skiplist.rs:692:25 [INFO] [stderr] | [INFO] [stderr] 692 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/skiplist.rs:747:25 [INFO] [stderr] | [INFO] [stderr] 747 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/skiplist.rs:748:25 [INFO] [stderr] | [INFO] [stderr] 748 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [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/skiplist.rs:755:25 [INFO] [stderr] | [INFO] [stderr] 755 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/ordered_skiplist.rs:520:13 [INFO] [stderr] | [INFO] [stderr] 520 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: unneeded return statement [INFO] [stderr] --> src/ordered_skiplist.rs:520:13 [INFO] [stderr] | [INFO] [stderr] 520 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/skipnode.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | / if let &Some(ref v) = &self.value { [INFO] [stderr] 97 | | write!(f, "{}", v) [INFO] [stderr] 98 | | } else { [INFO] [stderr] 99 | | Ok(()) [INFO] [stderr] 100 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 96 | if let Some(ref v) = self.value { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:204:62 [INFO] [stderr] | [INFO] [stderr] 204 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:302:73 [INFO] [stderr] | [INFO] [stderr] 302 | let mut insert_node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ordered_skiplist.rs:425:30 [INFO] [stderr] | [INFO] [stderr] 425 | pub fn get(&self, index: &usize) -> Option<&T> { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `usize` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/ordered_skiplist.rs:427:12 [INFO] [stderr] | [INFO] [stderr] 427 | if index < &len { [INFO] [stderr] | ^^^^^^^^---- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `len` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:548:66 [INFO] [stderr] | [INFO] [stderr] 548 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/ordered_skiplist.rs:572:25 [INFO] [stderr] | [INFO] [stderr] 572 | / if let &Some(ref next_value) = &(*next).value { [INFO] [stderr] 573 | | match (self.compare)(next_value, value) { [INFO] [stderr] 574 | | Ordering::Less => { [INFO] [stderr] 575 | | node = next; [INFO] [stderr] ... | [INFO] [stderr] 587 | | } [INFO] [stderr] 588 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 572 | if let Some(ref next_value) = (*next).value { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:657:66 [INFO] [stderr] | [INFO] [stderr] 657 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ordered_skiplist.rs:748:43 [INFO] [stderr] | [INFO] [stderr] 748 | pub fn remove_index(&mut self, index: &usize) -> T { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/ordered_skiplist.rs:750:16 [INFO] [stderr] | [INFO] [stderr] 750 | if index >= &self.len() { [INFO] [stderr] | ^^^^^^^^^----------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `self.len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/ordered_skiplist.rs:759:27 [INFO] [stderr] | [INFO] [stderr] 759 | while &(index_sum + (*node).links_len[lvl]) < index { [INFO] [stderr] | -------------------------------------^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `(index_sum + (*node).links_len[lvl])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:812:70 [INFO] [stderr] | [INFO] [stderr] 812 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:875:70 [INFO] [stderr] | [INFO] [stderr] 875 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: defining a method called `into_iter` on this type; consider implementing the `std::iter::IntoIterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/ordered_skiplist.rs:941:5 [INFO] [stderr] | [INFO] [stderr] 941 | / pub fn into_iter(mut self) -> IntoIter { [INFO] [stderr] 942 | | IntoIter { [INFO] [stderr] 943 | | head: unsafe { mem::transmute_copy(&mut self.head) }, [INFO] [stderr] 944 | | end: self.get_last() as *mut SkipNode, [INFO] [stderr] ... | [INFO] [stderr] 947 | | } [INFO] [stderr] 948 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:943:48 [INFO] [stderr] | [INFO] [stderr] 943 | head: unsafe { mem::transmute_copy(&mut self.head) }, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/ordered_skiplist.rs:1225:21 [INFO] [stderr] | [INFO] [stderr] 1225 | / if let &Some(ref next_value) = &(*next).value { [INFO] [stderr] 1226 | | match (self.compare)(next_value, value) { [INFO] [stderr] 1227 | | Ordering::Less => node = next, [INFO] [stderr] 1228 | | Ordering::Equal => { [INFO] [stderr] ... | [INFO] [stderr] 1235 | | panic!("Encountered a value-less node."); [INFO] [stderr] 1236 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1225 | if let Some(ref next_value) = (*next).value { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/ordered_skiplist.rs:1285:17 [INFO] [stderr] | [INFO] [stderr] 1285 | / if let &Some(ref v) = &(*node).value { [INFO] [stderr] 1286 | | value = format!("> [{:?}]", v); [INFO] [stderr] 1287 | | } else { [INFO] [stderr] 1288 | | value = format!("> []"); [INFO] [stderr] 1289 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1285 | if let Some(ref v) = (*node).value { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/ordered_skiplist.rs:1288:29 [INFO] [stderr] | [INFO] [stderr] 1288 | value = format!("> []"); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"> []".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/ordered_skiplist.rs:1297:21 [INFO] [stderr] | [INFO] [stderr] 1297 | / let mut value_len: String; [INFO] [stderr] 1298 | | if lvl <= (*node).level { [INFO] [stderr] 1299 | | value_len = format!("{} -{}-", value, (*node).links_len[lvl]); [INFO] [stderr] 1300 | | } else { [INFO] [stderr] 1301 | | value_len = format!("{} -", value); [INFO] [stderr] 1302 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let value_len = if lvl <= (*node).level { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/ordered_skiplist.rs:1370:5 [INFO] [stderr] | [INFO] [stderr] 1370 | / fn ne(&self, other: &OrderedSkipList) -> bool { [INFO] [stderr] 1371 | | self.len != other.len || self.iter().ne(other) [INFO] [stderr] 1372 | | } [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: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skipmap.rs:193:69 [INFO] [stderr] | [INFO] [stderr] 193 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skipmap.rs:671:69 [INFO] [stderr] | [INFO] [stderr] 671 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/skipmap.rs:765:43 [INFO] [stderr] | [INFO] [stderr] 765 | pub fn remove_index(&mut self, index: &usize) -> (K, V) { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/skipmap.rs:767:16 [INFO] [stderr] | [INFO] [stderr] 767 | if index >= &self.len() { [INFO] [stderr] | ^^^^^^^^^----------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `self.len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/skipmap.rs:776:27 [INFO] [stderr] | [INFO] [stderr] 776 | while &(index_sum + (*node).links_len[lvl]) < index { [INFO] [stderr] | -------------------------------------^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `(index_sum + (*node).links_len[lvl])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: defining a method called `into_iter` on this type; consider implementing the `std::iter::IntoIterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/skipmap.rs:818:5 [INFO] [stderr] | [INFO] [stderr] 818 | / pub fn into_iter(mut self) -> IntoIter { [INFO] [stderr] 819 | | IntoIter { [INFO] [stderr] 820 | | head: unsafe { mem::transmute_copy(&mut self.head) }, [INFO] [stderr] 821 | | end: self.get_last() as *mut SkipNode, [INFO] [stderr] ... | [INFO] [stderr] 824 | | } [INFO] [stderr] 825 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skipmap.rs:820:48 [INFO] [stderr] | [INFO] [stderr] 820 | head: unsafe { mem::transmute_copy(&mut self.head) }, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/skipmap.rs:1134:21 [INFO] [stderr] | [INFO] [stderr] 1134 | / if let &Some(ref next_key) = &(*next).key { [INFO] [stderr] 1135 | | match next_key.borrow().cmp(key) { [INFO] [stderr] 1136 | | Ordering::Less => node = next, [INFO] [stderr] 1137 | | Ordering::Equal => return next, [INFO] [stderr] ... | [INFO] [stderr] 1141 | | panic!("Encountered a value-less node."); [INFO] [stderr] 1142 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1134 | if let Some(ref next_key) = (*next).key { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/skipmap.rs:1196:29 [INFO] [stderr] | [INFO] [stderr] 1196 | value = format!("> ()"); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"> ()".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/skipmap.rs:1205:21 [INFO] [stderr] | [INFO] [stderr] 1205 | / let mut value_len: String; [INFO] [stderr] 1206 | | if lvl <= (*node).level { [INFO] [stderr] 1207 | | value_len = format!("{} -{}-", value, (*node).links_len[lvl]); [INFO] [stderr] 1208 | | } else { [INFO] [stderr] 1209 | | value_len = format!("{} -", value); [INFO] [stderr] 1210 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let value_len = if lvl <= (*node).level { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/skipmap.rs:1281:5 [INFO] [stderr] | [INFO] [stderr] 1281 | / fn ne(&self, other: &SkipMap) -> bool { [INFO] [stderr] 1282 | | self.len() == other.len() || self.iter().map(|x| x.0).ne(other.iter().map(|x| x.0)) || [INFO] [stderr] 1283 | | self.iter().map(|x| x.1).ne(other.iter().map(|x| x.1)) [INFO] [stderr] 1284 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skiplist.rs:167:66 [INFO] [stderr] | [INFO] [stderr] 167 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skiplist.rs:532:70 [INFO] [stderr] | [INFO] [stderr] 532 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: defining a method called `into_iter` on this type; consider implementing the `std::iter::IntoIterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/skiplist.rs:586:5 [INFO] [stderr] | [INFO] [stderr] 586 | / pub fn into_iter(mut self) -> IntoIter { [INFO] [stderr] 587 | | IntoIter { [INFO] [stderr] 588 | | head: unsafe { mem::transmute_copy(&mut self.head) }, [INFO] [stderr] 589 | | end: self.get_last() as *mut SkipNode, [INFO] [stderr] ... | [INFO] [stderr] 592 | | } [INFO] [stderr] 593 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skiplist.rs:588:48 [INFO] [stderr] | [INFO] [stderr] 588 | head: unsafe { mem::transmute_copy(&mut self.head) }, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skiplist.rs:816:70 [INFO] [stderr] | [INFO] [stderr] 816 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/skiplist.rs:1026:17 [INFO] [stderr] | [INFO] [stderr] 1026 | / if let &Some(ref v) = &(*node).value { [INFO] [stderr] 1027 | | value = format!("> [{:?}]", v); [INFO] [stderr] 1028 | | } else { [INFO] [stderr] 1029 | | value = format!("> []"); [INFO] [stderr] 1030 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1026 | if let Some(ref v) = (*node).value { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/skiplist.rs:1029:29 [INFO] [stderr] | [INFO] [stderr] 1029 | value = format!("> []"); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"> []".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/skiplist.rs:1038:21 [INFO] [stderr] | [INFO] [stderr] 1038 | / let mut value_len: String; [INFO] [stderr] 1039 | | if lvl <= (*node).level { [INFO] [stderr] 1040 | | value_len = format!("{} -{}-", value, (*node).links_len[lvl]); [INFO] [stderr] 1041 | | } else { [INFO] [stderr] 1042 | | value_len = format!("{} -", value); [INFO] [stderr] 1043 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let value_len = if lvl <= (*node).level { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/skiplist.rs:1111:5 [INFO] [stderr] | [INFO] [stderr] 1111 | / fn ne(&self, other: &SkipList) -> bool { [INFO] [stderr] 1112 | | self.len != other.len || self.iter().eq(other) [INFO] [stderr] 1113 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/skipnode.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | / if let &Some(ref v) = &self.value { [INFO] [stderr] 97 | | write!(f, "{}", v) [INFO] [stderr] 98 | | } else { [INFO] [stderr] 99 | | Ok(()) [INFO] [stderr] 100 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 96 | if let Some(ref v) = self.value { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:204:62 [INFO] [stderr] | [INFO] [stderr] 204 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:302:73 [INFO] [stderr] | [INFO] [stderr] 302 | let mut insert_node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ordered_skiplist.rs:425:30 [INFO] [stderr] | [INFO] [stderr] 425 | pub fn get(&self, index: &usize) -> Option<&T> { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `usize` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/ordered_skiplist.rs:427:12 [INFO] [stderr] | [INFO] [stderr] 427 | if index < &len { [INFO] [stderr] | ^^^^^^^^---- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `len` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:548:66 [INFO] [stderr] | [INFO] [stderr] 548 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/ordered_skiplist.rs:572:25 [INFO] [stderr] | [INFO] [stderr] 572 | / if let &Some(ref next_value) = &(*next).value { [INFO] [stderr] 573 | | match (self.compare)(next_value, value) { [INFO] [stderr] 574 | | Ordering::Less => { [INFO] [stderr] 575 | | node = next; [INFO] [stderr] ... | [INFO] [stderr] 587 | | } [INFO] [stderr] 588 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 572 | if let Some(ref next_value) = (*next).value { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:657:66 [INFO] [stderr] | [INFO] [stderr] 657 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ordered_skiplist.rs:748:43 [INFO] [stderr] | [INFO] [stderr] 748 | pub fn remove_index(&mut self, index: &usize) -> T { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/ordered_skiplist.rs:750:16 [INFO] [stderr] | [INFO] [stderr] 750 | if index >= &self.len() { [INFO] [stderr] | ^^^^^^^^^----------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `self.len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/ordered_skiplist.rs:759:27 [INFO] [stderr] | [INFO] [stderr] 759 | while &(index_sum + (*node).links_len[lvl]) < index { [INFO] [stderr] | -------------------------------------^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `(index_sum + (*node).links_len[lvl])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:812:70 [INFO] [stderr] | [INFO] [stderr] 812 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:875:70 [INFO] [stderr] | [INFO] [stderr] 875 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: defining a method called `into_iter` on this type; consider implementing the `std::iter::IntoIterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/ordered_skiplist.rs:941:5 [INFO] [stderr] | [INFO] [stderr] 941 | / pub fn into_iter(mut self) -> IntoIter { [INFO] [stderr] 942 | | IntoIter { [INFO] [stderr] 943 | | head: unsafe { mem::transmute_copy(&mut self.head) }, [INFO] [stderr] 944 | | end: self.get_last() as *mut SkipNode, [INFO] [stderr] ... | [INFO] [stderr] 947 | | } [INFO] [stderr] 948 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/ordered_skiplist.rs:943:48 [INFO] [stderr] | [INFO] [stderr] 943 | head: unsafe { mem::transmute_copy(&mut self.head) }, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/ordered_skiplist.rs:1225:21 [INFO] [stderr] | [INFO] [stderr] 1225 | / if let &Some(ref next_value) = &(*next).value { [INFO] [stderr] 1226 | | match (self.compare)(next_value, value) { [INFO] [stderr] 1227 | | Ordering::Less => node = next, [INFO] [stderr] 1228 | | Ordering::Equal => { [INFO] [stderr] ... | [INFO] [stderr] 1235 | | panic!("Encountered a value-less node."); [INFO] [stderr] 1236 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1225 | if let Some(ref next_value) = (*next).value { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/ordered_skiplist.rs:1285:17 [INFO] [stderr] | [INFO] [stderr] 1285 | / if let &Some(ref v) = &(*node).value { [INFO] [stderr] 1286 | | value = format!("> [{:?}]", v); [INFO] [stderr] 1287 | | } else { [INFO] [stderr] 1288 | | value = format!("> []"); [INFO] [stderr] 1289 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1285 | if let Some(ref v) = (*node).value { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/ordered_skiplist.rs:1288:29 [INFO] [stderr] | [INFO] [stderr] 1288 | value = format!("> []"); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"> []".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/ordered_skiplist.rs:1297:21 [INFO] [stderr] | [INFO] [stderr] 1297 | / let mut value_len: String; [INFO] [stderr] 1298 | | if lvl <= (*node).level { [INFO] [stderr] 1299 | | value_len = format!("{} -{}-", value, (*node).links_len[lvl]); [INFO] [stderr] 1300 | | } else { [INFO] [stderr] 1301 | | value_len = format!("{} -", value); [INFO] [stderr] 1302 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let value_len = if lvl <= (*node).level { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/ordered_skiplist.rs:1370:5 [INFO] [stderr] | [INFO] [stderr] 1370 | / fn ne(&self, other: &OrderedSkipList) -> bool { [INFO] [stderr] 1371 | | self.len != other.len || self.iter().ne(other) [INFO] [stderr] 1372 | | } [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/ordered_skiplist.rs:1672:20 [INFO] [stderr] | [INFO] [stderr] 1672 | test(size, sl.iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/ordered_skiplist.rs:1692:20 [INFO] [stderr] | [INFO] [stderr] 1692 | test(size, sl.iter().rev().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.iter().rev().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/ordered_skiplist.rs:1717:20 [INFO] [stderr] | [INFO] [stderr] 1717 | test(size, sl.iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/ordered_skiplist.rs:1741:30 [INFO] [stderr] | [INFO] [stderr] 1741 | let mut values = sl.range(min, max).map(|&i| i); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.range(min, max).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/ordered_skiplist.rs:1765:34 [INFO] [stderr] | [INFO] [stderr] 1765 | let mut values = sl.range(Included(&i), Included(&j)).map(|&i| i); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.range(Included(&i), Included(&j)).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ordered_skiplist.rs:1766:35 [INFO] [stderr] | [INFO] [stderr] 1766 | let mut expects = i..(j + 1); [INFO] [stderr] | ^^^^^^^^^^ help: use: `i..=j` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `sl` [INFO] [stderr] --> src/ordered_skiplist.rs:1782:18 [INFO] [stderr] | [INFO] [stderr] 1782 | for i in 0..size { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 1782 | for (i, ) in sl.iter().enumerate().take(size) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skipmap.rs:193:69 [INFO] [stderr] | [INFO] [stderr] 193 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skipmap.rs:671:69 [INFO] [stderr] | [INFO] [stderr] 671 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/skipmap.rs:765:43 [INFO] [stderr] | [INFO] [stderr] 765 | pub fn remove_index(&mut self, index: &usize) -> (K, V) { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/skipmap.rs:767:16 [INFO] [stderr] | [INFO] [stderr] 767 | if index >= &self.len() { [INFO] [stderr] | ^^^^^^^^^----------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `self.len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/skipmap.rs:776:27 [INFO] [stderr] | [INFO] [stderr] 776 | while &(index_sum + (*node).links_len[lvl]) < index { [INFO] [stderr] | -------------------------------------^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `(index_sum + (*node).links_len[lvl])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: defining a method called `into_iter` on this type; consider implementing the `std::iter::IntoIterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/skipmap.rs:818:5 [INFO] [stderr] | [INFO] [stderr] 818 | / pub fn into_iter(mut self) -> IntoIter { [INFO] [stderr] 819 | | IntoIter { [INFO] [stderr] 820 | | head: unsafe { mem::transmute_copy(&mut self.head) }, [INFO] [stderr] 821 | | end: self.get_last() as *mut SkipNode, [INFO] [stderr] ... | [INFO] [stderr] 824 | | } [INFO] [stderr] 825 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skipmap.rs:820:48 [INFO] [stderr] | [INFO] [stderr] 820 | head: unsafe { mem::transmute_copy(&mut self.head) }, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/skipmap.rs:1134:21 [INFO] [stderr] | [INFO] [stderr] 1134 | / if let &Some(ref next_key) = &(*next).key { [INFO] [stderr] 1135 | | match next_key.borrow().cmp(key) { [INFO] [stderr] 1136 | | Ordering::Less => node = next, [INFO] [stderr] 1137 | | Ordering::Equal => return next, [INFO] [stderr] ... | [INFO] [stderr] 1141 | | panic!("Encountered a value-less node."); [INFO] [stderr] 1142 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1134 | if let Some(ref next_key) = (*next).key { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/skipmap.rs:1196:29 [INFO] [stderr] | [INFO] [stderr] 1196 | value = format!("> ()"); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"> ()".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/skipmap.rs:1205:21 [INFO] [stderr] | [INFO] [stderr] 1205 | / let mut value_len: String; [INFO] [stderr] 1206 | | if lvl <= (*node).level { [INFO] [stderr] 1207 | | value_len = format!("{} -{}-", value, (*node).links_len[lvl]); [INFO] [stderr] 1208 | | } else { [INFO] [stderr] 1209 | | value_len = format!("{} -", value); [INFO] [stderr] 1210 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let value_len = if lvl <= (*node).level { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/skipmap.rs:1281:5 [INFO] [stderr] | [INFO] [stderr] 1281 | / fn ne(&self, other: &SkipMap) -> bool { [INFO] [stderr] 1282 | | self.len() == other.len() || self.iter().map(|x| x.0).ne(other.iter().map(|x| x.0)) || [INFO] [stderr] 1283 | | self.iter().map(|x| x.1).ne(other.iter().map(|x| x.1)) [INFO] [stderr] 1284 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/skipmap.rs:1886:35 [INFO] [stderr] | [INFO] [stderr] 1886 | let mut expects = i..(j + 1); [INFO] [stderr] | ^^^^^^^^^^ help: use: `i..=j` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `sm` [INFO] [stderr] --> src/skipmap.rs:1906:18 [INFO] [stderr] | [INFO] [stderr] 1906 | for i in 0..size { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 1906 | for (i, ) in sm.iter().enumerate().take(size) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skiplist.rs:167:66 [INFO] [stderr] | [INFO] [stderr] 167 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skiplist.rs:532:70 [INFO] [stderr] | [INFO] [stderr] 532 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: defining a method called `into_iter` on this type; consider implementing the `std::iter::IntoIterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/skiplist.rs:586:5 [INFO] [stderr] | [INFO] [stderr] 586 | / pub fn into_iter(mut self) -> IntoIter { [INFO] [stderr] 587 | | IntoIter { [INFO] [stderr] 588 | | head: unsafe { mem::transmute_copy(&mut self.head) }, [INFO] [stderr] 589 | | end: self.get_last() as *mut SkipNode, [INFO] [stderr] ... | [INFO] [stderr] 592 | | } [INFO] [stderr] 593 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skiplist.rs:588:48 [INFO] [stderr] | [INFO] [stderr] 588 | head: unsafe { mem::transmute_copy(&mut self.head) }, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `mem::transmute_copy` doesn't need a mutable reference [INFO] [stderr] --> src/skiplist.rs:816:70 [INFO] [stderr] | [INFO] [stderr] 816 | let mut node: *mut SkipNode = mem::transmute_copy(&mut self.head); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/skiplist.rs:1026:17 [INFO] [stderr] | [INFO] [stderr] 1026 | / if let &Some(ref v) = &(*node).value { [INFO] [stderr] 1027 | | value = format!("> [{:?}]", v); [INFO] [stderr] 1028 | | } else { [INFO] [stderr] 1029 | | value = format!("> []"); [INFO] [stderr] 1030 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1026 | if let Some(ref v) = (*node).value { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/skiplist.rs:1029:29 [INFO] [stderr] | [INFO] [stderr] 1029 | value = format!("> []"); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"> []".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/skiplist.rs:1038:21 [INFO] [stderr] | [INFO] [stderr] 1038 | / let mut value_len: String; [INFO] [stderr] 1039 | | if lvl <= (*node).level { [INFO] [stderr] 1040 | | value_len = format!("{} -{}-", value, (*node).links_len[lvl]); [INFO] [stderr] 1041 | | } else { [INFO] [stderr] 1042 | | value_len = format!("{} -", value); [INFO] [stderr] 1043 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let value_len = if lvl <= (*node).level { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/skiplist.rs:1111:5 [INFO] [stderr] | [INFO] [stderr] 1111 | / fn ne(&self, other: &SkipList) -> bool { [INFO] [stderr] 1112 | | self.len != other.len || self.iter().eq(other) [INFO] [stderr] 1113 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/skiplist.rs:1463:20 [INFO] [stderr] | [INFO] [stderr] 1463 | test(size, sl.iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/skiplist.rs:1464:20 [INFO] [stderr] | [INFO] [stderr] 1464 | test(size, sl.iter_mut().map(|&mut i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.iter_mut().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/skiplist.rs:1484:20 [INFO] [stderr] | [INFO] [stderr] 1484 | test(size, sl.iter().rev().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.iter().rev().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/skiplist.rs:1485:20 [INFO] [stderr] | [INFO] [stderr] 1485 | test(size, sl.iter_mut().rev().map(|&mut i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.iter_mut().rev().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/skiplist.rs:1510:20 [INFO] [stderr] | [INFO] [stderr] 1510 | test(size, sl.iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/skiplist.rs:1511:20 [INFO] [stderr] | [INFO] [stderr] 1511 | test(size, sl.iter_mut().map(|&mut i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.iter_mut().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/skiplist.rs:1535:30 [INFO] [stderr] | [INFO] [stderr] 1535 | let mut values = sl.range(min, max).map(|&i| i); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.range(min, max).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/skiplist.rs:1559:34 [INFO] [stderr] | [INFO] [stderr] 1559 | let mut values = sl.range(Included(i), Included(j)).map(|&i| i); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.range(Included(i), Included(j)).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/skiplist.rs:1560:35 [INFO] [stderr] | [INFO] [stderr] 1560 | let mut expects = i..(j + 1); [INFO] [stderr] | ^^^^^^^^^^ help: use: `i..=j` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/skiplist.rs:1572:34 [INFO] [stderr] | [INFO] [stderr] 1572 | let mut values = sl.range(Included(i), Included(j)).rev().map(|&i| i); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `sl.range(Included(i), Included(j)).rev().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/skiplist.rs:1573:35 [INFO] [stderr] | [INFO] [stderr] 1573 | let mut expects = (i..(j + 1)).rev(); [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `(i..=j)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `sl` [INFO] [stderr] --> src/skiplist.rs:1589:18 [INFO] [stderr] | [INFO] [stderr] 1589 | for i in 0..size { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 1589 | for (i, ) in sl.iter().enumerate().take(size) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.87s [INFO] running `"docker" "inspect" "42fc9841269464119f43d8872384611346325754b77f7be76ff7a563e2b37a3b"` [INFO] running `"docker" "rm" "-f" "42fc9841269464119f43d8872384611346325754b77f7be76ff7a563e2b37a3b"` [INFO] [stdout] 42fc9841269464119f43d8872384611346325754b77f7be76ff7a563e2b37a3b