[INFO] crate permutation-rs 3.0.0 is already in cache [INFO] extracting crate permutation-rs 3.0.0 into work/ex/clippy-test-run/sources/stable/reg/permutation-rs/3.0.0 [INFO] extracting crate permutation-rs 3.0.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/permutation-rs/3.0.0 [INFO] validating manifest of permutation-rs-3.0.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of permutation-rs-3.0.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing permutation-rs-3.0.0 [INFO] finished frobbing permutation-rs-3.0.0 [INFO] frobbed toml for permutation-rs-3.0.0 written to work/ex/clippy-test-run/sources/stable/reg/permutation-rs/3.0.0/Cargo.toml [INFO] started frobbing permutation-rs-3.0.0 [INFO] finished frobbing permutation-rs-3.0.0 [INFO] frobbed toml for permutation-rs-3.0.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/permutation-rs/3.0.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting permutation-rs-3.0.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/permutation-rs/3.0.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 79d7fac9b0f90fe61033444232823730fe6f679785e63b555f8e2149ec7209da [INFO] running `"docker" "start" "-a" "79d7fac9b0f90fe61033444232823730fe6f679785e63b555f8e2149ec7209da"` [INFO] [stderr] Checking permutation-rs v3.0.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/group/permutation.rs:84:23 [INFO] [stderr] | [INFO] [stderr] 84 | Permutation { images: images, n: n } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `images` [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/group/permutation.rs:84:39 [INFO] [stderr] | [INFO] [stderr] 84 | Permutation { images: images, n: n } [INFO] [stderr] | ^^^^ help: replace it with: `n` [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/group/free.rs:93:16 [INFO] [stderr] | [INFO] [stderr] 93 | Word { terms: terms } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `terms` [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/group/free.rs:103:16 [INFO] [stderr] | [INFO] [stderr] 103 | Word { terms: terms } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `terms` [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/group/mod.rs:62:17 [INFO] [stderr] | [INFO] [stderr] 62 | Group { 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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/group/mod.rs:110:9 [INFO] [stderr] | [INFO] [stderr] 110 | write!(f, "<\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/group/mod.rs:114:9 [INFO] [stderr] | [INFO] [stderr] 114 | write!(f, ">\n") [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/group/mod.rs:196:9 [INFO] [stderr] | [INFO] [stderr] 196 | write!(f, "]\n") [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/group/mod.rs:244:20 [INFO] [stderr] | [INFO] [stderr] 244 | Morphism { generator_images: generator_images } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `generator_images` [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/group/permutation.rs:84:23 [INFO] [stderr] | [INFO] [stderr] 84 | Permutation { images: images, n: n } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `images` [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/group/permutation.rs:84:39 [INFO] [stderr] | [INFO] [stderr] 84 | Permutation { images: images, n: n } [INFO] [stderr] | ^^^^ help: replace it with: `n` [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/group/free.rs:93:16 [INFO] [stderr] | [INFO] [stderr] 93 | Word { terms: terms } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `terms` [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/group/free.rs:103:16 [INFO] [stderr] | [INFO] [stderr] 103 | Word { terms: terms } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `terms` [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/group/mod.rs:62:17 [INFO] [stderr] | [INFO] [stderr] 62 | Group { 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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/group/mod.rs:110:9 [INFO] [stderr] | [INFO] [stderr] 110 | write!(f, "<\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/group/mod.rs:114:9 [INFO] [stderr] | [INFO] [stderr] 114 | write!(f, ">\n") [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/group/mod.rs:196:9 [INFO] [stderr] | [INFO] [stderr] 196 | write!(f, "]\n") [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/group/mod.rs:244:20 [INFO] [stderr] | [INFO] [stderr] 244 | Morphism { generator_images: generator_images } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `generator_images` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/group/free.rs:65:24 [INFO] [stderr] | [INFO] [stderr] 65 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 66 | | if !normalized.is_empty() { [INFO] [stderr] 67 | | current = normalized.pop().expect("non-empty stack"); [INFO] [stderr] 68 | | continue; [INFO] [stderr] 69 | | } [INFO] [stderr] 70 | | } [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] 65 | } else if !normalized.is_empty() { [INFO] [stderr] 66 | current = normalized.pop().expect("non-empty stack"); [INFO] [stderr] 67 | continue; [INFO] [stderr] 68 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/group/free.rs:65:24 [INFO] [stderr] | [INFO] [stderr] 65 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 66 | | if !normalized.is_empty() { [INFO] [stderr] 67 | | current = normalized.pop().expect("non-empty stack"); [INFO] [stderr] 68 | | continue; [INFO] [stderr] 69 | | } [INFO] [stderr] 70 | | } [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] 65 | } else if !normalized.is_empty() { [INFO] [stderr] 66 | current = normalized.pop().expect("non-empty stack"); [INFO] [stderr] 67 | continue; [INFO] [stderr] 68 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:92:25 [INFO] [stderr] | [INFO] [stderr] 92 | let image = self.images.get(&original).unwrap_or(&original).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.images.get(&original).unwrap_or(&original)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:105:29 [INFO] [stderr] | [INFO] [stderr] 105 | let mut image = self.images.get(&original).unwrap_or(&original).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.images.get(&original).unwrap_or(&original)` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:106:21 [INFO] [stderr] | [INFO] [stderr] 106 | image = multiplicant.images.get(&image).unwrap_or(&image).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*multiplicant.images.get(&image).unwrap_or(&image)` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:116:25 [INFO] [stderr] | [INFO] [stderr] 116 | let image = self.images.get(&original).unwrap_or(&original).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.images.get(&original).unwrap_or(&original)` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:127:9 [INFO] [stderr] | [INFO] [stderr] 127 | self.images.get(&original).unwrap_or(&original).clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.images.get(&original).unwrap_or(&original)` [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/group/permutation.rs:134:12 [INFO] [stderr] | [INFO] [stderr] 134 | if cycles.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!cycles.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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:159:28 [INFO] [stderr] | [INFO] [stderr] 159 | visited.insert(original.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `original` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:160:34 [INFO] [stderr] | [INFO] [stderr] 160 | let mut cycle = vec!(original.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `original` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:161:29 [INFO] [stderr] | [INFO] [stderr] 161 | let mut image = images.get(&original).unwrap_or(&original).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*images.get(&original).unwrap_or(&original)` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:163:32 [INFO] [stderr] | [INFO] [stderr] 163 | visited.insert(image.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `image` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:164:28 [INFO] [stderr] | [INFO] [stderr] 164 | cycle.push(image.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `image` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:165:25 [INFO] [stderr] | [INFO] [stderr] 165 | image = images.get(&image).unwrap_or(&image).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*images.get(&image).unwrap_or(&image)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/free.rs:48:24 [INFO] [stderr] | [INFO] [stderr] 48 | fn normalize(elements: &Vec<(char, i64)>) -> Vec<(char, i64)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[(char, i64)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/free.rs:56:40 [INFO] [stderr] | [INFO] [stderr] 56 | let mut current: (char, i64) = not_normalized.get(0).expect("at least two elements").clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*not_normalized.get(0).expect("at least two elements")` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/free.rs:59:29 [INFO] [stderr] | [INFO] [stderr] 59 | let primitive = not_normalized.get(index).expect("index within bound").clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*not_normalized.get(index).expect("index within bound")` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/free.rs:61:28 [INFO] [stderr] | [INFO] [stderr] 61 | current = (current.0.clone(), current.1 + primitive.1) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current.0` [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/group/free.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | self.terms.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.terms.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/group/free.rs:109:12 [INFO] [stderr] | [INFO] [stderr] 109 | if self.terms.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.terms.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/calculation.rs:11:42 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn elements_generated_by(generators: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[Permutation]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/group/calculation.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | for ref g in generators { [INFO] [stderr] | ^^^^^ ---------- help: try: `let g = &generators;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/calculation.rs:33:32 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn identity(generators: &Vec) -> G where G: GroupElement { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[G]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/group/calculation.rs:45:24 [INFO] [stderr] | [INFO] [stderr] 45 | .map(|n| n + 1) [INFO] [stderr] | ________________________^ [INFO] [stderr] 46 | | .fold(1u64, |acc, n| acc * n) [INFO] [stderr] | |_____________________________________^ help: try: `.product()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/group/mod.rs:56:15 [INFO] [stderr] | [INFO] [stderr] 56 | while gs.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!gs.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/mod.rs:94:31 [INFO] [stderr] | [INFO] [stderr] 94 | fn find_base(gset: &Vec, generators: &Vec) -> Option [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Domain]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/mod.rs:94:57 [INFO] [stderr] | [INFO] [stderr] 94 | fn find_base(gset: &Vec, generators: &Vec) -> Option [INFO] [stderr] | ^^^^^^^ help: change this to: `&[G]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/mod.rs:179:63 [INFO] [stderr] | [INFO] [stderr] 179 | fn add_to_stabilizers(stabilizer: &G, stabilizers: &Vec) -> bool [INFO] [stderr] | ^^^^^^^ help: change this to: `&[G]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/mod.rs:200:59 [INFO] [stderr] | [INFO] [stderr] 200 | fn transversal_for(start: &Domain, generators: &Vec, indices: &HashMap) -> Option [INFO] [stderr] | ^^^^^^^ help: change this to: `&[G]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:92:25 [INFO] [stderr] | [INFO] [stderr] 92 | let image = self.images.get(&original).unwrap_or(&original).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.images.get(&original).unwrap_or(&original)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:105:29 [INFO] [stderr] | [INFO] [stderr] 105 | let mut image = self.images.get(&original).unwrap_or(&original).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.images.get(&original).unwrap_or(&original)` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:106:21 [INFO] [stderr] | [INFO] [stderr] 106 | image = multiplicant.images.get(&image).unwrap_or(&image).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*multiplicant.images.get(&image).unwrap_or(&image)` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:116:25 [INFO] [stderr] | [INFO] [stderr] 116 | let image = self.images.get(&original).unwrap_or(&original).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.images.get(&original).unwrap_or(&original)` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:127:9 [INFO] [stderr] | [INFO] [stderr] 127 | self.images.get(&original).unwrap_or(&original).clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.images.get(&original).unwrap_or(&original)` [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/group/permutation.rs:134:12 [INFO] [stderr] | [INFO] [stderr] 134 | if cycles.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!cycles.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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:159:28 [INFO] [stderr] | [INFO] [stderr] 159 | visited.insert(original.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `original` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:160:34 [INFO] [stderr] | [INFO] [stderr] 160 | let mut cycle = vec!(original.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `original` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:161:29 [INFO] [stderr] | [INFO] [stderr] 161 | let mut image = images.get(&original).unwrap_or(&original).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*images.get(&original).unwrap_or(&original)` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:163:32 [INFO] [stderr] | [INFO] [stderr] 163 | visited.insert(image.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `image` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:164:28 [INFO] [stderr] | [INFO] [stderr] 164 | cycle.push(image.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `image` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/permutation.rs:165:25 [INFO] [stderr] | [INFO] [stderr] 165 | image = images.get(&image).unwrap_or(&image).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*images.get(&image).unwrap_or(&image)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/free.rs:48:24 [INFO] [stderr] | [INFO] [stderr] 48 | fn normalize(elements: &Vec<(char, i64)>) -> Vec<(char, i64)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[(char, i64)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/free.rs:56:40 [INFO] [stderr] | [INFO] [stderr] 56 | let mut current: (char, i64) = not_normalized.get(0).expect("at least two elements").clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*not_normalized.get(0).expect("at least two elements")` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/free.rs:59:29 [INFO] [stderr] | [INFO] [stderr] 59 | let primitive = not_normalized.get(index).expect("index within bound").clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*not_normalized.get(index).expect("index within bound")` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/group/free.rs:61:28 [INFO] [stderr] | [INFO] [stderr] 61 | current = (current.0.clone(), current.1 + primitive.1) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current.0` [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/group/free.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | self.terms.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.terms.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/group/free.rs:109:12 [INFO] [stderr] | [INFO] [stderr] 109 | if self.terms.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.terms.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/calculation.rs:11:42 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn elements_generated_by(generators: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[Permutation]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/group/calculation.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | for ref g in generators { [INFO] [stderr] | ^^^^^ ---------- help: try: `let g = &generators;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/calculation.rs:33:32 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn identity(generators: &Vec) -> G where G: GroupElement { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[G]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/group/calculation.rs:45:24 [INFO] [stderr] | [INFO] [stderr] 45 | .map(|n| n + 1) [INFO] [stderr] | ________________________^ [INFO] [stderr] 46 | | .fold(1u64, |acc, n| acc * n) [INFO] [stderr] | |_____________________________________^ help: try: `.product()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/group/mod.rs:56:15 [INFO] [stderr] | [INFO] [stderr] 56 | while gs.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!gs.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/mod.rs:94:31 [INFO] [stderr] | [INFO] [stderr] 94 | fn find_base(gset: &Vec, generators: &Vec) -> Option [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Domain]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/mod.rs:94:57 [INFO] [stderr] | [INFO] [stderr] 94 | fn find_base(gset: &Vec, generators: &Vec) -> Option [INFO] [stderr] | ^^^^^^^ help: change this to: `&[G]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/mod.rs:179:63 [INFO] [stderr] | [INFO] [stderr] 179 | fn add_to_stabilizers(stabilizer: &G, stabilizers: &Vec) -> bool [INFO] [stderr] | ^^^^^^^ help: change this to: `&[G]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/group/mod.rs:200:59 [INFO] [stderr] | [INFO] [stderr] 200 | fn transversal_for(start: &Domain, generators: &Vec, indices: &HashMap) -> Option [INFO] [stderr] | ^^^^^^^ help: change this to: `&[G]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.78s [INFO] running `"docker" "inspect" "79d7fac9b0f90fe61033444232823730fe6f679785e63b555f8e2149ec7209da"` [INFO] running `"docker" "rm" "-f" "79d7fac9b0f90fe61033444232823730fe6f679785e63b555f8e2149ec7209da"` [INFO] [stdout] 79d7fac9b0f90fe61033444232823730fe6f679785e63b555f8e2149ec7209da