[INFO] updating cached repository dhbradshaw/ProjectEulerFastRust [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/dhbradshaw/ProjectEulerFastRust [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/dhbradshaw/ProjectEulerFastRust" "work/ex/clippy-test-run/sources/stable/gh/dhbradshaw/ProjectEulerFastRust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/dhbradshaw/ProjectEulerFastRust'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/dhbradshaw/ProjectEulerFastRust" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dhbradshaw/ProjectEulerFastRust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dhbradshaw/ProjectEulerFastRust'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] d5b0f88dd29cec9e60cf4d6b306d3c4c3d8c32b9 [INFO] sha for GitHub repo dhbradshaw/ProjectEulerFastRust: d5b0f88dd29cec9e60cf4d6b306d3c4c3d8c32b9 [INFO] validating manifest of dhbradshaw/ProjectEulerFastRust 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 dhbradshaw/ProjectEulerFastRust 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 dhbradshaw/ProjectEulerFastRust [INFO] finished frobbing dhbradshaw/ProjectEulerFastRust [INFO] frobbed toml for dhbradshaw/ProjectEulerFastRust written to work/ex/clippy-test-run/sources/stable/gh/dhbradshaw/ProjectEulerFastRust/Cargo.toml [INFO] started frobbing dhbradshaw/ProjectEulerFastRust [INFO] finished frobbing dhbradshaw/ProjectEulerFastRust [INFO] frobbed toml for dhbradshaw/ProjectEulerFastRust written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dhbradshaw/ProjectEulerFastRust/Cargo.toml [INFO] crate dhbradshaw/ProjectEulerFastRust 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 dhbradshaw/ProjectEulerFastRust 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/dhbradshaw/ProjectEulerFastRust:/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] 980776790d29534fef8f21223e4f34774873d063de5dd09982b7bec6e43bc8a0 [INFO] running `"docker" "start" "-a" "980776790d29534fef8f21223e4f34774873d063de5dd09982b7bec6e43bc8a0"` [INFO] [stderr] Checking permutohedron v0.2.2 [INFO] [stderr] Checking bencher v0.1.4 [INFO] [stderr] Checking rand v0.3.16 [INFO] [stderr] Checking arrayvec v0.4.0 [INFO] [stderr] Checking num-bigint v0.1.40 [INFO] [stderr] Checking num-rational v0.1.39 [INFO] [stderr] Checking num v0.1.40 [INFO] [stderr] Checking chrono v0.4.0 [INFO] [stderr] Checking eulerrust v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/collatz.rs:7:19 [INFO] [stderr] | [INFO] [stderr] 7 | Collatz { n: n } [INFO] [stderr] | ^^^^ help: replace it with: `n` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/problems.rs:202:13 [INFO] [stderr] | [INFO] [stderr] 202 | let mut i = 0; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/problems.rs:1333:17 [INFO] [stderr] | [INFO] [stderr] 1333 | let c = m_squared + n_squared; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/problems.rs:1336:17 [INFO] [stderr] | [INFO] [stderr] 1336 | let p = a + b + c; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/problems.rs:1342:25 [INFO] [stderr] | [INFO] [stderr] 1342 | let mut k = 1; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/collatz.rs:7:19 [INFO] [stderr] | [INFO] [stderr] 7 | Collatz { n: n } [INFO] [stderr] | ^^^^ help: replace it with: `n` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/problems.rs:202:13 [INFO] [stderr] | [INFO] [stderr] 202 | let mut i = 0; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/problems.rs:1333:17 [INFO] [stderr] | [INFO] [stderr] 1333 | let c = m_squared + n_squared; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/problems.rs:1336:17 [INFO] [stderr] | [INFO] [stderr] 1336 | let p = a + b + c; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/problems.rs:1342:25 [INFO] [stderr] | [INFO] [stderr] 1342 | let mut k = 1; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/champerownes.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | return n; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `n` [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/collatz.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/collatz.rs:29:12 [INFO] [stderr] | [INFO] [stderr] 29 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 30 | | if n == 1 { [INFO] [stderr] 31 | | return 1; [INFO] [stderr] 32 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 42 | | } [INFO] [stderr] 43 | | } [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] 29 | } else if n == 1 { [INFO] [stderr] 30 | return 1; [INFO] [stderr] 31 | } else { [INFO] [stderr] 32 | let val = 1 + [INFO] [stderr] 33 | match n % 2 { [INFO] [stderr] 34 | 0 => count_collatz(n / 2, lengths), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexicographic.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexicographic.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexicographic.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexicographic.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | return Some(vec![a[1], a[0]]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vec![a[1], a[0]])` [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/lexicographic.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexicographic.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | return Some(vec![a[1], a[0]]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vec![a[1], a[0]])` [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: long literal lacking separators [INFO] [stderr] --> src/lexicographic.rs:127:62 [INFO] [stderr] | [INFO] [stderr] 127 | let factorials = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]; [INFO] [stderr] | ^^^^^^ help: consider: `362_880` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/numberletters.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | out [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/numberletters.rs:45:15 [INFO] [stderr] | [INFO] [stderr] 45 | let out = match ones { [INFO] [stderr] | _______________^ [INFO] [stderr] 46 | | 0 => format!("{}", s), [INFO] [stderr] 47 | | _ => format!("{}-{}", s, spell_under_20(ones)), [INFO] [stderr] 48 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/numberletters.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | return spell_under_100(rest); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `spell_under_100(rest)` [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: long literal lacking separators [INFO] [stderr] --> src/primes.rs:186:36 [INFO] [stderr] | [INFO] [stderr] 186 | pub fn sieve_2_000_000() -> [bool; 2000000] { [INFO] [stderr] | ^^^^^^^ help: consider: `2_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: long literal lacking separators [INFO] [stderr] --> src/primes.rs:187:31 [INFO] [stderr] | [INFO] [stderr] 187 | let mut is_prime = [true; 2000000]; [INFO] [stderr] | ^^^^^^^ help: consider: `2_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: long literal lacking separators [INFO] [stderr] --> src/problems.rs:62:17 [INFO] [stderr] | [INFO] [stderr] 62 | while t2 <= 4000000 { [INFO] [stderr] | ^^^^^^^ help: consider: `4_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: long literal lacking separators [INFO] [stderr] --> src/problems.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | if n >= 4000000 { [INFO] [stderr] | ^^^^^^^ help: consider: `4_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: long literal lacking separators [INFO] [stderr] --> src/problems.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | let n = 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: long literal lacking separators [INFO] [stderr] --> src/problems.rs:214:27 [INFO] [stderr] | [INFO] [stderr] 214 | let b_numerator = 500000 - 1000 * a; [INFO] [stderr] | ^^^^^^ help: consider: `500_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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/problems.rs:327:19 [INFO] [stderr] | [INFO] [stderr] 327 | const P13_INPUT: &'static str = r"37107287533902102798797998220837590246510135740250 [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:474:18 [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_prefixed_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 474 | vec![4, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 474 | vec![0o4, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:474:38 [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 9, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 0o9, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:474:70 [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 4, 23], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 0o4, 23], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:475:26 [INFO] [stderr] | [INFO] [stderr] 475 | vec![63, 66, 04, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 475 | vec![63, 66, 4, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 475 | vec![63, 66, 0o4, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:481:26 [INFO] [stderr] | [INFO] [stderr] 481 | vec![99, 65, 04, 28, 06, 16, 70, 92], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 481 | vec![99, 65, 4, 28, 06, 16, 70, 92], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 481 | vec![99, 65, 0o4, 28, 06, 16, 70, 92], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:481:34 [INFO] [stderr] | [INFO] [stderr] 481 | vec![99, 65, 04, 28, 06, 16, 70, 92], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 481 | vec![99, 65, 04, 28, 6, 16, 70, 92], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 481 | vec![99, 65, 04, 28, 0o6, 16, 70, 92], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:482:22 [INFO] [stderr] | [INFO] [stderr] 482 | vec![88, 02, 77, 73, 07, 63, 67], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 482 | vec![88, 2, 77, 73, 07, 63, 67], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 482 | vec![88, 0o2, 77, 73, 07, 63, 67], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:482:34 [INFO] [stderr] | [INFO] [stderr] 482 | vec![88, 02, 77, 73, 07, 63, 67], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 482 | vec![88, 02, 77, 73, 7, 63, 67], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 482 | vec![88, 02, 77, 73, 0o7, 63, 67], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:483:22 [INFO] [stderr] | [INFO] [stderr] 483 | vec![19, 01, 23, 75, 03, 34], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 483 | vec![19, 1, 23, 75, 03, 34], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 483 | vec![19, 0o1, 23, 75, 03, 34], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:483:34 [INFO] [stderr] | [INFO] [stderr] 483 | vec![19, 01, 23, 75, 03, 34], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 483 | vec![19, 01, 23, 75, 3, 34], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 483 | vec![19, 01, 23, 75, 0o3, 34], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:484:22 [INFO] [stderr] | [INFO] [stderr] 484 | vec![20, 04, 82, 47, 65], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 484 | vec![20, 4, 82, 47, 65], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 484 | vec![20, 0o4, 82, 47, 65], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/problems.rs:1011:13 [INFO] [stderr] | [INFO] [stderr] 1011 | / if pan { [INFO] [stderr] 1012 | | if no_repeats(p as usize, &mut digits) { [INFO] [stderr] 1013 | | [INFO] [stderr] 1014 | | // Check that all nine digits are used [INFO] [stderr] ... | [INFO] [stderr] 1029 | | } [INFO] [stderr] 1030 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1011 | if pan && no_repeats(p as usize, &mut digits) { [INFO] [stderr] 1012 | [INFO] [stderr] 1013 | // Check that all nine digits are used [INFO] [stderr] 1014 | for i in 1..10 { [INFO] [stderr] 1015 | if !digits[i] { [INFO] [stderr] 1016 | pan = false; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/problems.rs:1023:21 [INFO] [stderr] | [INFO] [stderr] 1023 | / if pan { [INFO] [stderr] 1024 | | if !pandigital_products.contains(&p) { [INFO] [stderr] 1025 | | pandigital_products.insert(p); [INFO] [stderr] 1026 | | sum += p; [INFO] [stderr] 1027 | | } [INFO] [stderr] 1028 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1023 | if pan && !pandigital_products.contains(&p) { [INFO] [stderr] 1024 | pandigital_products.insert(p); [INFO] [stderr] 1025 | sum += p; [INFO] [stderr] 1026 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/problems.rs:1094:18 [INFO] [stderr] | [INFO] [stderr] 1094 | 9 => 362880, [INFO] [stderr] | ^^^^^^ help: consider: `362_880` [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: long literal lacking separators [INFO] [stderr] --> src/problems.rs:1369:44 [INFO] [stderr] | [INFO] [stderr] 1369 | let digits = [1, 10, 100, 1000, 10000, 100000, 1000000]; [INFO] [stderr] | ^^^^^^ help: consider: `100_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: long literal lacking separators [INFO] [stderr] --> src/problems.rs:1369:52 [INFO] [stderr] | [INFO] [stderr] 1369 | let digits = [1, 10, 100, 1000, 10000, 100000, 1000000]; [INFO] [stderr] | ^^^^^^^ help: consider: `1_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: unneeded return statement [INFO] [stderr] --> src/problems.rs:1489:13 [INFO] [stderr] | [INFO] [stderr] 1489 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/problems.rs:1501:9 [INFO] [stderr] | [INFO] [stderr] 1501 | / if prime == 5 { [INFO] [stderr] 1502 | | if !(last == 0 || last == 5) { [INFO] [stderr] 1503 | | return branches; [INFO] [stderr] 1504 | | } [INFO] [stderr] 1505 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1501 | if prime == 5 && !(last == 0 || last == 5) { [INFO] [stderr] 1502 | return branches; [INFO] [stderr] 1503 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/problems.rs:1508:13 [INFO] [stderr] | [INFO] [stderr] 1508 | / if !*b { [INFO] [stderr] 1509 | | if ((d as u32) * 100 + rest) % prime == 0 { [INFO] [stderr] 1510 | | branches.push(self.add_digit(d as u8).unwrap()) [INFO] [stderr] 1511 | | } [INFO] [stderr] 1512 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1508 | if !*b && ((d as u32) * 100 + rest) % prime == 0 { [INFO] [stderr] 1509 | branches.push(self.add_digit(d as u8).unwrap()) [INFO] [stderr] 1510 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/champerownes.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | return n; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `n` [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/collatz.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/collatz.rs:29:12 [INFO] [stderr] | [INFO] [stderr] 29 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 30 | | if n == 1 { [INFO] [stderr] 31 | | return 1; [INFO] [stderr] 32 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 42 | | } [INFO] [stderr] 43 | | } [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] 29 | } else if n == 1 { [INFO] [stderr] 30 | return 1; [INFO] [stderr] 31 | } else { [INFO] [stderr] 32 | let val = 1 + [INFO] [stderr] 33 | match n % 2 { [INFO] [stderr] 34 | 0 => count_collatz(n / 2, lengths), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lattice.rs:90:47 [INFO] [stderr] | [INFO] [stderr] 90 | assert_eq!(corner_to_corner_fast(20), 137846528820); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `137_846_528_820` [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: unneeded return statement [INFO] [stderr] --> src/lexicographic.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexicographic.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexicographic.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexicographic.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | return Some(vec![a[1], a[0]]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vec![a[1], a[0]])` [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/lexicographic.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexicographic.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | return Some(vec![a[1], a[0]]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vec![a[1], a[0]])` [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: long literal lacking separators [INFO] [stderr] --> src/lexicographic.rs:127:62 [INFO] [stderr] | [INFO] [stderr] 127 | let factorials = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]; [INFO] [stderr] | ^^^^^^ help: consider: `362_880` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/numberletters.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | out [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/numberletters.rs:45:15 [INFO] [stderr] | [INFO] [stderr] 45 | let out = match ones { [INFO] [stderr] | _______________^ [INFO] [stderr] 46 | | 0 => format!("{}", s), [INFO] [stderr] 47 | | _ => format!("{}-{}", s, spell_under_20(ones)), [INFO] [stderr] 48 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/numberletters.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | return spell_under_100(rest); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `spell_under_100(rest)` [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: long literal lacking separators [INFO] [stderr] --> src/palindrome.rs:106:63 [INFO] [stderr] | [INFO] [stderr] 106 | assert_eq!(binary_palindrome_from_base(0b100, false), 0b100001); [INFO] [stderr] | ^^^^^^^^ help: consider: `0b10_0001` [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: long literal lacking separators [INFO] [stderr] --> src/primes.rs:186:36 [INFO] [stderr] | [INFO] [stderr] 186 | pub fn sieve_2_000_000() -> [bool; 2000000] { [INFO] [stderr] | ^^^^^^^ help: consider: `2_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: long literal lacking separators [INFO] [stderr] --> src/primes.rs:187:31 [INFO] [stderr] | [INFO] [stderr] 187 | let mut is_prime = [true; 2000000]; [INFO] [stderr] | ^^^^^^^ help: consider: `2_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: long literal lacking separators [INFO] [stderr] --> src/problems.rs:62:17 [INFO] [stderr] | [INFO] [stderr] 62 | while t2 <= 4000000 { [INFO] [stderr] | ^^^^^^^ help: consider: `4_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: long literal lacking separators [INFO] [stderr] --> src/problems.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | if n >= 4000000 { [INFO] [stderr] | ^^^^^^^ help: consider: `4_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: long literal lacking separators [INFO] [stderr] --> src/problems.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | let n = 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: long literal lacking separators [INFO] [stderr] --> src/problems.rs:214:27 [INFO] [stderr] | [INFO] [stderr] 214 | let b_numerator = 500000 - 1000 * a; [INFO] [stderr] | ^^^^^^ help: consider: `500_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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/problems.rs:327:19 [INFO] [stderr] | [INFO] [stderr] 327 | const P13_INPUT: &'static str = r"37107287533902102798797998220837590246510135740250 [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:474:18 [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_prefixed_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 474 | vec![4, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 474 | vec![0o4, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:474:38 [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 9, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 0o9, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:474:70 [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 04, 23], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 4, 23], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 474 | vec![04, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 0o4, 23], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:475:26 [INFO] [stderr] | [INFO] [stderr] 475 | vec![63, 66, 04, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 475 | vec![63, 66, 4, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 475 | vec![63, 66, 0o4, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:481:26 [INFO] [stderr] | [INFO] [stderr] 481 | vec![99, 65, 04, 28, 06, 16, 70, 92], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 481 | vec![99, 65, 4, 28, 06, 16, 70, 92], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 481 | vec![99, 65, 0o4, 28, 06, 16, 70, 92], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:481:34 [INFO] [stderr] | [INFO] [stderr] 481 | vec![99, 65, 04, 28, 06, 16, 70, 92], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 481 | vec![99, 65, 04, 28, 6, 16, 70, 92], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 481 | vec![99, 65, 04, 28, 0o6, 16, 70, 92], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:482:22 [INFO] [stderr] | [INFO] [stderr] 482 | vec![88, 02, 77, 73, 07, 63, 67], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 482 | vec![88, 2, 77, 73, 07, 63, 67], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 482 | vec![88, 0o2, 77, 73, 07, 63, 67], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:482:34 [INFO] [stderr] | [INFO] [stderr] 482 | vec![88, 02, 77, 73, 07, 63, 67], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 482 | vec![88, 02, 77, 73, 7, 63, 67], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 482 | vec![88, 02, 77, 73, 0o7, 63, 67], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:483:22 [INFO] [stderr] | [INFO] [stderr] 483 | vec![19, 01, 23, 75, 03, 34], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 483 | vec![19, 1, 23, 75, 03, 34], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 483 | vec![19, 0o1, 23, 75, 03, 34], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:483:34 [INFO] [stderr] | [INFO] [stderr] 483 | vec![19, 01, 23, 75, 03, 34], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 483 | vec![19, 01, 23, 75, 3, 34], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 483 | vec![19, 01, 23, 75, 0o3, 34], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/problems.rs:484:22 [INFO] [stderr] | [INFO] [stderr] 484 | vec![20, 04, 82, 47, 65], [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 484 | vec![20, 4, 82, 47, 65], [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 484 | vec![20, 0o4, 82, 47, 65], [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/problems.rs:1011:13 [INFO] [stderr] | [INFO] [stderr] 1011 | / if pan { [INFO] [stderr] 1012 | | if no_repeats(p as usize, &mut digits) { [INFO] [stderr] 1013 | | [INFO] [stderr] 1014 | | // Check that all nine digits are used [INFO] [stderr] ... | [INFO] [stderr] 1029 | | } [INFO] [stderr] 1030 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1011 | if pan && no_repeats(p as usize, &mut digits) { [INFO] [stderr] 1012 | [INFO] [stderr] 1013 | // Check that all nine digits are used [INFO] [stderr] 1014 | for i in 1..10 { [INFO] [stderr] 1015 | if !digits[i] { [INFO] [stderr] 1016 | pan = false; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/problems.rs:1023:21 [INFO] [stderr] | [INFO] [stderr] 1023 | / if pan { [INFO] [stderr] 1024 | | if !pandigital_products.contains(&p) { [INFO] [stderr] 1025 | | pandigital_products.insert(p); [INFO] [stderr] 1026 | | sum += p; [INFO] [stderr] 1027 | | } [INFO] [stderr] 1028 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1023 | if pan && !pandigital_products.contains(&p) { [INFO] [stderr] 1024 | pandigital_products.insert(p); [INFO] [stderr] 1025 | sum += p; [INFO] [stderr] 1026 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/problems.rs:1094:18 [INFO] [stderr] | [INFO] [stderr] 1094 | 9 => 362880, [INFO] [stderr] | ^^^^^^ help: consider: `362_880` [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: long literal lacking separators [INFO] [stderr] --> src/problems.rs:1369:44 [INFO] [stderr] | [INFO] [stderr] 1369 | let digits = [1, 10, 100, 1000, 10000, 100000, 1000000]; [INFO] [stderr] | ^^^^^^ help: consider: `100_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: long literal lacking separators [INFO] [stderr] --> src/problems.rs:1369:52 [INFO] [stderr] | [INFO] [stderr] 1369 | let digits = [1, 10, 100, 1000, 10000, 100000, 1000000]; [INFO] [stderr] | ^^^^^^^ help: consider: `1_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: unneeded return statement [INFO] [stderr] --> src/problems.rs:1489:13 [INFO] [stderr] | [INFO] [stderr] 1489 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/problems.rs:1501:9 [INFO] [stderr] | [INFO] [stderr] 1501 | / if prime == 5 { [INFO] [stderr] 1502 | | if !(last == 0 || last == 5) { [INFO] [stderr] 1503 | | return branches; [INFO] [stderr] 1504 | | } [INFO] [stderr] 1505 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1501 | if prime == 5 && !(last == 0 || last == 5) { [INFO] [stderr] 1502 | return branches; [INFO] [stderr] 1503 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/problems.rs:1508:13 [INFO] [stderr] | [INFO] [stderr] 1508 | / if !*b { [INFO] [stderr] 1509 | | if ((d as u32) * 100 + rest) % prime == 0 { [INFO] [stderr] 1510 | | branches.push(self.add_digit(d as u8).unwrap()) [INFO] [stderr] 1511 | | } [INFO] [stderr] 1512 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1508 | if !*b && ((d as u32) * 100 + rest) % prime == 0 { [INFO] [stderr] 1509 | branches.push(self.add_digit(d as u8).unwrap()) [INFO] [stderr] 1510 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/collatz.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | self.n = self.n / 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.n /= 2` [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: an inclusive range would be more readable [INFO] [stderr] --> src/collatz.rs:50:14 [INFO] [stderr] | [INFO] [stderr] 50 | for i in 1..highest + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `1..=highest` [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: an inclusive range would be more readable [INFO] [stderr] --> src/collatz.rs:63:14 [INFO] [stderr] | [INFO] [stderr] 63 | for i in 1..highest + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `1..=highest` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/divisors.rs:81:24 [INFO] [stderr] | [INFO] [stderr] 81 | if is_abundant(i as u64) { [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(i)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fibonacci.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | self.curr = self.curr + self.last; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.curr += self.last` [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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/lattice.rs:40:15 [INFO] [stderr] | [INFO] [stderr] 40 | (1..n + 1).fold(1, |p, n| p * 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: an inclusive range would be more readable [INFO] [stderr] --> src/lattice.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | (1..n + 1).fold(1, |p, n| p * n) [INFO] [stderr] | ^^^^^^^^^^ help: use: `(1..=n)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/lattice.rs:52:36 [INFO] [stderr] | [INFO] [stderr] 52 | let mut numerators: Vec = ((n + 1)..(2 * n + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `((n + 1)..=2 * n)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/lattice.rs:58:24 [INFO] [stderr] | [INFO] [stderr] 58 | let denominators = 1..(n/2 + 1); [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `1..=n/2` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lexicographic.rs:31:29 [INFO] [stderr] | [INFO] [stderr] 31 | let greaters: Vec = slice.iter().filter(|m| **m > n).map(|n| *n).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `slice.iter().filter(|m| **m > n).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lexicographic.rs:32:8 [INFO] [stderr] | [INFO] [stderr] 32 | if greaters.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!greaters.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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lexicographic.rs:39:28 [INFO] [stderr] | [INFO] [stderr] 39 | let lessers: Vec = slice.iter().filter(|m| **m < n).map(|n| *n).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `slice.iter().filter(|m| **m < n).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lexicographic.rs:40:8 [INFO] [stderr] | [INFO] [stderr] 40 | if lessers.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!lessers.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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lexicographic.rs:72:29 [INFO] [stderr] | [INFO] [stderr] 72 | a.iter().filter(|n| **n != new_head).map(|n| *n).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `a.iter().filter(|n| **n != new_head).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lexicographic.rs:112:29 [INFO] [stderr] | [INFO] [stderr] 112 | a.iter().filter(|n| **n != new_head).map(|n| *n).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `a.iter().filter(|n| **n != new_head).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lexicographic.rs:134:9 [INFO] [stderr] | [INFO] [stderr] 134 | nc = nc % f; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `nc %= f` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/maxpathsum.rs:3:30 [INFO] [stderr] | [INFO] [stderr] 3 | pub fn highest_values(upper: &Vec, lower: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u32]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/maxpathsum.rs:3:48 [INFO] [stderr] | [INFO] [stderr] 3 | pub fn highest_values(upper: &Vec, lower: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u32]` [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: manual implementation of an assign operation [INFO] [stderr] --> src/matrix.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | i = i - 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i -= 1` [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: manual implementation of an assign operation [INFO] [stderr] --> src/matrix.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | j = j + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `j += 1` [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/matrix.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | (0..2 * largest + 1).map(|sum| self.climb(sum)).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `(0..=2 * largest)` [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: manual implementation of an assign operation [INFO] [stderr] --> src/matrix.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [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: manual implementation of an assign operation [INFO] [stderr] --> src/matrix.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | j = j + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `j += 1` [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/matrix.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | (-largest..largest + 1) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(-largest..=largest)` [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: useless use of `format!` [INFO] [stderr] --> src/numberletters.rs:46:14 [INFO] [stderr] | [INFO] [stderr] 46 | 0 => format!("{}", s), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `s.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/odddigits.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | nc = nc / 10; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `nc /= 10` [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: you should consider deriving a `Default` implementation for `odddigits::UphillOddSansFive` [INFO] [stderr] --> src/odddigits.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | / pub fn new() -> UphillOddSansFive { [INFO] [stderr] 97 | | UphillOddSansFive {digits: [0; 6], options: [1, 3, 7, 9]} [INFO] [stderr] 98 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 90 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/odddigits.rs:103:18 [INFO] [stderr] | [INFO] [stderr] 103 | n += *d as u32; [INFO] [stderr] | ^^^^^^^^^ help: try: `u32::from(*d)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/odddigits.rs:114:22 [INFO] [stderr] | [INFO] [stderr] 114 | for place in 1..(l + 1) { [INFO] [stderr] | ^^^^^^^^^^ help: use: `1..=l` [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: manual implementation of an assign operation [INFO] [stderr] --> src/palindrome.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | cp = cp / 10; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `cp /= 10` [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: you should consider deriving a `Default` implementation for `palindrome::BinaryPalindromes` [INFO] [stderr] --> src/palindrome.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / pub fn new() -> BinaryPalindromes { [INFO] [stderr] 62 | | BinaryPalindromes { [INFO] [stderr] 63 | | base: 0, [INFO] [stderr] 64 | | palindrome: 0, [INFO] [stderr] 65 | | odd_length: false, [INFO] [stderr] 66 | | } [INFO] [stderr] 67 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 54 | #[derive(Default)] [INFO] [stderr] | [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.rs:215:47 [INFO] [stderr] | [INFO] [stderr] 215 | pub fn distinct_prime_factors(n: u64, primes: &Vec) -> HashSet { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/primes.rs:233:52 [INFO] [stderr] | [INFO] [stderr] 233 | pub fn distinct_prime_factor_count(n: u64, primes: &Vec) -> u64 { [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: use of a blacklisted/placeholder name `bar` [INFO] [stderr] --> src/problems.rs:31:28 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn sum_multiples_under(bar: u32, base: u32) -> u32 { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::blacklisted_name)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `bar` [INFO] [stderr] --> src/problems.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | let bar = 1000; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/problems.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | t2 = t1 + t2; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `t2 += t1` [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: manual implementation of an assign operation [INFO] [stderr] --> src/problems.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | target = target / factor; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `target /= factor` [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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:107:17 [INFO] [stderr] | [INFO] [stderr] 107 | let mut p = n as u32; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(n)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:111:14 [INFO] [stderr] | [INFO] [stderr] 111 | p += (nc % 10) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(nc % 10)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `2` [INFO] [stderr] --> src/problems.rs:141:5 [INFO] [stderr] | [INFO] [stderr] 141 | 1 * 2 * 3 * 2 * 5 * 7 * 2 * 3 * 11 * 13 * 2 * 17 * 19 [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:204:75 [INFO] [stderr] | [INFO] [stderr] 204 | let candidate = (i..(i + n)).fold(1, |multiple, index| multiple * (v[index]) as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from((v[index]))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/problems.rs:549:41 [INFO] [stderr] | [INFO] [stderr] 549 | let mut names: Vec<_> = names.split(",").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:848:18 [INFO] [stderr] | [INFO] [stderr] 848 | n += *d as u32; [INFO] [stderr] | ^^^^^^^^^ help: try: `u32::from(*d)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/problems.rs:910:27 [INFO] [stderr] | [INFO] [stderr] 910 | let choices = 0..(max_n + 1); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `0..=max_n` [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: manual implementation of an assign operation [INFO] [stderr] --> src/problems.rs:936:9 [INFO] [stderr] | [INFO] [stderr] 936 | nc = nc / 10; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `nc /= 10` [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: the loop variable `i` is only used to index `digits`. [INFO] [stderr] --> src/problems.rs:1015:30 [INFO] [stderr] | [INFO] [stderr] 1015 | for i in 1..10 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 1015 | for in digits.iter().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/problems.rs:1051:24 [INFO] [stderr] | [INFO] [stderr] 1051 | if ff == f { [INFO] [stderr] | ^^^^^^^ help: consider comparing them within some error: `(ff - f).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/problems.rs:1051:24 [INFO] [stderr] | [INFO] [stderr] 1051 | if ff == f { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/problems.rs:1060:24 [INFO] [stderr] | [INFO] [stderr] 1060 | if ff == f { [INFO] [stderr] | ^^^^^^^ help: consider comparing them within some error: `(ff - f).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/problems.rs:1060:24 [INFO] [stderr] | [INFO] [stderr] 1060 | if ff == f { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/problems.rs:1083:9 [INFO] [stderr] | [INFO] [stderr] 1083 | nc = nc / 10; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `nc /= 10` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/problems.rs:1200:17 [INFO] [stderr] | [INFO] [stderr] 1200 | fn add_right(v: &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: length comparison to zero [INFO] [stderr] --> src/problems.rs:1242:11 [INFO] [stderr] | [INFO] [stderr] 1242 | while branches.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!branches.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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/problems.rs:1279:5 [INFO] [stderr] | [INFO] [stderr] 1279 | / match pan_ok(n) { [INFO] [stderr] 1280 | | true => n, [INFO] [stderr] 1281 | | _ => 0, [INFO] [stderr] 1282 | | } [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if pan_ok(n) { n } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:1387:18 [INFO] [stderr] | [INFO] [stderr] 1387 | n += *d as u64; [INFO] [stderr] | ^^^^^^^^^ help: try: `u64::from(*d)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/problems.rs:1427:35 [INFO] [stderr] | [INFO] [stderr] 1427 | for name in data_string.split(",") { [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/problems.rs:1456:13 [INFO] [stderr] | [INFO] [stderr] 1456 | / match pandigital.taken[next as usize] { [INFO] [stderr] 1457 | | true => return None, [INFO] [stderr] 1458 | | false => { [INFO] [stderr] 1459 | | pandigital.taken[next as usize] = true; [INFO] [stderr] ... | [INFO] [stderr] 1462 | | } [INFO] [stderr] 1463 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 1456 | if pandigital.taken[next as usize] { return None } else { [INFO] [stderr] 1457 | pandigital.taken[next as usize] = true; [INFO] [stderr] 1458 | pandigital.number[pandigital.last_empty] = next as u8; [INFO] [stderr] 1459 | pandigital.last_empty -= 1; [INFO] [stderr] 1460 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:1476:18 [INFO] [stderr] | [INFO] [stderr] 1476 | n += self.number[i] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.number[i])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/problems.rs:1483:21 [INFO] [stderr] | [INFO] [stderr] 1483 | number: self.number.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.number` [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/problems.rs:1484:20 [INFO] [stderr] | [INFO] [stderr] 1484 | taken: self.taken.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.taken` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:1506:20 [INFO] [stderr] | [INFO] [stderr] 1506 | let rest = (self.number[self.last_empty + 1] * 10 + last) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.number[self.last_empty + 1] * 10 + last)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/problems.rs:1523:9 [INFO] [stderr] | [INFO] [stderr] 1523 | / match Pandigital::from_three_digits(n) { [INFO] [stderr] 1524 | | Some(pandigital) => solutions.push(pandigital), [INFO] [stderr] 1525 | | None => {} [INFO] [stderr] 1526 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(pandigital) = Pandigital::from_three_digits(n) { solutions.push(pandigital) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:1623:24 [INFO] [stderr] | [INFO] [stderr] 1623 | let last = i + (target_count as u64) - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(target_count)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/problems.rs:1693:21 [INFO] [stderr] | [INFO] [stderr] 1693 | / if diffs.contains_key(&diff) { [INFO] [stderr] 1694 | | // We have a sequence! [INFO] [stderr] 1695 | | let first = p1 - diff; [INFO] [stderr] 1696 | | if first != 1487 { [INFO] [stderr] ... | [INFO] [stderr] 1703 | | diffs.insert(diff, *p2); [INFO] [stderr] 1704 | | } [INFO] [stderr] | |_____________________^ help: consider using: `diffs.entry(diff)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `trianglenumbers::Triangular` [INFO] [stderr] --> src/trianglenumbers.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | / pub fn new() -> Triangular { [INFO] [stderr] 8 | | Triangular { [INFO] [stderr] 9 | | last_added: 0, [INFO] [stderr] 10 | | sum: 0, [INFO] [stderr] 11 | | } [INFO] [stderr] 12 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `eulerrust`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/collatz.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | self.n = self.n / 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.n /= 2` [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: an inclusive range would be more readable [INFO] [stderr] --> src/collatz.rs:50:14 [INFO] [stderr] | [INFO] [stderr] 50 | for i in 1..highest + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `1..=highest` [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: an inclusive range would be more readable [INFO] [stderr] --> src/collatz.rs:63:14 [INFO] [stderr] | [INFO] [stderr] 63 | for i in 1..highest + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `1..=highest` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/divisors.rs:81:24 [INFO] [stderr] | [INFO] [stderr] 81 | if is_abundant(i as u64) { [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(i)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fibonacci.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | self.curr = self.curr + self.last; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.curr += self.last` [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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/lattice.rs:40:15 [INFO] [stderr] | [INFO] [stderr] 40 | (1..n + 1).fold(1, |p, n| p * 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: an inclusive range would be more readable [INFO] [stderr] --> src/lattice.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | (1..n + 1).fold(1, |p, n| p * n) [INFO] [stderr] | ^^^^^^^^^^ help: use: `(1..=n)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/lattice.rs:52:36 [INFO] [stderr] | [INFO] [stderr] 52 | let mut numerators: Vec = ((n + 1)..(2 * n + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `((n + 1)..=2 * n)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/lattice.rs:58:24 [INFO] [stderr] | [INFO] [stderr] 58 | let denominators = 1..(n/2 + 1); [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `1..=n/2` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lexicographic.rs:31:29 [INFO] [stderr] | [INFO] [stderr] 31 | let greaters: Vec = slice.iter().filter(|m| **m > n).map(|n| *n).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `slice.iter().filter(|m| **m > n).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lexicographic.rs:32:8 [INFO] [stderr] | [INFO] [stderr] 32 | if greaters.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!greaters.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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lexicographic.rs:39:28 [INFO] [stderr] | [INFO] [stderr] 39 | let lessers: Vec = slice.iter().filter(|m| **m < n).map(|n| *n).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `slice.iter().filter(|m| **m < n).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lexicographic.rs:40:8 [INFO] [stderr] | [INFO] [stderr] 40 | if lessers.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!lessers.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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lexicographic.rs:72:29 [INFO] [stderr] | [INFO] [stderr] 72 | a.iter().filter(|n| **n != new_head).map(|n| *n).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `a.iter().filter(|n| **n != new_head).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lexicographic.rs:112:29 [INFO] [stderr] | [INFO] [stderr] 112 | a.iter().filter(|n| **n != new_head).map(|n| *n).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `a.iter().filter(|n| **n != new_head).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lexicographic.rs:134:9 [INFO] [stderr] | [INFO] [stderr] 134 | nc = nc % f; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `nc %= f` [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: useless use of `vec!` [INFO] [stderr] --> src/lexicographic.rs:168:25 [INFO] [stderr] | [INFO] [stderr] 168 | assert_eq!(next(&vec![1, 2]), Some(vec![2, 1])); [INFO] [stderr] | ^^^^^^^^^^^ help: you can use a slice directly: `&[1, 2]` [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/lexicographic.rs:169:25 [INFO] [stderr] | [INFO] [stderr] 169 | assert_eq!(next(&vec![2, 1]), None); [INFO] [stderr] | ^^^^^^^^^^^ help: you can use a slice directly: `&[2, 1]` [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/lexicographic.rs:170:25 [INFO] [stderr] | [INFO] [stderr] 170 | assert_eq!(next(&vec![0, 1, 2]), Some(vec![0, 2, 1])); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0, 1, 2]` [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/lexicographic.rs:171:25 [INFO] [stderr] | [INFO] [stderr] 171 | assert_eq!(next(&vec![0, 2, 1]), Some(vec![1, 0, 2])); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0, 2, 1]` [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/lexicographic.rs:172:25 [INFO] [stderr] | [INFO] [stderr] 172 | assert_eq!(next(&vec![2, 1, 0]), None); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[2, 1, 0]` [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/lexicographic.rs:176:37 [INFO] [stderr] | [INFO] [stderr] 176 | assert_eq!(least_greater(2, &vec![0, 1, 2, 3, 4]), Some(3)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0, 1, 2, 3, 4]` [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/lexicographic.rs:177:37 [INFO] [stderr] | [INFO] [stderr] 177 | assert_eq!(least_greater(4, &vec![0, 1, 2, 3, 4]), None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[0, 1, 2, 3, 4]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/maxpathsum.rs:3:30 [INFO] [stderr] | [INFO] [stderr] 3 | pub fn highest_values(upper: &Vec, lower: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u32]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/maxpathsum.rs:3:48 [INFO] [stderr] | [INFO] [stderr] 3 | pub fn highest_values(upper: &Vec, lower: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u32]` [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: manual implementation of an assign operation [INFO] [stderr] --> src/matrix.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | i = i - 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i -= 1` [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: manual implementation of an assign operation [INFO] [stderr] --> src/matrix.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | j = j + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `j += 1` [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/matrix.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | (0..2 * largest + 1).map(|sum| self.climb(sum)).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `(0..=2 * largest)` [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: manual implementation of an assign operation [INFO] [stderr] --> src/matrix.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [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: manual implementation of an assign operation [INFO] [stderr] --> src/matrix.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | j = j + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `j += 1` [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/matrix.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | (-largest..largest + 1) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(-largest..=largest)` [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: useless use of `format!` [INFO] [stderr] --> src/numberletters.rs:46:14 [INFO] [stderr] | [INFO] [stderr] 46 | 0 => format!("{}", s), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `s.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/odddigits.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | nc = nc / 10; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `nc /= 10` [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: you should consider deriving a `Default` implementation for `odddigits::UphillOddSansFive` [INFO] [stderr] --> src/odddigits.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | / pub fn new() -> UphillOddSansFive { [INFO] [stderr] 97 | | UphillOddSansFive {digits: [0; 6], options: [1, 3, 7, 9]} [INFO] [stderr] 98 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 90 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/odddigits.rs:103:18 [INFO] [stderr] | [INFO] [stderr] 103 | n += *d as u32; [INFO] [stderr] | ^^^^^^^^^ help: try: `u32::from(*d)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/odddigits.rs:114:22 [INFO] [stderr] | [INFO] [stderr] 114 | for place in 1..(l + 1) { [INFO] [stderr] | ^^^^^^^^^^ help: use: `1..=l` [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: manual implementation of an assign operation [INFO] [stderr] --> src/palindrome.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | cp = cp / 10; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `cp /= 10` [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: you should consider deriving a `Default` implementation for `palindrome::BinaryPalindromes` [INFO] [stderr] --> src/palindrome.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / pub fn new() -> BinaryPalindromes { [INFO] [stderr] 62 | | BinaryPalindromes { [INFO] [stderr] 63 | | base: 0, [INFO] [stderr] 64 | | palindrome: 0, [INFO] [stderr] 65 | | odd_length: false, [INFO] [stderr] 66 | | } [INFO] [stderr] 67 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 54 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 30 [INFO] [stderr] --> src/pentagonalnumbers.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | / fn test_is_pentagonal() { [INFO] [stderr] 17 | | // 1, 5, 12, 22, 35, 51, 70, 92, 117, 145 [INFO] [stderr] 18 | | assert_eq!(is_pentagonal(1), true); [INFO] [stderr] 19 | | assert_eq!(is_pentagonal(2), false); [INFO] [stderr] ... | [INFO] [stderr] 57 | | [INFO] [stderr] 58 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [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.rs:215:47 [INFO] [stderr] | [INFO] [stderr] 215 | pub fn distinct_prime_factors(n: u64, primes: &Vec) -> HashSet { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/primes.rs:233:52 [INFO] [stderr] | [INFO] [stderr] 233 | pub fn distinct_prime_factor_count(n: u64, primes: &Vec) -> u64 { [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: use of a blacklisted/placeholder name `bar` [INFO] [stderr] --> src/problems.rs:31:28 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn sum_multiples_under(bar: u32, base: u32) -> u32 { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::blacklisted_name)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `bar` [INFO] [stderr] --> src/problems.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | let bar = 1000; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/problems.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | t2 = t1 + t2; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `t2 += t1` [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: manual implementation of an assign operation [INFO] [stderr] --> src/problems.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | target = target / factor; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `target /= factor` [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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:107:17 [INFO] [stderr] | [INFO] [stderr] 107 | let mut p = n as u32; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(n)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:111:14 [INFO] [stderr] | [INFO] [stderr] 111 | p += (nc % 10) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(nc % 10)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `2` [INFO] [stderr] --> src/problems.rs:141:5 [INFO] [stderr] | [INFO] [stderr] 141 | 1 * 2 * 3 * 2 * 5 * 7 * 2 * 3 * 11 * 13 * 2 * 17 * 19 [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:204:75 [INFO] [stderr] | [INFO] [stderr] 204 | let candidate = (i..(i + n)).fold(1, |multiple, index| multiple * (v[index]) as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from((v[index]))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/problems.rs:549:41 [INFO] [stderr] | [INFO] [stderr] 549 | let mut names: Vec<_> = names.split(",").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:848:18 [INFO] [stderr] | [INFO] [stderr] 848 | n += *d as u32; [INFO] [stderr] | ^^^^^^^^^ help: try: `u32::from(*d)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/problems.rs:910:27 [INFO] [stderr] | [INFO] [stderr] 910 | let choices = 0..(max_n + 1); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `0..=max_n` [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: manual implementation of an assign operation [INFO] [stderr] --> src/problems.rs:936:9 [INFO] [stderr] | [INFO] [stderr] 936 | nc = nc / 10; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `nc /= 10` [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: the loop variable `i` is only used to index `digits`. [INFO] [stderr] --> src/problems.rs:1015:30 [INFO] [stderr] | [INFO] [stderr] 1015 | for i in 1..10 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 1015 | for in digits.iter().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/problems.rs:1051:24 [INFO] [stderr] | [INFO] [stderr] 1051 | if ff == f { [INFO] [stderr] | ^^^^^^^ help: consider comparing them within some error: `(ff - f).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/problems.rs:1051:24 [INFO] [stderr] | [INFO] [stderr] 1051 | if ff == f { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/problems.rs:1060:24 [INFO] [stderr] | [INFO] [stderr] 1060 | if ff == f { [INFO] [stderr] | ^^^^^^^ help: consider comparing them within some error: `(ff - f).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/problems.rs:1060:24 [INFO] [stderr] | [INFO] [stderr] 1060 | if ff == f { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/problems.rs:1083:9 [INFO] [stderr] | [INFO] [stderr] 1083 | nc = nc / 10; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `nc /= 10` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/problems.rs:1200:17 [INFO] [stderr] | [INFO] [stderr] 1200 | fn add_right(v: &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: length comparison to zero [INFO] [stderr] --> src/problems.rs:1242:11 [INFO] [stderr] | [INFO] [stderr] 1242 | while branches.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!branches.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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/problems.rs:1279:5 [INFO] [stderr] | [INFO] [stderr] 1279 | / match pan_ok(n) { [INFO] [stderr] 1280 | | true => n, [INFO] [stderr] 1281 | | _ => 0, [INFO] [stderr] 1282 | | } [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if pan_ok(n) { n } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:1387:18 [INFO] [stderr] | [INFO] [stderr] 1387 | n += *d as u64; [INFO] [stderr] | ^^^^^^^^^ help: try: `u64::from(*d)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/problems.rs:1427:35 [INFO] [stderr] | [INFO] [stderr] 1427 | for name in data_string.split(",") { [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/problems.rs:1456:13 [INFO] [stderr] | [INFO] [stderr] 1456 | / match pandigital.taken[next as usize] { [INFO] [stderr] 1457 | | true => return None, [INFO] [stderr] 1458 | | false => { [INFO] [stderr] 1459 | | pandigital.taken[next as usize] = true; [INFO] [stderr] ... | [INFO] [stderr] 1462 | | } [INFO] [stderr] 1463 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 1456 | if pandigital.taken[next as usize] { return None } else { [INFO] [stderr] 1457 | pandigital.taken[next as usize] = true; [INFO] [stderr] 1458 | pandigital.number[pandigital.last_empty] = next as u8; [INFO] [stderr] 1459 | pandigital.last_empty -= 1; [INFO] [stderr] 1460 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:1476:18 [INFO] [stderr] | [INFO] [stderr] 1476 | n += self.number[i] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.number[i])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/problems.rs:1483:21 [INFO] [stderr] | [INFO] [stderr] 1483 | number: self.number.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.number` [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/problems.rs:1484:20 [INFO] [stderr] | [INFO] [stderr] 1484 | taken: self.taken.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.taken` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:1506:20 [INFO] [stderr] | [INFO] [stderr] 1506 | let rest = (self.number[self.last_empty + 1] * 10 + last) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.number[self.last_empty + 1] * 10 + last)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/problems.rs:1523:9 [INFO] [stderr] | [INFO] [stderr] 1523 | / match Pandigital::from_three_digits(n) { [INFO] [stderr] 1524 | | Some(pandigital) => solutions.push(pandigital), [INFO] [stderr] 1525 | | None => {} [INFO] [stderr] 1526 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(pandigital) = Pandigital::from_three_digits(n) { solutions.push(pandigital) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/problems.rs:1623:24 [INFO] [stderr] | [INFO] [stderr] 1623 | let last = i + (target_count as u64) - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(target_count)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/problems.rs:1693:21 [INFO] [stderr] | [INFO] [stderr] 1693 | / if diffs.contains_key(&diff) { [INFO] [stderr] 1694 | | // We have a sequence! [INFO] [stderr] 1695 | | let first = p1 - diff; [INFO] [stderr] 1696 | | if first != 1487 { [INFO] [stderr] ... | [INFO] [stderr] 1703 | | diffs.insert(diff, *p2); [INFO] [stderr] 1704 | | } [INFO] [stderr] | |_____________________^ help: consider using: `diffs.entry(diff)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `trianglenumbers::Triangular` [INFO] [stderr] --> src/trianglenumbers.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | / pub fn new() -> Triangular { [INFO] [stderr] 8 | | Triangular { [INFO] [stderr] 9 | | last_added: 0, [INFO] [stderr] 10 | | sum: 0, [INFO] [stderr] 11 | | } [INFO] [stderr] 12 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `eulerrust`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "980776790d29534fef8f21223e4f34774873d063de5dd09982b7bec6e43bc8a0"` [INFO] running `"docker" "rm" "-f" "980776790d29534fef8f21223e4f34774873d063de5dd09982b7bec6e43bc8a0"` [INFO] [stdout] 980776790d29534fef8f21223e4f34774873d063de5dd09982b7bec6e43bc8a0