[INFO] crate stable_bst 0.2.0 is already in cache [INFO] extracting crate stable_bst 0.2.0 into work/ex/clippy-test-run/sources/stable/reg/stable_bst/0.2.0 [INFO] extracting crate stable_bst 0.2.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/stable_bst/0.2.0 [INFO] validating manifest of stable_bst-0.2.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 stable_bst-0.2.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 stable_bst-0.2.0 [INFO] finished frobbing stable_bst-0.2.0 [INFO] frobbed toml for stable_bst-0.2.0 written to work/ex/clippy-test-run/sources/stable/reg/stable_bst/0.2.0/Cargo.toml [INFO] started frobbing stable_bst-0.2.0 [INFO] finished frobbing stable_bst-0.2.0 [INFO] frobbed toml for stable_bst-0.2.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/stable_bst/0.2.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 stable_bst-0.2.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/stable_bst/0.2.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] 1f71705642d77c4acb1f377cf320210b72ac4503f75f78ae965847c8129a86ee [INFO] running `"docker" "start" "-a" "1f71705642d77c4acb1f377cf320210b72ac4503f75f78ae965847c8129a86ee"` [INFO] [stderr] Checking compare v0.0.6 [INFO] [stderr] Checking bit-set v0.5.0 [INFO] [stderr] Checking ordered_iter v0.1.1 [INFO] [stderr] Checking stable_bst v0.2.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/map.rs:225:13 [INFO] [stderr] | [INFO] [stderr] 225 | cmp: cmp, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cmp` [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/map.rs:1069:25 [INFO] [stderr] | [INFO] [stderr] 1069 | 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/map.rs:1070:25 [INFO] [stderr] | [INFO] [stderr] 1070 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/map.rs:1072:25 [INFO] [stderr] | [INFO] [stderr] 1072 | right: right, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `right` [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/map.rs:1073:25 [INFO] [stderr] | [INFO] [stderr] 1073 | 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/map.rs:1149:13 [INFO] [stderr] | [INFO] [stderr] 1149 | 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/map.rs:1150:13 [INFO] [stderr] | [INFO] [stderr] 1150 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/map.rs:225:13 [INFO] [stderr] | [INFO] [stderr] 225 | cmp: cmp, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cmp` [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/map.rs:1069:25 [INFO] [stderr] | [INFO] [stderr] 1069 | 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/map.rs:1070:25 [INFO] [stderr] | [INFO] [stderr] 1070 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/map.rs:1072:25 [INFO] [stderr] | [INFO] [stderr] 1072 | right: right, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `right` [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/map.rs:1073:25 [INFO] [stderr] | [INFO] [stderr] 1073 | 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/map.rs:1149:13 [INFO] [stderr] | [INFO] [stderr] 1149 | 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/map.rs:1150:13 [INFO] [stderr] | [INFO] [stderr] 1150 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/map.rs:929:9 [INFO] [stderr] | [INFO] [stderr] 929 | / return self.stack.pop().map(|node| { [INFO] [stderr] 930 | | let next_node = if D::forward() { [INFO] [stderr] 931 | | &mut node.right [INFO] [stderr] 932 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 936 | | (&node.key, &mut node.value) [INFO] [stderr] 937 | | }); [INFO] [stderr] | |___________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 929 | self.stack.pop().map(|node| { [INFO] [stderr] 930 | let next_node = if D::forward() { [INFO] [stderr] 931 | &mut node.right [INFO] [stderr] 932 | } else { [INFO] [stderr] 933 | &mut node.left [INFO] [stderr] 934 | }; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/map.rs:1345:5 [INFO] [stderr] | [INFO] [stderr] 1345 | / return match node.take() { [INFO] [stderr] 1346 | | Some(b) => { [INFO] [stderr] 1347 | | let TreeNode { value, .. } = *b; [INFO] [stderr] 1348 | | Some(value) [INFO] [stderr] 1349 | | } [INFO] [stderr] 1350 | | None => panic!(), [INFO] [stderr] 1351 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 1345 | match node.take() { [INFO] [stderr] 1346 | Some(b) => { [INFO] [stderr] 1347 | let TreeNode { value, .. } = *b; [INFO] [stderr] 1348 | Some(value) [INFO] [stderr] 1349 | } [INFO] [stderr] 1350 | None => panic!(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/map.rs:929:9 [INFO] [stderr] | [INFO] [stderr] 929 | / return self.stack.pop().map(|node| { [INFO] [stderr] 930 | | let next_node = if D::forward() { [INFO] [stderr] 931 | | &mut node.right [INFO] [stderr] 932 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 936 | | (&node.key, &mut node.value) [INFO] [stderr] 937 | | }); [INFO] [stderr] | |___________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 929 | self.stack.pop().map(|node| { [INFO] [stderr] 930 | let next_node = if D::forward() { [INFO] [stderr] 931 | &mut node.right [INFO] [stderr] 932 | } else { [INFO] [stderr] 933 | &mut node.left [INFO] [stderr] 934 | }; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/map.rs:1345:5 [INFO] [stderr] | [INFO] [stderr] 1345 | / return match node.take() { [INFO] [stderr] 1346 | | Some(b) => { [INFO] [stderr] 1347 | | let TreeNode { value, .. } = *b; [INFO] [stderr] 1348 | | Some(value) [INFO] [stderr] 1349 | | } [INFO] [stderr] 1350 | | None => panic!(), [INFO] [stderr] 1351 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 1345 | match node.take() { [INFO] [stderr] 1346 | Some(b) => { [INFO] [stderr] 1347 | let TreeNode { value, .. } = *b; [INFO] [stderr] 1348 | Some(value) [INFO] [stderr] 1349 | } [INFO] [stderr] 1350 | None => panic!(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::hash::SipHasher': use `std::collections::hash_map::DefaultHasher` instead [INFO] [stderr] --> src/set.rs:919:21 [INFO] [stderr] | [INFO] [stderr] 919 | let mut s = hash::SipHasher::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [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/map.rs:385:5 [INFO] [stderr] | [INFO] [stderr] 385 | / pub fn into_iter(self) -> IntoIter { [INFO] [stderr] 386 | | let TreeMap { root, length, .. } = self; [INFO] [stderr] 387 | | let stk = match root { [INFO] [stderr] 388 | | None => vec![], [INFO] [stderr] ... | [INFO] [stderr] 394 | | } [INFO] [stderr] 395 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/map.rs:760:13 [INFO] [stderr] | [INFO] [stderr] 760 | / match node { [INFO] [stderr] 761 | | &None => { [INFO] [stderr] 762 | | return RangeMut { [INFO] [stderr] 763 | | start: (unsafe { &mut *(self as *const Self as *mut Self) }).iter_mut_dir(), [INFO] [stderr] ... | [INFO] [stderr] 796 | | } [INFO] [stderr] 797 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 760 | match *node { [INFO] [stderr] 761 | None => { [INFO] [stderr] 762 | return RangeMut { [INFO] [stderr] 763 | start: (unsafe { &mut *(self as *const Self as *mut Self) }).iter_mut_dir(), [INFO] [stderr] 764 | end: (unsafe { &mut *(self as *const Self as *mut Self) }).iter_mut_dir(), [INFO] [stderr] 765 | empty: true, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:896:35 [INFO] [stderr] | [INFO] [stderr] 896 | pub struct Keys<'a, K: 'a, V: 'a>(iter::Map, fn((&'a K, &'a V)) -> &'a K>); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:899:37 [INFO] [stderr] | [INFO] [stderr] 899 | pub struct Values<'a, K: 'a, V: 'a>(iter::Map, [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 900 | | fn((&'a K, &'a V)) -> &'a V>); [INFO] [stderr] | |__________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:903:40 [INFO] [stderr] | [INFO] [stderr] 903 | pub struct ValuesMut<'a, K: 'a, V: 'a>(iter::Map, [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 904 | | fn((&'a K, &'a mut V)) -> &'a mut V>); [INFO] [stderr] | |_____________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [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/map.rs:1079:21 [INFO] [stderr] | [INFO] [stderr] 1079 | / match right { [INFO] [stderr] 1080 | | Some(b_right) => self.stack.push(*b_right), [INFO] [stderr] 1081 | | None => (), [INFO] [stderr] 1082 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Some(b_right) = right { self.stack.push(*b_right) }` [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] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/map.rs:1159:21 [INFO] [stderr] | [INFO] [stderr] 1159 | fn skew(node: &mut Box>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut TreeNode` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/map.rs:1170:22 [INFO] [stderr] | [INFO] [stderr] 1170 | fn split(node: &mut Box>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut TreeNode` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/map.rs:1263:30 [INFO] [stderr] | [INFO] [stderr] 1263 | fn heir_swap(node: &mut Box>, child: &mut Option>>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut TreeNode` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [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/set.rs:195:5 [INFO] [stderr] | [INFO] [stderr] 195 | / pub fn into_iter(self) -> IntoIter { [INFO] [stderr] 196 | | fn first((a, _): (A, B)) -> A { [INFO] [stderr] 197 | | a [INFO] [stderr] 198 | | } [INFO] [stderr] ... | [INFO] [stderr] 201 | | IntoIter(self.map.into_iter().map(first)) [INFO] [stderr] 202 | | } [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/set.rs:577:24 [INFO] [stderr] | [INFO] [stderr] 577 | pub struct IntoIter(iter::Map, fn((T, ())) -> T>); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/set.rs:731:9 [INFO] [stderr] | [INFO] [stderr] 731 | / loop { [INFO] [stderr] 732 | | match cmp_opt(self.a.peek(), self.b.peek(), Greater, Less, self.cmp) { [INFO] [stderr] 733 | | Less => return self.a.next(), [INFO] [stderr] 734 | | Equal => { [INFO] [stderr] ... | [INFO] [stderr] 739 | | } [INFO] [stderr] 740 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `stable_bst`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: use of deprecated item 'std::hash::SipHasher::new': use `std::collections::hash_map::DefaultHasher` instead [INFO] [stderr] --> src/set.rs:919:21 [INFO] [stderr] | [INFO] [stderr] 919 | let mut s = hash::SipHasher::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [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/map.rs:385:5 [INFO] [stderr] | [INFO] [stderr] 385 | / pub fn into_iter(self) -> IntoIter { [INFO] [stderr] 386 | | let TreeMap { root, length, .. } = self; [INFO] [stderr] 387 | | let stk = match root { [INFO] [stderr] 388 | | None => vec![], [INFO] [stderr] ... | [INFO] [stderr] 394 | | } [INFO] [stderr] 395 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/map.rs:760:13 [INFO] [stderr] | [INFO] [stderr] 760 | / match node { [INFO] [stderr] 761 | | &None => { [INFO] [stderr] 762 | | return RangeMut { [INFO] [stderr] 763 | | start: (unsafe { &mut *(self as *const Self as *mut Self) }).iter_mut_dir(), [INFO] [stderr] ... | [INFO] [stderr] 796 | | } [INFO] [stderr] 797 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 760 | match *node { [INFO] [stderr] 761 | None => { [INFO] [stderr] 762 | return RangeMut { [INFO] [stderr] 763 | start: (unsafe { &mut *(self as *const Self as *mut Self) }).iter_mut_dir(), [INFO] [stderr] 764 | end: (unsafe { &mut *(self as *const Self as *mut Self) }).iter_mut_dir(), [INFO] [stderr] 765 | empty: true, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:896:35 [INFO] [stderr] | [INFO] [stderr] 896 | pub struct Keys<'a, K: 'a, V: 'a>(iter::Map, fn((&'a K, &'a V)) -> &'a K>); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:899:37 [INFO] [stderr] | [INFO] [stderr] 899 | pub struct Values<'a, K: 'a, V: 'a>(iter::Map, [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 900 | | fn((&'a K, &'a V)) -> &'a V>); [INFO] [stderr] | |__________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:903:40 [INFO] [stderr] | [INFO] [stderr] 903 | pub struct ValuesMut<'a, K: 'a, V: 'a>(iter::Map, [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 904 | | fn((&'a K, &'a mut V)) -> &'a mut V>); [INFO] [stderr] | |_____________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [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/map.rs:1079:21 [INFO] [stderr] | [INFO] [stderr] 1079 | / match right { [INFO] [stderr] 1080 | | Some(b_right) => self.stack.push(*b_right), [INFO] [stderr] 1081 | | None => (), [INFO] [stderr] 1082 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Some(b_right) = right { self.stack.push(*b_right) }` [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] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/map.rs:1159:21 [INFO] [stderr] | [INFO] [stderr] 1159 | fn skew(node: &mut Box>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut TreeNode` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/map.rs:1170:22 [INFO] [stderr] | [INFO] [stderr] 1170 | fn split(node: &mut Box>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut TreeNode` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/map.rs:1263:30 [INFO] [stderr] | [INFO] [stderr] 1263 | fn heir_swap(node: &mut Box>, child: &mut Option>>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut TreeNode` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/map.rs:1533:18 [INFO] [stderr] | [INFO] [stderr] 1533 | let k1 = "foo".as_bytes(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"foo"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/map.rs:1534:18 [INFO] [stderr] | [INFO] [stderr] 1534 | let k2 = "bar".as_bytes(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"bar"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/map.rs:1535:18 [INFO] [stderr] | [INFO] [stderr] 1535 | let v1 = "baz".as_bytes(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"baz"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/map.rs:1536:18 [INFO] [stderr] | [INFO] [stderr] 1536 | let v2 = "foobar".as_bytes(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"foobar"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/map.rs:1538:18 [INFO] [stderr] | [INFO] [stderr] 1538 | m.insert(k1.clone(), v1.clone()); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 1538 | m.insert(&(*k1).clone(), v1.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 1538 | m.insert(&[u8]::clone(k1), v1.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/map.rs:1538:30 [INFO] [stderr] | [INFO] [stderr] 1538 | m.insert(k1.clone(), v1.clone()); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 1538 | m.insert(k1.clone(), &(*v1).clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 1538 | m.insert(k1.clone(), &[u8]::clone(v1)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/map.rs:1539:18 [INFO] [stderr] | [INFO] [stderr] 1539 | m.insert(k2.clone(), v2.clone()); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 1539 | m.insert(&(*k2).clone(), v2.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 1539 | m.insert(&[u8]::clone(k2), v2.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/map.rs:1539:30 [INFO] [stderr] | [INFO] [stderr] 1539 | m.insert(k2.clone(), v2.clone()); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 1539 | m.insert(k2.clone(), &(*v2).clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 1539 | m.insert(k2.clone(), &[u8]::clone(v2)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/map.rs:1565:74 [INFO] [stderr] | [INFO] [stderr] 1565 | fn check_left(node: &Option>>, parent: &Box>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&TreeNode` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/map.rs:1578:39 [INFO] [stderr] | [INFO] [stderr] 1578 | parent: &Box>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&TreeNode` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [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/map.rs:1597:9 [INFO] [stderr] | [INFO] [stderr] 1597 | / match map.root { [INFO] [stderr] 1598 | | Some(ref r) => { [INFO] [stderr] 1599 | | check_left(&r.left, r); [INFO] [stderr] 1600 | | check_right(&r.right, r, false); [INFO] [stderr] 1601 | | } [INFO] [stderr] 1602 | | None => (), [INFO] [stderr] 1603 | | } [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] 1597 | if let Some(ref r) = map.root { [INFO] [stderr] 1598 | check_left(&r.left, r); [INFO] [stderr] 1599 | check_right(&r.right, r, false); [INFO] [stderr] 1600 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/map.rs:1882:30 [INFO] [stderr] | [INFO] [stderr] 1882 | let keys: Vec = map.keys().map(|&k| k).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `map.keys().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/map.rs:1890:22 [INFO] [stderr] | [INFO] [stderr] 1890 | let values = map.values().map(|&v| v).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `map.values().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/map.rs:1901:22 [INFO] [stderr] | [INFO] [stderr] 1901 | let values = map.values().map(|&v| v).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `map.values().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: This binary expression can be simplified [INFO] [stderr] --> src/map.rs:1946:17 [INFO] [stderr] | [INFO] [stderr] 1946 | assert!(a <= b && a >= b); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `a == b` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_comparisons)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_comparisons [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/map.rs:2017:38 [INFO] [stderr] | [INFO] [stderr] 2017 | let map: TreeMap = xs.iter().map(|&x| x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `xs.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: statement with no effect [INFO] [stderr] --> src/map.rs:2044:9 [INFO] [stderr] | [INFO] [stderr] 2044 | map[&4]; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::no_effect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#no_effect [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/set.rs:195:5 [INFO] [stderr] | [INFO] [stderr] 195 | / pub fn into_iter(self) -> IntoIter { [INFO] [stderr] 196 | | fn first((a, _): (A, B)) -> A { [INFO] [stderr] 197 | | a [INFO] [stderr] 198 | | } [INFO] [stderr] ... | [INFO] [stderr] 201 | | IntoIter(self.map.into_iter().map(first)) [INFO] [stderr] 202 | | } [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/set.rs:577:24 [INFO] [stderr] | [INFO] [stderr] 577 | pub struct IntoIter(iter::Map, fn((T, ())) -> T>); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/set.rs:731:9 [INFO] [stderr] | [INFO] [stderr] 731 | / loop { [INFO] [stderr] 732 | | match cmp_opt(self.a.peek(), self.b.peek(), Greater, Less, self.cmp) { [INFO] [stderr] 733 | | Less => return self.a.next(), [INFO] [stderr] 734 | | Equal => { [INFO] [stderr] ... | [INFO] [stderr] 739 | | } [INFO] [stderr] 740 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: the variable `n` is used as a loop counter. Consider using `for (n, item) in m.iter().enumerate()` or similar iterators [INFO] [stderr] --> src/set.rs:1000:18 [INFO] [stderr] | [INFO] [stderr] 1000 | for x in m.iter() { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: the variable `n` is used as a loop counter. Consider using `for (n, item) in s.into_iter().enumerate()` or similar iterators [INFO] [stderr] --> src/set.rs:1011:18 [INFO] [stderr] | [INFO] [stderr] 1011 | for x in s.into_iter() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set.rs:1082:26 [INFO] [stderr] | [INFO] [stderr] 1082 | |x, y| x.intersection(y).map(|v| *v).collect::>()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `x.intersection(y).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/set.rs:1101:26 [INFO] [stderr] | [INFO] [stderr] 1101 | |x, y| x.difference(y).map(|v| *v).collect::>()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `x.difference(y).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/set.rs:1119:26 [INFO] [stderr] | [INFO] [stderr] 1119 | |x, y| x.symmetric_difference(y).map(|v| *v).collect::>()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `x.symmetric_difference(y).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/set.rs:1136:26 [INFO] [stderr] | [INFO] [stderr] 1136 | |x, y| x.union(y).map(|v| *v).collect::>()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `x.union(y).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/set.rs:1211:33 [INFO] [stderr] | [INFO] [stderr] 1211 | let set: TreeSet = xs.iter().map(|&x| x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `xs.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] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `stable_bst`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "1f71705642d77c4acb1f377cf320210b72ac4503f75f78ae965847c8129a86ee"` [INFO] running `"docker" "rm" "-f" "1f71705642d77c4acb1f377cf320210b72ac4503f75f78ae965847c8129a86ee"` [INFO] [stdout] 1f71705642d77c4acb1f377cf320210b72ac4503f75f78ae965847c8129a86ee