[INFO] crate immutable 0.1.1 is already in cache [INFO] extracting crate immutable 0.1.1 into work/ex/clippy-test-run/sources/stable/reg/immutable/0.1.1 [INFO] extracting crate immutable 0.1.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/immutable/0.1.1 [INFO] validating manifest of immutable-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 immutable-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 immutable-0.1.1 [INFO] finished frobbing immutable-0.1.1 [INFO] frobbed toml for immutable-0.1.1 written to work/ex/clippy-test-run/sources/stable/reg/immutable/0.1.1/Cargo.toml [INFO] started frobbing immutable-0.1.1 [INFO] finished frobbing immutable-0.1.1 [INFO] frobbed toml for immutable-0.1.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/immutable/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 immutable-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-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/immutable/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] 648d2c6b6f9eea7e49c5e71f588dd7917878dd1821aa8fa67d767b4febed5219 [INFO] running `"docker" "start" "-a" "648d2c6b6f9eea7e49c5e71f588dd7917878dd1821aa8fa67d767b4febed5219"` [INFO] [stderr] Checking immutable v0.1.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/map.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | key: key, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [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:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | val: val [INFO] [stderr] | ^^^^^^^^ help: replace it with: `val` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/map.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | key: key, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [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:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | val: val [INFO] [stderr] | ^^^^^^^^ help: replace it with: `val` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::vec::IntoIter` [INFO] [stderr] --> src/list.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::vec::IntoIter; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree/binary_tree.rs:353:9 [INFO] [stderr] | [INFO] [stderr] 353 | return Some(node.value()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(node.value())` [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: unused import: `std::vec::IntoIter` [INFO] [stderr] --> src/list.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::vec::IntoIter; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree/binary_tree.rs:353:9 [INFO] [stderr] | [INFO] [stderr] 353 | return Some(node.value()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(node.value())` [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 all patterns [INFO] [stderr] --> src/list.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | / match self { [INFO] [stderr] 44 | | &List::Empty => true, [INFO] [stderr] 45 | | &List::Cons(_, _) => false, [INFO] [stderr] 46 | | } [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] 43 | match *self { [INFO] [stderr] 44 | List::Empty => true, [INFO] [stderr] 45 | List::Cons(_, _) => false, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | / match self { [INFO] [stderr] 51 | | &List::Empty => panic!("Head called on empty list"), [INFO] [stderr] 52 | | &List::Cons(ref head, _) => head.clone(), [INFO] [stderr] 53 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 50 | match *self { [INFO] [stderr] 51 | List::Empty => panic!("Head called on empty list"), [INFO] [stderr] 52 | List::Cons(ref head, _) => head.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | / match self { [INFO] [stderr] 58 | | &List::Empty => panic!("Tail called on empy list"), [INFO] [stderr] 59 | | &List::Cons(_, ref tail) => tail.clone(), [INFO] [stderr] 60 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 57 | match *self { [INFO] [stderr] 58 | List::Empty => panic!("Tail called on empy list"), [INFO] [stderr] 59 | List::Cons(_, ref tail) => tail.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | / match self { [INFO] [stderr] 65 | | &List::Empty => 0, [INFO] [stderr] 66 | | &List::Cons(_, ref tail) => 1 + tail.length(), [INFO] [stderr] 67 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 64 | match *self { [INFO] [stderr] 65 | List::Empty => 0, [INFO] [stderr] 66 | List::Cons(_, ref tail) => 1 + tail.length(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / match self { [INFO] [stderr] 71 | | &List::Empty => lst.borrow().clone(), [INFO] [stderr] 72 | | &List::Cons(ref head, ref tail) => List::Cons(head.clone(), tail.append(lst).into()), [INFO] [stderr] 73 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 70 | match *self { [INFO] [stderr] 71 | List::Empty => lst.borrow().clone(), [INFO] [stderr] 72 | List::Cons(ref head, ref tail) => List::Cons(head.clone(), tail.append(lst).into()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / match self { [INFO] [stderr] 78 | | &List::Empty => None, [INFO] [stderr] 79 | | &List::Cons(ref head, _) => Some(head.clone()), [INFO] [stderr] 80 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 77 | match *self { [INFO] [stderr] 78 | List::Empty => None, [INFO] [stderr] 79 | List::Cons(ref head, _) => Some(head.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | / match self { [INFO] [stderr] 85 | | &List::Empty => None, [INFO] [stderr] 86 | | &List::Cons(_, ref tail) => Some(tail.clone()), [INFO] [stderr] 87 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 84 | match *self { [INFO] [stderr] 85 | List::Empty => None, [INFO] [stderr] 86 | List::Cons(_, ref tail) => Some(tail.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | / match self { [INFO] [stderr] 100 | | &List::Empty => write!(f, ""), [INFO] [stderr] 101 | | &List::Cons(ref head, ref tail) => write!(f, "{:?}, {:?}", head.clone(), tail.clone()), [INFO] [stderr] 102 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 99 | match *self { [INFO] [stderr] 100 | List::Empty => write!(f, ""), [INFO] [stderr] 101 | List::Cons(ref head, ref tail) => write!(f, "{:?}, {:?}", head.clone(), tail.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | / match self.node.deref() { [INFO] [stderr] 143 | | &List::Empty => return None, [INFO] [stderr] 144 | | &List::Cons(ref head, ref tail) => { [INFO] [stderr] 145 | | tl = tail.clone(); [INFO] [stderr] 146 | | hd = head.clone(); [INFO] [stderr] 147 | | } [INFO] [stderr] 148 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 142 | match *self.node.deref() { [INFO] [stderr] 143 | List::Empty => return None, [INFO] [stderr] 144 | List::Cons(ref head, ref tail) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | / match self { [INFO] [stderr] 65 | | &BinaryTree::Empty => None, [INFO] [stderr] 66 | | &BinaryTree::Node(_, ref value, ref left, ref right) => [INFO] [stderr] 67 | | if value > &val { left.get(val) } [INFO] [stderr] 68 | | else if value < &val { right.get(val) } [INFO] [stderr] 69 | | else { Some(value.clone()) } [INFO] [stderr] 70 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 64 | match *self { [INFO] [stderr] 65 | BinaryTree::Empty => None, [INFO] [stderr] 66 | BinaryTree::Node(_, ref value, ref left, ref right) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/tree/binary_tree.rs:67:20 [INFO] [stderr] | [INFO] [stderr] 67 | if value > &val { left.get(val) } [INFO] [stderr] | ^^^^^^^^---- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `val` [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: taken reference of right operand [INFO] [stderr] --> src/tree/binary_tree.rs:68:25 [INFO] [stderr] | [INFO] [stderr] 68 | else if value < &val { right.get(val) } [INFO] [stderr] | ^^^^^^^^---- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `val` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | / match self { [INFO] [stderr] 79 | | &BinaryTree::Empty => BinaryTree::node(Color::Red, val, BinaryTree::Empty, BinaryTree::Empty), [INFO] [stderr] 80 | | &BinaryTree::Node(color, ref root, ref left, ref right) => { [INFO] [stderr] 81 | | if val > *root { BinaryTree::balance(color, root.clone(), left.deref().clone(), right.ins(val)) } [INFO] [stderr] ... | [INFO] [stderr] 84 | | } [INFO] [stderr] 85 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 78 | match *self { [INFO] [stderr] 79 | BinaryTree::Empty => BinaryTree::node(Color::Red, val, BinaryTree::Empty, BinaryTree::Empty), [INFO] [stderr] 80 | BinaryTree::Node(color, ref root, ref left, ref right) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match self { [INFO] [stderr] 112 | | &BinaryTree::Empty => BinaryTree::Empty, [INFO] [stderr] 113 | | &BinaryTree::Node(ref color, ref root, ref left, ref right) => { [INFO] [stderr] 114 | | if root > val.borrow() { [INFO] [stderr] ... | [INFO] [stderr] 130 | | } [INFO] [stderr] 131 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 111 | match *self { [INFO] [stderr] 112 | BinaryTree::Empty => BinaryTree::Empty, [INFO] [stderr] 113 | BinaryTree::Node(ref color, ref root, ref left, ref right) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tree/binary_tree.rs:116:25 [INFO] [stderr] | [INFO] [stderr] 116 | color.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*color` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tree/binary_tree.rs:123:25 [INFO] [stderr] | [INFO] [stderr] 123 | color.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:225:9 [INFO] [stderr] | [INFO] [stderr] 225 | / match self { [INFO] [stderr] 226 | | &BinaryTree::Empty => true, [INFO] [stderr] 227 | | &BinaryTree::Node(_, _, _, _) => false, [INFO] [stderr] 228 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 225 | match *self { [INFO] [stderr] 226 | BinaryTree::Empty => true, [INFO] [stderr] 227 | BinaryTree::Node(_, _, _, _) => false, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | / match self { [INFO] [stderr] 233 | | &BinaryTree::Empty => false, [INFO] [stderr] 234 | | &BinaryTree::Node(_, _, ref left, ref right) => left.is_empty() && right.is_empty(), [INFO] [stderr] 235 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 232 | match *self { [INFO] [stderr] 233 | BinaryTree::Empty => false, [INFO] [stderr] 234 | BinaryTree::Node(_, _, ref left, ref right) => left.is_empty() && right.is_empty(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:239:9 [INFO] [stderr] | [INFO] [stderr] 239 | / match self { [INFO] [stderr] 240 | | &BinaryTree::Empty => panic!("paint() called on empty tree"), [INFO] [stderr] 241 | | &BinaryTree::Node(_, ref value, ref left, ref right) => BinaryTree::Node(c, value.clone(), left.clone(), right.clone()), [INFO] [stderr] 242 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 239 | match *self { [INFO] [stderr] 240 | BinaryTree::Empty => panic!("paint() called on empty tree"), [INFO] [stderr] 241 | BinaryTree::Node(_, ref value, ref left, ref right) => BinaryTree::Node(c, value.clone(), left.clone(), right.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:246:9 [INFO] [stderr] | [INFO] [stderr] 246 | / match self { [INFO] [stderr] 247 | | &BinaryTree::Empty => panic!("color() called on empty tree"), [INFO] [stderr] 248 | | &BinaryTree::Node(color, _, _, _) => color, [INFO] [stderr] 249 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 246 | match *self { [INFO] [stderr] 247 | BinaryTree::Empty => panic!("color() called on empty tree"), [INFO] [stderr] 248 | BinaryTree::Node(color, _, _, _) => color, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:252:9 [INFO] [stderr] | [INFO] [stderr] 252 | / match self { [INFO] [stderr] 253 | | &BinaryTree::Empty => panic!("value() called on empty tree"), [INFO] [stderr] 254 | | &BinaryTree::Node(_, ref value, _, _) => value.clone(), [INFO] [stderr] 255 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 252 | match *self { [INFO] [stderr] 253 | BinaryTree::Empty => panic!("value() called on empty tree"), [INFO] [stderr] 254 | BinaryTree::Node(_, ref value, _, _) => value.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:258:9 [INFO] [stderr] | [INFO] [stderr] 258 | / match self { [INFO] [stderr] 259 | | &BinaryTree::Empty => panic!("left() called on empty tree"), [INFO] [stderr] 260 | | &BinaryTree::Node(_, _, ref left, _) => left.clone(), [INFO] [stderr] 261 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 258 | match *self { [INFO] [stderr] 259 | BinaryTree::Empty => panic!("left() called on empty tree"), [INFO] [stderr] 260 | BinaryTree::Node(_, _, ref left, _) => left.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | / match self { [INFO] [stderr] 265 | | &BinaryTree::Empty => panic!("right() called on empty tree"), [INFO] [stderr] 266 | | &BinaryTree::Node(_, _, _, ref right) => right.clone(), [INFO] [stderr] 267 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 264 | match *self { [INFO] [stderr] 265 | BinaryTree::Empty => panic!("right() called on empty tree"), [INFO] [stderr] 266 | BinaryTree::Node(_, _, _, ref right) => right.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:270:9 [INFO] [stderr] | [INFO] [stderr] 270 | / match self { [INFO] [stderr] 271 | | &BinaryTree::Empty => 0, [INFO] [stderr] 272 | | &BinaryTree::Node(_, _, ref left, ref right) => 1 + left.length() + right.length(), [INFO] [stderr] 273 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 270 | match *self { [INFO] [stderr] 271 | BinaryTree::Empty => 0, [INFO] [stderr] 272 | BinaryTree::Node(_, _, ref left, ref right) => 1 + left.length() + right.length(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | / match self { [INFO] [stderr] 277 | | &BinaryTree::Empty => 0, [INFO] [stderr] 278 | | &BinaryTree::Node(_, _, ref left, ref right) => 1 + max(left.height(), right.height()), [INFO] [stderr] 279 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 276 | match *self { [INFO] [stderr] 277 | BinaryTree::Empty => 0, [INFO] [stderr] 278 | BinaryTree::Node(_, _, ref left, ref right) => 1 + max(left.height(), right.height()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/tree/binary_tree.rs:300:5 [INFO] [stderr] | [INFO] [stderr] 300 | / fn ne(&self, other: &Self) -> bool { [INFO] [stderr] 301 | | !(self == other) [INFO] [stderr] 302 | | } [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:308:9 [INFO] [stderr] | [INFO] [stderr] 308 | / match self { [INFO] [stderr] 309 | | &BinaryTree::Empty => write!(f, "Empty"), [INFO] [stderr] 310 | | &BinaryTree::Node(ref color, ref value, ref left, ref right) => write!(f, "Node({:?}, {:?}, {:?}, {:?})", color, value.clone(), left.clone(), right.clone()), [INFO] [stderr] 311 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 308 | match *self { [INFO] [stderr] 309 | BinaryTree::Empty => write!(f, "Empty"), [INFO] [stderr] 310 | BinaryTree::Node(ref color, ref value, ref left, ref right) => write!(f, "Node({:?}, {:?}, {:?}, {:?})", color, value.clone(), left.clone(), right.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/map.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | fn ne(&self, other: &Self) -> bool { self.key != other.key } [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: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/map.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | fn ne(&self, other: &K) -> bool { self.key != *other } [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 should consider adding a `Default` implementation for `map::Map` [INFO] [stderr] --> src/map.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | / pub fn new() -> Self { [INFO] [stderr] 67 | | Map { [INFO] [stderr] 68 | | tree: BinaryTree::empty() [INFO] [stderr] 69 | | } [INFO] [stderr] 70 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 65 | impl Default for map::Map { [INFO] [stderr] 66 | fn default() -> Self { [INFO] [stderr] 67 | Self::new() [INFO] [stderr] 68 | } [INFO] [stderr] 69 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/list.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | #[macro_escape] [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_attributes)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/tree/binary_tree.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | #[macro_escape] [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | / match self { [INFO] [stderr] 44 | | &List::Empty => true, [INFO] [stderr] 45 | | &List::Cons(_, _) => false, [INFO] [stderr] 46 | | } [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] 43 | match *self { [INFO] [stderr] 44 | List::Empty => true, [INFO] [stderr] 45 | List::Cons(_, _) => false, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | / match self { [INFO] [stderr] 51 | | &List::Empty => panic!("Head called on empty list"), [INFO] [stderr] 52 | | &List::Cons(ref head, _) => head.clone(), [INFO] [stderr] 53 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 50 | match *self { [INFO] [stderr] 51 | List::Empty => panic!("Head called on empty list"), [INFO] [stderr] 52 | List::Cons(ref head, _) => head.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | / match self { [INFO] [stderr] 58 | | &List::Empty => panic!("Tail called on empy list"), [INFO] [stderr] 59 | | &List::Cons(_, ref tail) => tail.clone(), [INFO] [stderr] 60 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 57 | match *self { [INFO] [stderr] 58 | List::Empty => panic!("Tail called on empy list"), [INFO] [stderr] 59 | List::Cons(_, ref tail) => tail.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | / match self { [INFO] [stderr] 65 | | &List::Empty => 0, [INFO] [stderr] 66 | | &List::Cons(_, ref tail) => 1 + tail.length(), [INFO] [stderr] 67 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 64 | match *self { [INFO] [stderr] 65 | List::Empty => 0, [INFO] [stderr] 66 | List::Cons(_, ref tail) => 1 + tail.length(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / match self { [INFO] [stderr] 71 | | &List::Empty => lst.borrow().clone(), [INFO] [stderr] 72 | | &List::Cons(ref head, ref tail) => List::Cons(head.clone(), tail.append(lst).into()), [INFO] [stderr] 73 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 70 | match *self { [INFO] [stderr] 71 | List::Empty => lst.borrow().clone(), [INFO] [stderr] 72 | List::Cons(ref head, ref tail) => List::Cons(head.clone(), tail.append(lst).into()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / match self { [INFO] [stderr] 78 | | &List::Empty => None, [INFO] [stderr] 79 | | &List::Cons(ref head, _) => Some(head.clone()), [INFO] [stderr] 80 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 77 | match *self { [INFO] [stderr] 78 | List::Empty => None, [INFO] [stderr] 79 | List::Cons(ref head, _) => Some(head.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | / match self { [INFO] [stderr] 85 | | &List::Empty => None, [INFO] [stderr] 86 | | &List::Cons(_, ref tail) => Some(tail.clone()), [INFO] [stderr] 87 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 84 | match *self { [INFO] [stderr] 85 | List::Empty => None, [INFO] [stderr] 86 | List::Cons(_, ref tail) => Some(tail.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | / match self { [INFO] [stderr] 100 | | &List::Empty => write!(f, ""), [INFO] [stderr] 101 | | &List::Cons(ref head, ref tail) => write!(f, "{:?}, {:?}", head.clone(), tail.clone()), [INFO] [stderr] 102 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 99 | match *self { [INFO] [stderr] 100 | List::Empty => write!(f, ""), [INFO] [stderr] 101 | List::Cons(ref head, ref tail) => write!(f, "{:?}, {:?}", head.clone(), tail.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | / match self.node.deref() { [INFO] [stderr] 143 | | &List::Empty => return None, [INFO] [stderr] 144 | | &List::Cons(ref head, ref tail) => { [INFO] [stderr] 145 | | tl = tail.clone(); [INFO] [stderr] 146 | | hd = head.clone(); [INFO] [stderr] 147 | | } [INFO] [stderr] 148 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 142 | match *self.node.deref() { [INFO] [stderr] 143 | List::Empty => return None, [INFO] [stderr] 144 | List::Cons(ref head, ref tail) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | / match self { [INFO] [stderr] 65 | | &BinaryTree::Empty => None, [INFO] [stderr] 66 | | &BinaryTree::Node(_, ref value, ref left, ref right) => [INFO] [stderr] 67 | | if value > &val { left.get(val) } [INFO] [stderr] 68 | | else if value < &val { right.get(val) } [INFO] [stderr] 69 | | else { Some(value.clone()) } [INFO] [stderr] 70 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 64 | match *self { [INFO] [stderr] 65 | BinaryTree::Empty => None, [INFO] [stderr] 66 | BinaryTree::Node(_, ref value, ref left, ref right) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/tree/binary_tree.rs:67:20 [INFO] [stderr] | [INFO] [stderr] 67 | if value > &val { left.get(val) } [INFO] [stderr] | ^^^^^^^^---- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `val` [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: taken reference of right operand [INFO] [stderr] --> src/tree/binary_tree.rs:68:25 [INFO] [stderr] | [INFO] [stderr] 68 | else if value < &val { right.get(val) } [INFO] [stderr] | ^^^^^^^^---- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `val` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | / match self { [INFO] [stderr] 79 | | &BinaryTree::Empty => BinaryTree::node(Color::Red, val, BinaryTree::Empty, BinaryTree::Empty), [INFO] [stderr] 80 | | &BinaryTree::Node(color, ref root, ref left, ref right) => { [INFO] [stderr] 81 | | if val > *root { BinaryTree::balance(color, root.clone(), left.deref().clone(), right.ins(val)) } [INFO] [stderr] ... | [INFO] [stderr] 84 | | } [INFO] [stderr] 85 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 78 | match *self { [INFO] [stderr] 79 | BinaryTree::Empty => BinaryTree::node(Color::Red, val, BinaryTree::Empty, BinaryTree::Empty), [INFO] [stderr] 80 | BinaryTree::Node(color, ref root, ref left, ref right) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match self { [INFO] [stderr] 112 | | &BinaryTree::Empty => BinaryTree::Empty, [INFO] [stderr] 113 | | &BinaryTree::Node(ref color, ref root, ref left, ref right) => { [INFO] [stderr] 114 | | if root > val.borrow() { [INFO] [stderr] ... | [INFO] [stderr] 130 | | } [INFO] [stderr] 131 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 111 | match *self { [INFO] [stderr] 112 | BinaryTree::Empty => BinaryTree::Empty, [INFO] [stderr] 113 | BinaryTree::Node(ref color, ref root, ref left, ref right) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tree/binary_tree.rs:116:25 [INFO] [stderr] | [INFO] [stderr] 116 | color.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*color` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tree/binary_tree.rs:123:25 [INFO] [stderr] | [INFO] [stderr] 123 | color.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:225:9 [INFO] [stderr] | [INFO] [stderr] 225 | / match self { [INFO] [stderr] 226 | | &BinaryTree::Empty => true, [INFO] [stderr] 227 | | &BinaryTree::Node(_, _, _, _) => false, [INFO] [stderr] 228 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 225 | match *self { [INFO] [stderr] 226 | BinaryTree::Empty => true, [INFO] [stderr] 227 | BinaryTree::Node(_, _, _, _) => false, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | / match self { [INFO] [stderr] 233 | | &BinaryTree::Empty => false, [INFO] [stderr] 234 | | &BinaryTree::Node(_, _, ref left, ref right) => left.is_empty() && right.is_empty(), [INFO] [stderr] 235 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 232 | match *self { [INFO] [stderr] 233 | BinaryTree::Empty => false, [INFO] [stderr] 234 | BinaryTree::Node(_, _, ref left, ref right) => left.is_empty() && right.is_empty(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:239:9 [INFO] [stderr] | [INFO] [stderr] 239 | / match self { [INFO] [stderr] 240 | | &BinaryTree::Empty => panic!("paint() called on empty tree"), [INFO] [stderr] 241 | | &BinaryTree::Node(_, ref value, ref left, ref right) => BinaryTree::Node(c, value.clone(), left.clone(), right.clone()), [INFO] [stderr] 242 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 239 | match *self { [INFO] [stderr] 240 | BinaryTree::Empty => panic!("paint() called on empty tree"), [INFO] [stderr] 241 | BinaryTree::Node(_, ref value, ref left, ref right) => BinaryTree::Node(c, value.clone(), left.clone(), right.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:246:9 [INFO] [stderr] | [INFO] [stderr] 246 | / match self { [INFO] [stderr] 247 | | &BinaryTree::Empty => panic!("color() called on empty tree"), [INFO] [stderr] 248 | | &BinaryTree::Node(color, _, _, _) => color, [INFO] [stderr] 249 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 246 | match *self { [INFO] [stderr] 247 | BinaryTree::Empty => panic!("color() called on empty tree"), [INFO] [stderr] 248 | BinaryTree::Node(color, _, _, _) => color, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:252:9 [INFO] [stderr] | [INFO] [stderr] 252 | / match self { [INFO] [stderr] 253 | | &BinaryTree::Empty => panic!("value() called on empty tree"), [INFO] [stderr] 254 | | &BinaryTree::Node(_, ref value, _, _) => value.clone(), [INFO] [stderr] 255 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 252 | match *self { [INFO] [stderr] 253 | BinaryTree::Empty => panic!("value() called on empty tree"), [INFO] [stderr] 254 | BinaryTree::Node(_, ref value, _, _) => value.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:258:9 [INFO] [stderr] | [INFO] [stderr] 258 | / match self { [INFO] [stderr] 259 | | &BinaryTree::Empty => panic!("left() called on empty tree"), [INFO] [stderr] 260 | | &BinaryTree::Node(_, _, ref left, _) => left.clone(), [INFO] [stderr] 261 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 258 | match *self { [INFO] [stderr] 259 | BinaryTree::Empty => panic!("left() called on empty tree"), [INFO] [stderr] 260 | BinaryTree::Node(_, _, ref left, _) => left.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | / match self { [INFO] [stderr] 265 | | &BinaryTree::Empty => panic!("right() called on empty tree"), [INFO] [stderr] 266 | | &BinaryTree::Node(_, _, _, ref right) => right.clone(), [INFO] [stderr] 267 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 264 | match *self { [INFO] [stderr] 265 | BinaryTree::Empty => panic!("right() called on empty tree"), [INFO] [stderr] 266 | BinaryTree::Node(_, _, _, ref right) => right.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:270:9 [INFO] [stderr] | [INFO] [stderr] 270 | / match self { [INFO] [stderr] 271 | | &BinaryTree::Empty => 0, [INFO] [stderr] 272 | | &BinaryTree::Node(_, _, ref left, ref right) => 1 + left.length() + right.length(), [INFO] [stderr] 273 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 270 | match *self { [INFO] [stderr] 271 | BinaryTree::Empty => 0, [INFO] [stderr] 272 | BinaryTree::Node(_, _, ref left, ref right) => 1 + left.length() + right.length(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | / match self { [INFO] [stderr] 277 | | &BinaryTree::Empty => 0, [INFO] [stderr] 278 | | &BinaryTree::Node(_, _, ref left, ref right) => 1 + max(left.height(), right.height()), [INFO] [stderr] 279 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 276 | match *self { [INFO] [stderr] 277 | BinaryTree::Empty => 0, [INFO] [stderr] 278 | BinaryTree::Node(_, _, ref left, ref right) => 1 + max(left.height(), right.height()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/tree/binary_tree.rs:300:5 [INFO] [stderr] | [INFO] [stderr] 300 | / fn ne(&self, other: &Self) -> bool { [INFO] [stderr] 301 | | !(self == other) [INFO] [stderr] 302 | | } [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/binary_tree.rs:308:9 [INFO] [stderr] | [INFO] [stderr] 308 | / match self { [INFO] [stderr] 309 | | &BinaryTree::Empty => write!(f, "Empty"), [INFO] [stderr] 310 | | &BinaryTree::Node(ref color, ref value, ref left, ref right) => write!(f, "Node({:?}, {:?}, {:?}, {:?})", color, value.clone(), left.clone(), right.clone()), [INFO] [stderr] 311 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 308 | match *self { [INFO] [stderr] 309 | BinaryTree::Empty => write!(f, "Empty"), [INFO] [stderr] 310 | BinaryTree::Node(ref color, ref value, ref left, ref right) => write!(f, "Node({:?}, {:?}, {:?}, {:?})", color, value.clone(), left.clone(), right.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/map.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | fn ne(&self, other: &Self) -> bool { self.key != other.key } [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: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/map.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | fn ne(&self, other: &K) -> bool { self.key != *other } [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 should consider adding a `Default` implementation for `map::Map` [INFO] [stderr] --> src/map.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | / pub fn new() -> Self { [INFO] [stderr] 67 | | Map { [INFO] [stderr] 68 | | tree: BinaryTree::empty() [INFO] [stderr] 69 | | } [INFO] [stderr] 70 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 65 | impl Default for map::Map { [INFO] [stderr] 66 | fn default() -> Self { [INFO] [stderr] 67 | Self::new() [INFO] [stderr] 68 | } [INFO] [stderr] 69 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/list.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | #[macro_escape] [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_attributes)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/tree/binary_tree.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | #[macro_escape] [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.00s [INFO] running `"docker" "inspect" "648d2c6b6f9eea7e49c5e71f588dd7917878dd1821aa8fa67d767b4febed5219"` [INFO] running `"docker" "rm" "-f" "648d2c6b6f9eea7e49c5e71f588dd7917878dd1821aa8fa67d767b4febed5219"` [INFO] [stdout] 648d2c6b6f9eea7e49c5e71f588dd7917878dd1821aa8fa67d767b4febed5219