[INFO] crate collection 0.1.1 is already in cache [INFO] extracting crate collection 0.1.1 into work/ex/clippy-test-run/sources/stable/reg/collection/0.1.1 [INFO] extracting crate collection 0.1.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/collection/0.1.1 [INFO] validating manifest of collection-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 collection-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 collection-0.1.1 [INFO] finished frobbing collection-0.1.1 [INFO] frobbed toml for collection-0.1.1 written to work/ex/clippy-test-run/sources/stable/reg/collection/0.1.1/Cargo.toml [INFO] started frobbing collection-0.1.1 [INFO] finished frobbing collection-0.1.1 [INFO] frobbed toml for collection-0.1.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/collection/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 collection-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-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/collection/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] 68023c43219264dc56987fb0787c4810cbef299d8ce778bea9eae3b20cce7a06 [INFO] running `"docker" "start" "-a" "68023c43219264dc56987fb0787c4810cbef299d8ce778bea9eae3b20cce7a06"` [INFO] [stderr] Checking trait-group v0.1.0 [INFO] [stderr] Checking collection v0.1.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/collection/mod.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/collection/mod.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | stash: stash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stash` [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/collection/mod.rs:109:13 [INFO] [stderr] | [INFO] [stderr] 109 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/collection/mod.rs:110:13 [INFO] [stderr] | [INFO] [stderr] 110 | stash: stash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stash` [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/collection/mod.rs:250:21 [INFO] [stderr] | [INFO] [stderr] 250 | stash: stash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stash` [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/collection/mod.rs:263:13 [INFO] [stderr] | [INFO] [stderr] 263 | branch: branch, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `branch` [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/stash/mod.rs:117:13 [INFO] [stderr] | [INFO] [stderr] 117 | ofs: ofs, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ofs` [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/stash/mod.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | depth: depth, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `depth` [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/tree/node.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | location: location, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `location` [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/tree/node.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | meta: meta, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `meta` [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/tree/node.rs:92:21 [INFO] [stderr] | [INFO] [stderr] 92 | location: location, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `location` [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/tree/node.rs:229:47 [INFO] [stderr] | [INFO] [stderr] 229 | RemoveResult::Merge { t: t, depth: w } [INFO] [stderr] | ^^^^ help: replace it with: `t` [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/tree/level.rs:94:13 [INFO] [stderr] | [INFO] [stderr] 94 | location: location, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `location` [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/tree/level.rs:381:13 [INFO] [stderr] | [INFO] [stderr] 381 | ofs: ofs, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ofs` [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/tree/branch.rs:68:18 [INFO] [stderr] | [INFO] [stderr] 68 | Branch { levels: levels } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `levels` [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/tree/iterator.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | stash: stash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stash` [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/tree/iterator.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | branch: branch, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `branch` [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/ops/map.rs:30:14 [INFO] [stderr] | [INFO] [stderr] 30 | KV { k: k, v: v } [INFO] [stderr] | ^^^^ help: replace it with: `k` [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/ops/map.rs:30:20 [INFO] [stderr] | [INFO] [stderr] 30 | KV { k: k, v: v } [INFO] [stderr] | ^^^^ help: replace it with: `v` [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/ops/map.rs:80:22 [INFO] [stderr] | [INFO] [stderr] 80 | ValContext { context: context } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `context` [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/collection/mod.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/collection/mod.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | stash: stash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stash` [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/collection/mod.rs:109:13 [INFO] [stderr] | [INFO] [stderr] 109 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/collection/mod.rs:110:13 [INFO] [stderr] | [INFO] [stderr] 110 | stash: stash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stash` [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/collection/mod.rs:250:21 [INFO] [stderr] | [INFO] [stderr] 250 | stash: stash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stash` [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/collection/mod.rs:263:13 [INFO] [stderr] | [INFO] [stderr] 263 | branch: branch, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `branch` [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/stash/mod.rs:117:13 [INFO] [stderr] | [INFO] [stderr] 117 | ofs: ofs, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ofs` [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/stash/mod.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | depth: depth, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `depth` [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/tree/node.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | location: location, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `location` [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/tree/node.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | meta: meta, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `meta` [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/tree/node.rs:92:21 [INFO] [stderr] | [INFO] [stderr] 92 | location: location, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `location` [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/tree/node.rs:229:47 [INFO] [stderr] | [INFO] [stderr] 229 | RemoveResult::Merge { t: t, depth: w } [INFO] [stderr] | ^^^^ help: replace it with: `t` [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/tree/level.rs:94:13 [INFO] [stderr] | [INFO] [stderr] 94 | location: location, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `location` [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/tree/level.rs:381:13 [INFO] [stderr] | [INFO] [stderr] 381 | ofs: ofs, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ofs` [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/tree/branch.rs:68:18 [INFO] [stderr] | [INFO] [stderr] 68 | Branch { levels: levels } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `levels` [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/tree/iterator.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | stash: stash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stash` [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/tree/iterator.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | branch: branch, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `branch` [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/ops/map.rs:30:14 [INFO] [stderr] | [INFO] [stderr] 30 | KV { k: k, v: v } [INFO] [stderr] | ^^^^ help: replace it with: `k` [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/ops/map.rs:30:20 [INFO] [stderr] | [INFO] [stderr] 30 | KV { k: k, v: v } [INFO] [stderr] | ^^^^ help: replace it with: `v` [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/ops/map.rs:80:22 [INFO] [stderr] | [INFO] [stderr] 80 | ValContext { context: context } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `context` [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 macro definition [INFO] [stderr] --> src/collection/mod.rs:271:1 [INFO] [stderr] | [INFO] [stderr] 271 | / macro_rules! collection { [INFO] [stderr] 272 | | ($collection:ident<$t:ident> [INFO] [stderr] 273 | | { [INFO] [stderr] 274 | | $( $slot:ident: $submeta:ident<$subtype:ty>, )* [INFO] [stderr] ... | [INFO] [stderr] 327 | | ) [INFO] [stderr] 328 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/tree/node.rs:142:16 [INFO] [stderr] | [INFO] [stderr] 142 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 143 | | if let Child::Leaf(_) = self.children[0] { [INFO] [stderr] 144 | | true [INFO] [stderr] 145 | | } else { [INFO] [stderr] 146 | | false [INFO] [stderr] 147 | | } [INFO] [stderr] 148 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 142 | } else if let Child::Leaf(_) = self.children[0] { [INFO] [stderr] 143 | true [INFO] [stderr] 144 | } else { [INFO] [stderr] 145 | false [INFO] [stderr] 146 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree/level.rs:188:17 [INFO] [stderr] | [INFO] [stderr] 188 | return Some(()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree/level.rs:190:21 [INFO] [stderr] | [INFO] [stderr] 190 | None => return None, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/tree/branch.rs:377:20 [INFO] [stderr] | [INFO] [stderr] 377 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 378 | | if levels.len() > 0 { [INFO] [stderr] 379 | | levels.push(Level::new(stash.put(Node::new()))); [INFO] [stderr] 380 | | } [INFO] [stderr] 381 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 377 | } else if levels.len() > 0 { [INFO] [stderr] 378 | levels.push(Level::new(stash.put(Node::new()))); [INFO] [stderr] 379 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/tree/branch.rs:517:9 [INFO] [stderr] | [INFO] [stderr] 517 | branch [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/tree/branch.rs:516:22 [INFO] [stderr] | [INFO] [stderr] 516 | let branch = Branch::first(branch.root(), stash); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/html/mod.rs:5:17 [INFO] [stderr] | [INFO] [stderr] 5 | pub const CSS: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/tree/node.rs:142:16 [INFO] [stderr] | [INFO] [stderr] 142 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 143 | | if let Child::Leaf(_) = self.children[0] { [INFO] [stderr] 144 | | true [INFO] [stderr] 145 | | } else { [INFO] [stderr] 146 | | false [INFO] [stderr] 147 | | } [INFO] [stderr] 148 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 142 | } else if let Child::Leaf(_) = self.children[0] { [INFO] [stderr] 143 | true [INFO] [stderr] 144 | } else { [INFO] [stderr] 145 | false [INFO] [stderr] 146 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree/level.rs:188:17 [INFO] [stderr] | [INFO] [stderr] 188 | return Some(()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tree/level.rs:190:21 [INFO] [stderr] | [INFO] [stderr] 190 | None => return None, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/tree/branch.rs:377:20 [INFO] [stderr] | [INFO] [stderr] 377 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 378 | | if levels.len() > 0 { [INFO] [stderr] 379 | | levels.push(Level::new(stash.put(Node::new()))); [INFO] [stderr] 380 | | } [INFO] [stderr] 381 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 377 | } else if levels.len() > 0 { [INFO] [stderr] 378 | levels.push(Level::new(stash.put(Node::new()))); [INFO] [stderr] 379 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/tree/branch.rs:517:9 [INFO] [stderr] | [INFO] [stderr] 517 | branch [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/tree/branch.rs:516:22 [INFO] [stderr] | [INFO] [stderr] 516 | let branch = Branch::first(branch.root(), stash); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/html/mod.rs:5:17 [INFO] [stderr] | [INFO] [stderr] 5 | pub const CSS: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `collection::Collection` [INFO] [stderr] --> src/collection/mod.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | / pub fn new() -> Self { [INFO] [stderr] 97 | | let mut stash = Stash::new(); [INFO] [stderr] 98 | | let root = stash.put(Node::new()); [INFO] [stderr] 99 | | Collection { [INFO] [stderr] ... | [INFO] [stderr] 103 | | } [INFO] [stderr] 104 | | } [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] 91 | impl Default for collection::Collection { [INFO] [stderr] 92 | fn default() -> Self { [INFO] [stderr] 93 | Self::new() [INFO] [stderr] 94 | } [INFO] [stderr] 95 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `stash::Stash` [INFO] [stderr] --> src/stash/mod.rs:158:5 [INFO] [stderr] | [INFO] [stderr] 158 | / pub fn new() -> Self { [INFO] [stderr] 159 | | Stash { [INFO] [stderr] 160 | | uniq: vec![], [INFO] [stderr] 161 | | shared: vec![], [INFO] [stderr] 162 | | } [INFO] [stderr] 163 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 11 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `tree::node::Node` [INFO] [stderr] --> src/tree/node.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | / pub fn new() -> Self { [INFO] [stderr] 106 | | Node { children: VecDeque::new() } [INFO] [stderr] 107 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 68 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree/node.rs:140:12 [INFO] [stderr] | [INFO] [stderr] 140 | if self.children.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree/node.rs:162:9 [INFO] [stderr] | [INFO] [stderr] 162 | self.children.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/tree/node.rs:173:15 [INFO] [stderr] | [INFO] [stderr] 173 | m.map(|inner| Cow::Owned(inner)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Cow::Owned` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree/node.rs:222:12 [INFO] [stderr] | [INFO] [stderr] 222 | if self.children.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tree/level.rs:80:23 [INFO] [stderr] | [INFO] [stderr] 80 | location: self.location.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.location` [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: manual implementation of an assign operation [INFO] [stderr] --> src/tree/level.rs:187:17 [INFO] [stderr] | [INFO] [stderr] 187 | self.ofs = self.ofs + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.ofs += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/tree/level.rs:199:9 [INFO] [stderr] | [INFO] [stderr] 199 | / match stash.get(self.location).child(self.ofs + 1) { [INFO] [stderr] 200 | | Some(_) => true, [INFO] [stderr] 201 | | None => false, [INFO] [stderr] 202 | | } [INFO] [stderr] | |_________^ help: try this: `stash.get(self.location).child(self.ofs + 1).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/tree/level.rs:208:9 [INFO] [stderr] | [INFO] [stderr] 208 | / stash.get(loc) [INFO] [stderr] 209 | | .meta() [INFO] [stderr] 210 | | .map(|meta| Child::new_node(loc, meta.into_owned())) [INFO] [stderr] 211 | | .map(|child| self.insert(child, stash)); [INFO] [stderr] | |___________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 208 | if let Some(child) = stash.get(loc) [INFO] [stderr] 209 | .meta() [INFO] [stderr] 210 | .map(|meta| Child::new_node(loc, meta.into_owned())) { self.insert(child, stash) } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tree/level.rs:255:13 [INFO] [stderr] | [INFO] [stderr] 255 | / match node.remove(self.ofs) { [INFO] [stderr] 256 | | Some(Child::Node { location, .. }) => { [INFO] [stderr] 257 | | child_node_loc = Some(location); [INFO] [stderr] 258 | | self.ofs = self.ofs.saturating_sub(1); [INFO] [stderr] 259 | | } [INFO] [stderr] 260 | | _ => (), [INFO] [stderr] 261 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 255 | if let Some(Child::Node { location, .. }) = node.remove(self.ofs) { [INFO] [stderr] 256 | child_node_loc = Some(location); [INFO] [stderr] 257 | self.ofs = self.ofs.saturating_sub(1); [INFO] [stderr] 258 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tree/level.rs:427:9 [INFO] [stderr] | [INFO] [stderr] 427 | / match R::from_end() { [INFO] [stderr] 428 | | false => pivot = self.ofs as i16, [INFO] [stderr] 429 | | true => pivot = len - self.ofs as i16 - 1, [INFO] [stderr] 430 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if R::from_end() { pivot = len - self.ofs as i16 - 1 } else { pivot = self.ofs as i16 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree/branch.rs:40:21 [INFO] [stderr] | [INFO] [stderr] 40 | levels: self.levels [INFO] [stderr] | _____________________^ [INFO] [stderr] 41 | | .iter() [INFO] [stderr] 42 | | .map(|r| r.clone()) [INFO] [stderr] | |___________________________________^ [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] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 40 | levels: self.levels [INFO] [stderr] 41 | .iter().cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/tree/branch.rs:139:9 [INFO] [stderr] | [INFO] [stderr] 139 | / loop { [INFO] [stderr] 140 | | if let Some(&Child::Node { location, .. }) = [INFO] [stderr] 141 | | self.bottom().child(stash) { [INFO] [stderr] 142 | | self.push(location); [INFO] [stderr] ... | [INFO] [stderr] 145 | | } [INFO] [stderr] 146 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(&Child::Node { location, .. }) = self.bottom().child(stash) { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/tree/branch.rs:243:9 [INFO] [stderr] | [INFO] [stderr] 243 | self.leaf_mut(stash).map(|l| *l = t); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(l) = self.leaf_mut(stash) { ... }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tree/branch.rs:311:27 [INFO] [stderr] | [INFO] [stderr] 311 | let top_loc = self.top().location().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.top().location()` [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: length comparison to zero [INFO] [stderr] --> src/tree/branch.rs:378:20 [INFO] [stderr] | [INFO] [stderr] 378 | if levels.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!levels.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree/branch.rs:384:12 [INFO] [stderr] | [INFO] [stderr] 384 | if levels.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!levels.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/tree/iterator.rs:45:12 [INFO] [stderr] | [INFO] [stderr] 45 | if self.first == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.first` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tree/iterator.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | / pub fn iter<'a>(&'a self) -> Iter<'a, T, M, Beginning> { [INFO] [stderr] 63 | | let branch: Branch<_, _, Beginning> = Branch::first(self.root, [INFO] [stderr] 64 | | &self.stash); [INFO] [stderr] 65 | | Iter::new(branch, &self.stash) [INFO] [stderr] 66 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tree/iterator.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | / pub fn iter_rev<'a>(&'a self) -> Iter<'a, T, M, End> { [INFO] [stderr] 70 | | let branch: Branch<_, _, End> = Branch::first(self.root, &self.stash); [INFO] [stderr] 71 | | Iter::new(branch, &self.stash) [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `collection::Collection` [INFO] [stderr] --> src/collection/mod.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | / pub fn new() -> Self { [INFO] [stderr] 97 | | let mut stash = Stash::new(); [INFO] [stderr] 98 | | let root = stash.put(Node::new()); [INFO] [stderr] 99 | | Collection { [INFO] [stderr] ... | [INFO] [stderr] 103 | | } [INFO] [stderr] 104 | | } [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] 91 | impl Default for collection::Collection { [INFO] [stderr] 92 | fn default() -> Self { [INFO] [stderr] 93 | Self::new() [INFO] [stderr] 94 | } [INFO] [stderr] 95 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `stash::Stash` [INFO] [stderr] --> src/stash/mod.rs:158:5 [INFO] [stderr] | [INFO] [stderr] 158 | / pub fn new() -> Self { [INFO] [stderr] 159 | | Stash { [INFO] [stderr] 160 | | uniq: vec![], [INFO] [stderr] 161 | | shared: vec![], [INFO] [stderr] 162 | | } [INFO] [stderr] 163 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 11 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `tree::node::Node` [INFO] [stderr] --> src/tree/node.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | / pub fn new() -> Self { [INFO] [stderr] 106 | | Node { children: VecDeque::new() } [INFO] [stderr] 107 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 68 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree/node.rs:140:12 [INFO] [stderr] | [INFO] [stderr] 140 | if self.children.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree/node.rs:162:9 [INFO] [stderr] | [INFO] [stderr] 162 | self.children.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/tree/node.rs:173:15 [INFO] [stderr] | [INFO] [stderr] 173 | m.map(|inner| Cow::Owned(inner)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Cow::Owned` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree/node.rs:222:12 [INFO] [stderr] | [INFO] [stderr] 222 | if self.children.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tree/level.rs:80:23 [INFO] [stderr] | [INFO] [stderr] 80 | location: self.location.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.location` [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: manual implementation of an assign operation [INFO] [stderr] --> src/tree/level.rs:187:17 [INFO] [stderr] | [INFO] [stderr] 187 | self.ofs = self.ofs + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.ofs += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/tree/level.rs:199:9 [INFO] [stderr] | [INFO] [stderr] 199 | / match stash.get(self.location).child(self.ofs + 1) { [INFO] [stderr] 200 | | Some(_) => true, [INFO] [stderr] 201 | | None => false, [INFO] [stderr] 202 | | } [INFO] [stderr] | |_________^ help: try this: `stash.get(self.location).child(self.ofs + 1).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/tree/level.rs:208:9 [INFO] [stderr] | [INFO] [stderr] 208 | / stash.get(loc) [INFO] [stderr] 209 | | .meta() [INFO] [stderr] 210 | | .map(|meta| Child::new_node(loc, meta.into_owned())) [INFO] [stderr] 211 | | .map(|child| self.insert(child, stash)); [INFO] [stderr] | |___________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 208 | if let Some(child) = stash.get(loc) [INFO] [stderr] 209 | .meta() [INFO] [stderr] 210 | .map(|meta| Child::new_node(loc, meta.into_owned())) { self.insert(child, stash) } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tree/level.rs:255:13 [INFO] [stderr] | [INFO] [stderr] 255 | / match node.remove(self.ofs) { [INFO] [stderr] 256 | | Some(Child::Node { location, .. }) => { [INFO] [stderr] 257 | | child_node_loc = Some(location); [INFO] [stderr] 258 | | self.ofs = self.ofs.saturating_sub(1); [INFO] [stderr] 259 | | } [INFO] [stderr] 260 | | _ => (), [INFO] [stderr] 261 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 255 | if let Some(Child::Node { location, .. }) = node.remove(self.ofs) { [INFO] [stderr] 256 | child_node_loc = Some(location); [INFO] [stderr] 257 | self.ofs = self.ofs.saturating_sub(1); [INFO] [stderr] 258 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tree/level.rs:427:9 [INFO] [stderr] | [INFO] [stderr] 427 | / match R::from_end() { [INFO] [stderr] 428 | | false => pivot = self.ofs as i16, [INFO] [stderr] 429 | | true => pivot = len - self.ofs as i16 - 1, [INFO] [stderr] 430 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if R::from_end() { pivot = len - self.ofs as i16 - 1 } else { pivot = self.ofs as i16 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tree/branch.rs:40:21 [INFO] [stderr] | [INFO] [stderr] 40 | levels: self.levels [INFO] [stderr] | _____________________^ [INFO] [stderr] 41 | | .iter() [INFO] [stderr] 42 | | .map(|r| r.clone()) [INFO] [stderr] | |___________________________________^ [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] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 40 | levels: self.levels [INFO] [stderr] 41 | .iter().cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/tree/branch.rs:139:9 [INFO] [stderr] | [INFO] [stderr] 139 | / loop { [INFO] [stderr] 140 | | if let Some(&Child::Node { location, .. }) = [INFO] [stderr] 141 | | self.bottom().child(stash) { [INFO] [stderr] 142 | | self.push(location); [INFO] [stderr] ... | [INFO] [stderr] 145 | | } [INFO] [stderr] 146 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(&Child::Node { location, .. }) = self.bottom().child(stash) { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/tree/branch.rs:243:9 [INFO] [stderr] | [INFO] [stderr] 243 | self.leaf_mut(stash).map(|l| *l = t); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(l) = self.leaf_mut(stash) { ... }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tree/branch.rs:311:27 [INFO] [stderr] | [INFO] [stderr] 311 | let top_loc = self.top().location().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.top().location()` [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: length comparison to zero [INFO] [stderr] --> src/tree/branch.rs:378:20 [INFO] [stderr] | [INFO] [stderr] 378 | if levels.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!levels.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree/branch.rs:384:12 [INFO] [stderr] | [INFO] [stderr] 384 | if levels.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!levels.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/tree/iterator.rs:45:12 [INFO] [stderr] | [INFO] [stderr] 45 | if self.first == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.first` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tree/iterator.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | / pub fn iter<'a>(&'a self) -> Iter<'a, T, M, Beginning> { [INFO] [stderr] 63 | | let branch: Branch<_, _, Beginning> = Branch::first(self.root, [INFO] [stderr] 64 | | &self.stash); [INFO] [stderr] 65 | | Iter::new(branch, &self.stash) [INFO] [stderr] 66 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tree/iterator.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | / pub fn iter_rev<'a>(&'a self) -> Iter<'a, T, M, End> { [INFO] [stderr] 70 | | let branch: Branch<_, _, End> = Branch::first(self.root, &self.stash); [INFO] [stderr] 71 | | Iter::new(branch, &self.stash) [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `values`. [INFO] [stderr] --> src/ops/set.rs:155:18 [INFO] [stderr] | [INFO] [stderr] 155 | for i in 0..LOTS { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 155 | for in values.iter().take(LOTS) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/ops/vector.rs:403:13 [INFO] [stderr] | [INFO] [stderr] 403 | b.get_mut(i).map(|mut v| *v -= 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(mut v) = b.get_mut(i) { ... }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/ops/map.rs:253:13 [INFO] [stderr] | [INFO] [stderr] 253 | a.get_mut(i).map(|mut v| *v -= 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(mut v) = a.get_mut(i) { ... }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.98s [INFO] running `"docker" "inspect" "68023c43219264dc56987fb0787c4810cbef299d8ce778bea9eae3b20cce7a06"` [INFO] running `"docker" "rm" "-f" "68023c43219264dc56987fb0787c4810cbef299d8ce778bea9eae3b20cce7a06"` [INFO] [stdout] 68023c43219264dc56987fb0787c4810cbef299d8ce778bea9eae3b20cce7a06