[INFO] crate coll 0.1.3 is already in cache [INFO] extracting crate coll 0.1.3 into work/ex/clippy-test-run/sources/stable/reg/coll/0.1.3 [INFO] extracting crate coll 0.1.3 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/coll/0.1.3 [INFO] validating manifest of coll-0.1.3 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 coll-0.1.3 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 coll-0.1.3 [INFO] finished frobbing coll-0.1.3 [INFO] frobbed toml for coll-0.1.3 written to work/ex/clippy-test-run/sources/stable/reg/coll/0.1.3/Cargo.toml [INFO] started frobbing coll-0.1.3 [INFO] finished frobbing coll-0.1.3 [INFO] frobbed toml for coll-0.1.3 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/coll/0.1.3/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 coll-0.1.3 against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/coll/0.1.3:/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 -Dclippy::into_iter_on_array" "-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] a6e56a25f81b40c87fd3319f5f9aaea075e27acbc6c238b2cd769a311e0c9306 [INFO] running `"docker" "start" "-a" "a6e56a25f81b40c87fd3319f5f9aaea075e27acbc6c238b2cd769a311e0c9306"` [INFO] [stderr] Checking coll v0.1.3 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/persistent/rbtree.rs:56:16 [INFO] [stderr] | [INFO] [stderr] 56 | Iter { lefts: lefts, len: wrapper.len } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lefts` [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/persistent/rbtree.rs:56:16 [INFO] [stderr] | [INFO] [stderr] 56 | Iter { lefts: lefts, len: wrapper.len } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lefts` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/persistent/rbtree.rs:251:55 [INFO] [stderr] | [INFO] [stderr] 251 | &Tree::T(ref color, ref l, ref y, ref r) if x < **y => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/persistent/rbtree.rs:257:55 [INFO] [stderr] | [INFO] [stderr] 257 | &Tree::T(ref color, ref l, ref y, ref r) if x > **y => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [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: 5th binding whose name is just one char [INFO] [stderr] --> src/persistent/rbtree.rs:251:55 [INFO] [stderr] | [INFO] [stderr] 251 | &Tree::T(ref color, ref l, ref y, ref r) if x < **y => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/persistent/rbtree.rs:257:55 [INFO] [stderr] | [INFO] [stderr] 257 | &Tree::T(ref color, ref l, ref y, ref r) if x > **y => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/persistent/rbtree.rs:226:9 [INFO] [stderr] | [INFO] [stderr] 226 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [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 seem to be trying to use `Box>`. Consider using just `Vec` [INFO] [stderr] --> src/persistent/rbtree.rs:36:12 [INFO] [stderr] | [INFO] [stderr] 36 | lefts: Box>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::box_vec)] on by default [INFO] [stderr] = help: `Vec` is already on the heap, `Box>` makes an extra allocation. [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_vec [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | / if let &Tree::T(_, ref l, _, _) = curr { [INFO] [stderr] 46 | | curr = l.as_ref(); [INFO] [stderr] 47 | | } [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] 45 | if let Tree::T(_, ref l, _, _) = *curr { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `persistent::rbtree::RbTree` [INFO] [stderr] --> src/persistent/rbtree.rs:81:5 [INFO] [stderr] | [INFO] [stderr] 81 | / pub fn new() -> RbTree { [INFO] [stderr] 82 | | RbTree { [INFO] [stderr] 83 | | tree: Rc::new(Tree::E), [INFO] [stderr] 84 | | len: 0 [INFO] [stderr] 85 | | } [INFO] [stderr] 86 | | } [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] 79 | impl Default for persistent::rbtree::RbTree { [INFO] [stderr] 80 | fn default() -> Self { [INFO] [stderr] 81 | Self::new() [INFO] [stderr] 82 | } [INFO] [stderr] 83 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | / if let &Tree::T(Color::Red, ref l2, ref x2, ref r2) = l.as_ref() { [INFO] [stderr] 191 | | [INFO] [stderr] 192 | | // Black (Red (Red (l3, x3, r3), x2, r2), x, r) [INFO] [stderr] 193 | | if let &Tree::T(Color::Red, ref l3, ref x3, ref r3) = l2.as_ref() { [INFO] [stderr] ... | [INFO] [stderr] 205 | | [INFO] [stderr] 206 | | } [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] 190 | if let Tree::T(Color::Red, ref l2, ref x2, ref r2) = *l.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:193:17 [INFO] [stderr] | [INFO] [stderr] 193 | / if let &Tree::T(Color::Red, ref l3, ref x3, ref r3) = l2.as_ref() { [INFO] [stderr] 194 | | let left = Rc::new(Tree::T(Color::Black, l3.clone(), x3.clone(), r3.clone())); [INFO] [stderr] 195 | | let right = Rc::new(Tree::T(Color::Black, r2.clone(), x.clone(), r.clone())); [INFO] [stderr] 196 | | return Tree::T(Color::Red, left, x2.clone(), right); [INFO] [stderr] 197 | | } [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] 193 | if let Tree::T(Color::Red, ref l3, ref x3, ref r3) = *l2.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:200:17 [INFO] [stderr] | [INFO] [stderr] 200 | / if let &Tree::T(Color::Red, ref l3, ref x3, ref r3) = r2.as_ref() { [INFO] [stderr] 201 | | let left = Rc::new(Tree::T(Color::Black, l2.clone(), x2.clone(), l3.clone())); [INFO] [stderr] 202 | | let right = Rc::new(Tree::T(Color::Black, r3.clone(), x.clone(), r.clone())); [INFO] [stderr] 203 | | return Tree::T(Color::Red, left, x3.clone(), right); [INFO] [stderr] 204 | | } [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] 200 | if let Tree::T(Color::Red, ref l3, ref x3, ref r3) = *r2.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:208:13 [INFO] [stderr] | [INFO] [stderr] 208 | / if let &Tree::T(Color::Red, ref l2, ref x2, ref r2) = r.as_ref() { [INFO] [stderr] 209 | | [INFO] [stderr] 210 | | // Black (l, x, (Red (Red (l3, x3, r3), x2, r2))) [INFO] [stderr] 211 | | if let &Tree::T(Color::Red, ref l3, ref x3, ref r3) = l2.as_ref() { [INFO] [stderr] ... | [INFO] [stderr] 222 | | } [INFO] [stderr] 223 | | } [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] 208 | if let Tree::T(Color::Red, ref l2, ref x2, ref r2) = *r.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:211:17 [INFO] [stderr] | [INFO] [stderr] 211 | / if let &Tree::T(Color::Red, ref l3, ref x3, ref r3) = l2.as_ref() { [INFO] [stderr] 212 | | let left = Rc::new(Tree::T(Color::Black, l.clone(), x.clone(), l3.clone())); [INFO] [stderr] 213 | | let right = Rc::new(Tree::T(Color::Black, r3.clone(), x2.clone(), r2.clone())); [INFO] [stderr] 214 | | return Tree::T(Color::Red, left, x3.clone(), right); [INFO] [stderr] 215 | | } [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] 211 | if let Tree::T(Color::Red, ref l3, ref x3, ref r3) = *l2.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:218:17 [INFO] [stderr] | [INFO] [stderr] 218 | / if let &Tree::T(Color::Red, ref l3, ref x3, ref r3) = r2.as_ref() { [INFO] [stderr] 219 | | let left = Rc::new(Tree::T(Color::Black, l.clone(), x.clone(), l2.clone())); [INFO] [stderr] 220 | | let right = Rc::new(Tree::T(Color::Black, l3.clone(), x3.clone(), r3.clone())); [INFO] [stderr] 221 | | return Tree::T(Color::Red, left, x2.clone(), right); [INFO] [stderr] 222 | | } [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] 218 | if let Tree::T(Color::Red, ref l3, ref x3, ref r3) = *r2.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:230:9 [INFO] [stderr] | [INFO] [stderr] 230 | / match self { [INFO] [stderr] 231 | | &Tree::T(_, ref left, ref y, ref right) => { [INFO] [stderr] 232 | | if x < **y { [INFO] [stderr] 233 | | left.contains(x) [INFO] [stderr] ... | [INFO] [stderr] 240 | | &Tree::E => false, [INFO] [stderr] 241 | | } [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] 230 | match *self { [INFO] [stderr] 231 | Tree::T(_, ref left, ref y, ref right) => { [INFO] [stderr] 232 | if x < **y { [INFO] [stderr] 233 | left.contains(x) [INFO] [stderr] 234 | } else if x > **y { [INFO] [stderr] 235 | right.contains(x) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:248:13 [INFO] [stderr] | [INFO] [stderr] 248 | / match t { [INFO] [stderr] 249 | | &Tree::E => Tree::T(Color::Red, empty.clone(), Rc::new(x), empty.clone()), [INFO] [stderr] 250 | | [INFO] [stderr] 251 | | &Tree::T(ref color, ref l, ref y, ref r) if x < **y => { [INFO] [stderr] ... | [INFO] [stderr] 265 | | } [INFO] [stderr] 266 | | } [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] 248 | match *t { [INFO] [stderr] 249 | Tree::E => Tree::T(Color::Red, empty.clone(), Rc::new(x), empty.clone()), [INFO] [stderr] 250 | [INFO] [stderr] 251 | Tree::T(ref color, ref l, ref y, ref r) if x < **y => { [INFO] [stderr] 252 | let left = Rc::new(ins(l, x)); [INFO] [stderr] 253 | let result = Tree::T(color.clone(), left, y.clone(), r.clone()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/persistent/rbtree.rs:226:9 [INFO] [stderr] | [INFO] [stderr] 226 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [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 seem to be trying to use `Box>`. Consider using just `Vec` [INFO] [stderr] --> src/persistent/rbtree.rs:36:12 [INFO] [stderr] | [INFO] [stderr] 36 | lefts: Box>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::box_vec)] on by default [INFO] [stderr] = help: `Vec` is already on the heap, `Box>` makes an extra allocation. [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_vec [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | / if let &Tree::T(_, ref l, _, _) = curr { [INFO] [stderr] 46 | | curr = l.as_ref(); [INFO] [stderr] 47 | | } [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] 45 | if let Tree::T(_, ref l, _, _) = *curr { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `persistent::rbtree::RbTree` [INFO] [stderr] --> src/persistent/rbtree.rs:81:5 [INFO] [stderr] | [INFO] [stderr] 81 | / pub fn new() -> RbTree { [INFO] [stderr] 82 | | RbTree { [INFO] [stderr] 83 | | tree: Rc::new(Tree::E), [INFO] [stderr] 84 | | len: 0 [INFO] [stderr] 85 | | } [INFO] [stderr] 86 | | } [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] 79 | impl Default for persistent::rbtree::RbTree { [INFO] [stderr] 80 | fn default() -> Self { [INFO] [stderr] 81 | Self::new() [INFO] [stderr] 82 | } [INFO] [stderr] 83 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | / if let &Tree::T(Color::Red, ref l2, ref x2, ref r2) = l.as_ref() { [INFO] [stderr] 191 | | [INFO] [stderr] 192 | | // Black (Red (Red (l3, x3, r3), x2, r2), x, r) [INFO] [stderr] 193 | | if let &Tree::T(Color::Red, ref l3, ref x3, ref r3) = l2.as_ref() { [INFO] [stderr] ... | [INFO] [stderr] 205 | | [INFO] [stderr] 206 | | } [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] 190 | if let Tree::T(Color::Red, ref l2, ref x2, ref r2) = *l.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:193:17 [INFO] [stderr] | [INFO] [stderr] 193 | / if let &Tree::T(Color::Red, ref l3, ref x3, ref r3) = l2.as_ref() { [INFO] [stderr] 194 | | let left = Rc::new(Tree::T(Color::Black, l3.clone(), x3.clone(), r3.clone())); [INFO] [stderr] 195 | | let right = Rc::new(Tree::T(Color::Black, r2.clone(), x.clone(), r.clone())); [INFO] [stderr] 196 | | return Tree::T(Color::Red, left, x2.clone(), right); [INFO] [stderr] 197 | | } [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] 193 | if let Tree::T(Color::Red, ref l3, ref x3, ref r3) = *l2.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:200:17 [INFO] [stderr] | [INFO] [stderr] 200 | / if let &Tree::T(Color::Red, ref l3, ref x3, ref r3) = r2.as_ref() { [INFO] [stderr] 201 | | let left = Rc::new(Tree::T(Color::Black, l2.clone(), x2.clone(), l3.clone())); [INFO] [stderr] 202 | | let right = Rc::new(Tree::T(Color::Black, r3.clone(), x.clone(), r.clone())); [INFO] [stderr] 203 | | return Tree::T(Color::Red, left, x3.clone(), right); [INFO] [stderr] 204 | | } [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] 200 | if let Tree::T(Color::Red, ref l3, ref x3, ref r3) = *r2.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:208:13 [INFO] [stderr] | [INFO] [stderr] 208 | / if let &Tree::T(Color::Red, ref l2, ref x2, ref r2) = r.as_ref() { [INFO] [stderr] 209 | | [INFO] [stderr] 210 | | // Black (l, x, (Red (Red (l3, x3, r3), x2, r2))) [INFO] [stderr] 211 | | if let &Tree::T(Color::Red, ref l3, ref x3, ref r3) = l2.as_ref() { [INFO] [stderr] ... | [INFO] [stderr] 222 | | } [INFO] [stderr] 223 | | } [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] 208 | if let Tree::T(Color::Red, ref l2, ref x2, ref r2) = *r.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:211:17 [INFO] [stderr] | [INFO] [stderr] 211 | / if let &Tree::T(Color::Red, ref l3, ref x3, ref r3) = l2.as_ref() { [INFO] [stderr] 212 | | let left = Rc::new(Tree::T(Color::Black, l.clone(), x.clone(), l3.clone())); [INFO] [stderr] 213 | | let right = Rc::new(Tree::T(Color::Black, r3.clone(), x2.clone(), r2.clone())); [INFO] [stderr] 214 | | return Tree::T(Color::Red, left, x3.clone(), right); [INFO] [stderr] 215 | | } [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] 211 | if let Tree::T(Color::Red, ref l3, ref x3, ref r3) = *l2.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:218:17 [INFO] [stderr] | [INFO] [stderr] 218 | / if let &Tree::T(Color::Red, ref l3, ref x3, ref r3) = r2.as_ref() { [INFO] [stderr] 219 | | let left = Rc::new(Tree::T(Color::Black, l.clone(), x.clone(), l2.clone())); [INFO] [stderr] 220 | | let right = Rc::new(Tree::T(Color::Black, l3.clone(), x3.clone(), r3.clone())); [INFO] [stderr] 221 | | return Tree::T(Color::Red, left, x2.clone(), right); [INFO] [stderr] 222 | | } [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] 218 | if let Tree::T(Color::Red, ref l3, ref x3, ref r3) = *r2.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:230:9 [INFO] [stderr] | [INFO] [stderr] 230 | / match self { [INFO] [stderr] 231 | | &Tree::T(_, ref left, ref y, ref right) => { [INFO] [stderr] 232 | | if x < **y { [INFO] [stderr] 233 | | left.contains(x) [INFO] [stderr] ... | [INFO] [stderr] 240 | | &Tree::E => false, [INFO] [stderr] 241 | | } [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] 230 | match *self { [INFO] [stderr] 231 | Tree::T(_, ref left, ref y, ref right) => { [INFO] [stderr] 232 | if x < **y { [INFO] [stderr] 233 | left.contains(x) [INFO] [stderr] 234 | } else if x > **y { [INFO] [stderr] 235 | right.contains(x) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/persistent/rbtree.rs:248:13 [INFO] [stderr] | [INFO] [stderr] 248 | / match t { [INFO] [stderr] 249 | | &Tree::E => Tree::T(Color::Red, empty.clone(), Rc::new(x), empty.clone()), [INFO] [stderr] 250 | | [INFO] [stderr] 251 | | &Tree::T(ref color, ref l, ref y, ref r) if x < **y => { [INFO] [stderr] ... | [INFO] [stderr] 265 | | } [INFO] [stderr] 266 | | } [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] 248 | match *t { [INFO] [stderr] 249 | Tree::E => Tree::T(Color::Red, empty.clone(), Rc::new(x), empty.clone()), [INFO] [stderr] 250 | [INFO] [stderr] 251 | Tree::T(ref color, ref l, ref y, ref r) if x < **y => { [INFO] [stderr] 252 | let left = Rc::new(ins(l, x)); [INFO] [stderr] 253 | let result = Tree::T(color.clone(), left, y.clone(), r.clone()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.78s [INFO] running `"docker" "inspect" "a6e56a25f81b40c87fd3319f5f9aaea075e27acbc6c238b2cd769a311e0c9306"` [INFO] running `"docker" "rm" "-f" "a6e56a25f81b40c87fd3319f5f9aaea075e27acbc6c238b2cd769a311e0c9306"` [INFO] [stdout] a6e56a25f81b40c87fd3319f5f9aaea075e27acbc6c238b2cd769a311e0c9306