[INFO] crate suffix_tree 0.2.2 is already in cache [INFO] extracting crate suffix_tree 0.2.2 into work/ex/clippy-test-run/sources/stable/reg/suffix_tree/0.2.2 [INFO] extracting crate suffix_tree 0.2.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/suffix_tree/0.2.2 [INFO] validating manifest of suffix_tree-0.2.2 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 suffix_tree-0.2.2 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 suffix_tree-0.2.2 [INFO] removed path dependency suffix from suffix_tree-0.2.2 [INFO] finished frobbing suffix_tree-0.2.2 [INFO] frobbed toml for suffix_tree-0.2.2 written to work/ex/clippy-test-run/sources/stable/reg/suffix_tree/0.2.2/Cargo.toml [INFO] started frobbing suffix_tree-0.2.2 [INFO] removed path dependency suffix from suffix_tree-0.2.2 [INFO] finished frobbing suffix_tree-0.2.2 [INFO] frobbed toml for suffix_tree-0.2.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/suffix_tree/0.2.2/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 suffix_tree-0.2.2 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/suffix_tree/0.2.2:/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] 0db278470460c305c5feef9b35fc0ec251e6e7df07e64d00cd044153d4a872a2 [INFO] running `"docker" "start" "-a" "0db278470460c305c5feef9b35fc0ec251e6e7df07e64d00cd044153d4a872a2"` [INFO] [stderr] Checking suffix v0.4.1 [INFO] [stderr] Checking quickcheck v0.2.27 [INFO] [stderr] Checking suffix_tree v0.2.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/lib.rs:169:13 [INFO] [stderr] | [INFO] [stderr] 169 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:179:13 [INFO] [stderr] | [INFO] [stderr] 179 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:180:13 [INFO] [stderr] | [INFO] [stderr] 180 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: item `Node` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/lib.rs:107:1 [INFO] [stderr] | [INFO] [stderr] 107 | / impl Node { [INFO] [stderr] 108 | | /// An iterator over all children of this node. [INFO] [stderr] 109 | | pub fn children<'t>(&'t self) -> Children<'t> { [INFO] [stderr] 110 | | Children { it: self.children.values() } [INFO] [stderr] ... | [INFO] [stderr] 159 | | } [INFO] [stderr] 160 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [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/lib.rs:109:5 [INFO] [stderr] | [INFO] [stderr] 109 | / pub fn children<'t>(&'t self) -> Children<'t> { [INFO] [stderr] 110 | | Children { it: self.children.values() } [INFO] [stderr] 111 | | } [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/lib.rs:116:5 [INFO] [stderr] | [INFO] [stderr] 116 | / pub fn ancestors<'t>(&'t self) -> Ancestors<'t> { [INFO] [stderr] 117 | | Ancestors { cur: Some(self) } [INFO] [stderr] 118 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:123:5 [INFO] [stderr] | [INFO] [stderr] 123 | / pub fn preorder<'t>(&'t self) -> Preorder<'t> { [INFO] [stderr] 124 | | Preorder::new(self) [INFO] [stderr] 125 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:132:5 [INFO] [stderr] | [INFO] [stderr] 132 | / pub fn leaves<'t>(&'t self) -> Leaves<'t> { [INFO] [stderr] 133 | | Leaves { it: self.preorder() } [INFO] [stderr] 134 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:137:5 [INFO] [stderr] | [INFO] [stderr] 137 | / pub fn suffix_indices<'t>(&'t self) -> SuffixTreeIndices<'t> { [INFO] [stderr] 138 | | SuffixTreeIndices { it: self.leaves(), node: None, cur_suffix: 0 } [INFO] [stderr] 139 | | } [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: length comparison to zero [INFO] [stderr] --> src/lib.rs:153:9 [INFO] [stderr] | [INFO] [stderr] 153 | self.suffixes.len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.suffixes.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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:387:5 [INFO] [stderr] | [INFO] [stderr] 387 | / fn ancestor_lcp_len<'a>(start: &'a mut Node, lcplen: u32) -> &'a mut Node { [INFO] [stderr] 388 | | // Is it worth making a mutable `Ancestors` iterator? [INFO] [stderr] 389 | | // If this is the only place that needs it, probably not. ---AG [INFO] [stderr] 390 | | let mut cur = start; [INFO] [stderr] ... | [INFO] [stderr] 401 | | cur [INFO] [stderr] 402 | | } [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: length comparison to zero [INFO] [stderr] --> src/lib.rs:452:21 [INFO] [stderr] | [INFO] [stderr] 452 | assert!(vins.children.len() > 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!vins.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 field names in struct initialization [INFO] [stderr] --> src/lib.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/lib.rs:169:13 [INFO] [stderr] | [INFO] [stderr] 169 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:179:13 [INFO] [stderr] | [INFO] [stderr] 179 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:180:13 [INFO] [stderr] | [INFO] [stderr] 180 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: item `Node` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/lib.rs:107:1 [INFO] [stderr] | [INFO] [stderr] 107 | / impl Node { [INFO] [stderr] 108 | | /// An iterator over all children of this node. [INFO] [stderr] 109 | | pub fn children<'t>(&'t self) -> Children<'t> { [INFO] [stderr] 110 | | Children { it: self.children.values() } [INFO] [stderr] ... | [INFO] [stderr] 159 | | } [INFO] [stderr] 160 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [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/lib.rs:109:5 [INFO] [stderr] | [INFO] [stderr] 109 | / pub fn children<'t>(&'t self) -> Children<'t> { [INFO] [stderr] 110 | | Children { it: self.children.values() } [INFO] [stderr] 111 | | } [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/lib.rs:116:5 [INFO] [stderr] | [INFO] [stderr] 116 | / pub fn ancestors<'t>(&'t self) -> Ancestors<'t> { [INFO] [stderr] 117 | | Ancestors { cur: Some(self) } [INFO] [stderr] 118 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:123:5 [INFO] [stderr] | [INFO] [stderr] 123 | / pub fn preorder<'t>(&'t self) -> Preorder<'t> { [INFO] [stderr] 124 | | Preorder::new(self) [INFO] [stderr] 125 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:132:5 [INFO] [stderr] | [INFO] [stderr] 132 | / pub fn leaves<'t>(&'t self) -> Leaves<'t> { [INFO] [stderr] 133 | | Leaves { it: self.preorder() } [INFO] [stderr] 134 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:137:5 [INFO] [stderr] | [INFO] [stderr] 137 | / pub fn suffix_indices<'t>(&'t self) -> SuffixTreeIndices<'t> { [INFO] [stderr] 138 | | SuffixTreeIndices { it: self.leaves(), node: None, cur_suffix: 0 } [INFO] [stderr] 139 | | } [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: length comparison to zero [INFO] [stderr] --> src/lib.rs:153:9 [INFO] [stderr] | [INFO] [stderr] 153 | self.suffixes.len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.suffixes.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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:387:5 [INFO] [stderr] | [INFO] [stderr] 387 | / fn ancestor_lcp_len<'a>(start: &'a mut Node, lcplen: u32) -> &'a mut Node { [INFO] [stderr] 388 | | // Is it worth making a mutable `Ancestors` iterator? [INFO] [stderr] 389 | | // If this is the only place that needs it, probably not. ---AG [INFO] [stderr] 390 | | let mut cur = start; [INFO] [stderr] ... | [INFO] [stderr] 401 | | cur [INFO] [stderr] 402 | | } [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: length comparison to zero [INFO] [stderr] --> src/lib.rs:452:21 [INFO] [stderr] | [INFO] [stderr] 452 | assert!(vins.children.len() > 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!vins.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] Finished dev [unoptimized + debuginfo] target(s) in 4.61s [INFO] running `"docker" "inspect" "0db278470460c305c5feef9b35fc0ec251e6e7df07e64d00cd044153d4a872a2"` [INFO] running `"docker" "rm" "-f" "0db278470460c305c5feef9b35fc0ec251e6e7df07e64d00cd044153d4a872a2"` [INFO] [stdout] 0db278470460c305c5feef9b35fc0ec251e6e7df07e64d00cd044153d4a872a2