[INFO] updating cached repository jelford/project_euler [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/jelford/project_euler [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/jelford/project_euler" "work/ex/clippy-test-run/sources/stable/gh/jelford/project_euler"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/jelford/project_euler'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/jelford/project_euler" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jelford/project_euler"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jelford/project_euler'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] b7cdcc12bd242142680e4b73c43fdb1605404b77 [INFO] sha for GitHub repo jelford/project_euler: b7cdcc12bd242142680e4b73c43fdb1605404b77 [INFO] validating manifest of jelford/project_euler 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 jelford/project_euler 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 jelford/project_euler [INFO] finished frobbing jelford/project_euler [INFO] frobbed toml for jelford/project_euler written to work/ex/clippy-test-run/sources/stable/gh/jelford/project_euler/Cargo.toml [INFO] started frobbing jelford/project_euler [INFO] finished frobbing jelford/project_euler [INFO] frobbed toml for jelford/project_euler written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jelford/project_euler/Cargo.toml [INFO] crate jelford/project_euler has a lockfile. skipping [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 jelford/project_euler against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/jelford/project_euler:/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] 2a52707b1dafe6c8e3e491d686d33a2b8796cad08c226cbe3ddcd074eb083a03 [INFO] running `"docker" "start" "-a" "2a52707b1dafe6c8e3e491d686d33a2b8796cad08c226cbe3ddcd074eb083a03"` [INFO] [stderr] Checking project_euler v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/primes/mod.rs:94:9 [INFO] [stderr] | [INFO] [stderr] 94 | seed_primes: seed_primes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `seed_primes` [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/primes/mod.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | upper_bound: upper_bound, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `upper_bound` [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/primes/mod.rs:97:9 [INFO] [stderr] | [INFO] [stderr] 97 | segment_size: segment_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `segment_size` [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/pythagorian_triplets.rs:36:66 [INFO] [stderr] | [INFO] [stderr] 36 | self.current = PythagPoint { a: i, b: j, c: c }; [INFO] [stderr] | ^^^^ help: replace it with: `c` [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/primes/mod.rs:94:9 [INFO] [stderr] | [INFO] [stderr] 94 | seed_primes: seed_primes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `seed_primes` [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/primes/mod.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | upper_bound: upper_bound, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `upper_bound` [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/primes/mod.rs:97:9 [INFO] [stderr] | [INFO] [stderr] 97 | segment_size: segment_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `segment_size` [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/pythagorian_triplets.rs:36:66 [INFO] [stderr] | [INFO] [stderr] 36 | self.current = PythagPoint { a: i, b: j, c: c }; [INFO] [stderr] | ^^^^ help: replace it with: `c` [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/factorization.rs:32:16 [INFO] [stderr] | [INFO] [stderr] 32 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 33 | | if let Some(f) = seive.next() { [INFO] [stderr] 34 | | factor = f; [INFO] [stderr] 35 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 38 | | } [INFO] [stderr] 39 | | } [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] 32 | } else if let Some(f) = seive.next() { [INFO] [stderr] 33 | factor = f; [INFO] [stderr] 34 | } else { [INFO] [stderr] 35 | res.push(t); [INFO] [stderr] 36 | return res; [INFO] [stderr] 37 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/factorization.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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/palindromes.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | return num; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `num` [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: unneeded return statement [INFO] [stderr] --> src/palindromes.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | return Some(res); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(res)` [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: unneeded return statement [INFO] [stderr] --> src/primes/mod.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | return self.primes.iter().fold(1, |acc, &x| acc * x); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.primes.iter().fold(1, |acc, &x| acc * x)` [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: unneeded return statement [INFO] [stderr] --> src/primes/mod.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | return left_i == right_i; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `left_i == right_i` [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: unneeded return statement [INFO] [stderr] --> src/primes/mod.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / return if left_total > right_total { [INFO] [stderr] 287 | | Some(Ordering::Greater) [INFO] [stderr] 288 | | } else { [INFO] [stderr] 289 | | Some(Ordering::Less) [INFO] [stderr] 290 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 286 | if left_total > right_total { [INFO] [stderr] 287 | Some(Ordering::Greater) [INFO] [stderr] 288 | } else { [INFO] [stderr] 289 | Some(Ordering::Less) [INFO] [stderr] 290 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/factorization.rs:32:16 [INFO] [stderr] | [INFO] [stderr] 32 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 33 | | if let Some(f) = seive.next() { [INFO] [stderr] 34 | | factor = f; [INFO] [stderr] 35 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 38 | | } [INFO] [stderr] 39 | | } [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] 32 | } else if let Some(f) = seive.next() { [INFO] [stderr] 33 | factor = f; [INFO] [stderr] 34 | } else { [INFO] [stderr] 35 | res.push(t); [INFO] [stderr] 36 | return res; [INFO] [stderr] 37 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/factorization.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: long literal lacking separators [INFO] [stderr] --> src/factorization.rs:164:34 [INFO] [stderr] | [INFO] [stderr] 164 | assert_eq!(prime_factors(0xFFFFFFFB), vec![0xFFFFFFFB]); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFB` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/factorization.rs:164:52 [INFO] [stderr] | [INFO] [stderr] 164 | assert_eq!(prime_factors(0xFFFFFFFB), vec![0xFFFFFFFB]); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFB` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/palindromes.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | return num; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `num` [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: unneeded return statement [INFO] [stderr] --> src/palindromes.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | return Some(res); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(res)` [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: unneeded return statement [INFO] [stderr] --> src/primes/mod.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | return self.primes.iter().fold(1, |acc, &x| acc * x); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.primes.iter().fold(1, |acc, &x| acc * x)` [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: unneeded return statement [INFO] [stderr] --> src/primes/mod.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | return left_i == right_i; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `left_i == right_i` [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: unneeded return statement [INFO] [stderr] --> src/primes/mod.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / return if left_total > right_total { [INFO] [stderr] 287 | | Some(Ordering::Greater) [INFO] [stderr] 288 | | } else { [INFO] [stderr] 289 | | Some(Ordering::Less) [INFO] [stderr] 290 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 286 | if left_total > right_total { [INFO] [stderr] 287 | Some(Ordering::Greater) [INFO] [stderr] 288 | } else { [INFO] [stderr] 289 | Some(Ordering::Less) [INFO] [stderr] 290 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/primes/mod.rs:334:38 [INFO] [stderr] | [INFO] [stderr] 334 | let r = stream_of_primes(15000000).nth(3939).unwrap(); [INFO] [stderr] | ^^^^^^^^ help: consider: `15_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [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/bitset.rs:1:35 [INFO] [stderr] | [INFO] [stderr] 1 | pub fn powerset(target: &Vec) -> Vec> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [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/factorization.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | prime_factors(target).last().unwrap().clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*prime_factors(target).last().unwrap()` [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/factorization.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | t = t / factor; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `t /= factor` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/fizzbuzz.rs:1:32 [INFO] [stderr] | [INFO] [stderr] 1 | pub fn is_product_of_3_or_5(n: &u64) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [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/palindromes.rs:15:28 [INFO] [stderr] | [INFO] [stderr] 15 | fn num_from_digits(digits: &Vec) -> u64 { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[i8]` [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/palindromes.rs:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | fn step(digits: &Vec) -> Option> { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 36 | fn step(digits: &[i8]) -> Option> { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `digits.clone()` to [INFO] [stderr] | [INFO] [stderr] 37 | let mut res = digits.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/palindromes.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in target + 1..limit + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `target + 1..=limit` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [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/primes/mod.rs:12:73 [INFO] [stderr] | [INFO] [stderr] 12 | fn primes_from_next_seive_segment(floor: u64, size: usize, seed_primes: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u64]` [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/primes/mod.rs:18:17 [INFO] [stderr] | [INFO] [stderr] 18 | let p = i.clone() as f64; [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*i` [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: manual implementation of an assign operation [INFO] [stderr] --> src/primes/mod.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | self.next_segment_floor = self.next_segment_floor + self.segment_size as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.next_segment_floor += self.segment_size as u64` [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/primes/mod.rs:86:22 [INFO] [stderr] | [INFO] [stderr] 86 | for j in i..(segment_size / i) + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `i..=(segment_size / i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/primes/mod.rs:219:34 [INFO] [stderr] | [INFO] [stderr] 219 | return self.primes.iter().fold(1, |acc, &x| acc * x); [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/primes/mod.rs:277:12 [INFO] [stderr] | [INFO] [stderr] 277 | if left.primes.len() == 0 && right.primes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `left.primes.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/primes/mod.rs:277:38 [INFO] [stderr] | [INFO] [stderr] 277 | if left.primes.len() == 0 && right.primes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!right.primes.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/primes/mod.rs:279:19 [INFO] [stderr] | [INFO] [stderr] 279 | } else if right.primes.len() == 0 && left.primes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `right.primes.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/primes/mod.rs:279:46 [INFO] [stderr] | [INFO] [stderr] 279 | } else if right.primes.len() == 0 && left.primes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!left.primes.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: long literal lacking separators [INFO] [stderr] --> src/main.rs:18:77 [INFO] [stderr] | [INFO] [stderr] 18 | let res: u64 = fib_series().filter(|&x| x % 2 == 0).take_while(|&x| x < 4000000).sum(); [INFO] [stderr] | ^^^^^^^ help: consider: `4_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:25:45 [INFO] [stderr] | [INFO] [stderr] 25 | println!("03: {}", highest_prime_factor(600851475143)) [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `600_851_475_143` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] error[E0554]: #![feature] may not be used on the stable release channel [INFO] [stderr] --> benches/primes.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #![feature(test)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0554`. [INFO] [stderr] error: Could not compile `project_euler`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:18:77 [INFO] [stderr] | [INFO] [stderr] 18 | let res: u64 = fib_series().filter(|&x| x % 2 == 0).take_while(|&x| x < 4000000).sum(); [INFO] [stderr] | ^^^^^^^ help: consider: `4_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:25:45 [INFO] [stderr] | [INFO] [stderr] 25 | println!("03: {}", highest_prime_factor(600851475143)) [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `600_851_475_143` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [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/bitset.rs:1:35 [INFO] [stderr] | [INFO] [stderr] 1 | pub fn powerset(target: &Vec) -> Vec> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [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/factorization.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | prime_factors(target).last().unwrap().clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*prime_factors(target).last().unwrap()` [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/factorization.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | t = t / factor; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `t /= factor` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/fizzbuzz.rs:1:32 [INFO] [stderr] | [INFO] [stderr] 1 | pub fn is_product_of_3_or_5(n: &u64) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [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/palindromes.rs:15:28 [INFO] [stderr] | [INFO] [stderr] 15 | fn num_from_digits(digits: &Vec) -> u64 { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[i8]` [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/palindromes.rs:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | fn step(digits: &Vec) -> Option> { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 36 | fn step(digits: &[i8]) -> Option> { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `digits.clone()` to [INFO] [stderr] | [INFO] [stderr] 37 | let mut res = digits.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/palindromes.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in target + 1..limit + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `target + 1..=limit` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [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/primes/mod.rs:12:73 [INFO] [stderr] | [INFO] [stderr] 12 | fn primes_from_next_seive_segment(floor: u64, size: usize, seed_primes: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u64]` [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/primes/mod.rs:18:17 [INFO] [stderr] | [INFO] [stderr] 18 | let p = i.clone() as f64; [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*i` [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: manual implementation of an assign operation [INFO] [stderr] --> src/primes/mod.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | self.next_segment_floor = self.next_segment_floor + self.segment_size as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.next_segment_floor += self.segment_size as u64` [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/primes/mod.rs:86:22 [INFO] [stderr] | [INFO] [stderr] 86 | for j in i..(segment_size / i) + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `i..=(segment_size / i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/primes/mod.rs:219:34 [INFO] [stderr] | [INFO] [stderr] 219 | return self.primes.iter().fold(1, |acc, &x| acc * x); [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/primes/mod.rs:277:12 [INFO] [stderr] | [INFO] [stderr] 277 | if left.primes.len() == 0 && right.primes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `left.primes.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/primes/mod.rs:277:38 [INFO] [stderr] | [INFO] [stderr] 277 | if left.primes.len() == 0 && right.primes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!right.primes.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/primes/mod.rs:279:19 [INFO] [stderr] | [INFO] [stderr] 279 | } else if right.primes.len() == 0 && left.primes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `right.primes.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/primes/mod.rs:279:46 [INFO] [stderr] | [INFO] [stderr] 279 | } else if right.primes.len() == 0 && left.primes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!left.primes.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: useless use of `vec!` [INFO] [stderr] --> src/primes/mod.rs:352:30 [INFO] [stderr] | [INFO] [stderr] 352 | let p = from(&vec![2, 3, 5]); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[2, 3, 5]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/primes/mod.rs:353:58 [INFO] [stderr] | [INFO] [stderr] 353 | let res = p.lowest_common_multiple(&from(&vec![7, 11, 13])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[7, 11, 13]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/primes/mod.rs:361:30 [INFO] [stderr] | [INFO] [stderr] 361 | let p = from(&vec![2, 3, 5]); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[2, 3, 5]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/primes/mod.rs:362:58 [INFO] [stderr] | [INFO] [stderr] 362 | let res = p.lowest_common_multiple(&from(&vec![3, 5, 7])); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[3, 5, 7]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/primes/mod.rs:371:30 [INFO] [stderr] | [INFO] [stderr] 371 | let p = from(&vec![2, 3, 5, 5]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[2, 3, 5, 5]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/primes/mod.rs:373:30 [INFO] [stderr] | [INFO] [stderr] 373 | let q = from(&vec![3, 3, 5, 7]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[3, 3, 5, 7]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/primes/mod.rs:388:30 [INFO] [stderr] | [INFO] [stderr] 388 | let p = from(&vec![2, 3, 5]); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[2, 3, 5]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/primes/mod.rs:389:30 [INFO] [stderr] | [INFO] [stderr] 389 | let q = from(&vec![3, 5, 7]); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[3, 5, 7]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `==` [INFO] [stderr] --> src/primes/mod.rs:406:25 [INFO] [stderr] | [INFO] [stderr] 406 | assert!(a == a); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `==` [INFO] [stderr] --> src/primes/mod.rs:418:25 [INFO] [stderr] | [INFO] [stderr] 418 | assert!(a == a); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `==` [INFO] [stderr] --> src/primes/mod.rs:430:25 [INFO] [stderr] | [INFO] [stderr] 430 | assert!(a == a); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `>=` [INFO] [stderr] --> src/primes/mod.rs:477:25 [INFO] [stderr] | [INFO] [stderr] 477 | assert!(c >= c); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `project_euler`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "2a52707b1dafe6c8e3e491d686d33a2b8796cad08c226cbe3ddcd074eb083a03"` [INFO] running `"docker" "rm" "-f" "2a52707b1dafe6c8e3e491d686d33a2b8796cad08c226cbe3ddcd074eb083a03"` [INFO] [stdout] 2a52707b1dafe6c8e3e491d686d33a2b8796cad08c226cbe3ddcd074eb083a03