[INFO] updating cached repository jcowgill/aoc [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/jcowgill/aoc [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/jcowgill/aoc" "work/ex/clippy-test-run/sources/stable/gh/jcowgill/aoc"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/jcowgill/aoc'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/jcowgill/aoc" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jcowgill/aoc"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jcowgill/aoc'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 33dcf08dc06f423945b92c0c312aa2912596bef4 [INFO] sha for GitHub repo jcowgill/aoc: 33dcf08dc06f423945b92c0c312aa2912596bef4 [INFO] validating manifest of jcowgill/aoc 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 jcowgill/aoc 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 jcowgill/aoc [INFO] finished frobbing jcowgill/aoc [INFO] frobbed toml for jcowgill/aoc written to work/ex/clippy-test-run/sources/stable/gh/jcowgill/aoc/Cargo.toml [INFO] started frobbing jcowgill/aoc [INFO] finished frobbing jcowgill/aoc [INFO] frobbed toml for jcowgill/aoc written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jcowgill/aoc/Cargo.toml [INFO] crate jcowgill/aoc 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 jcowgill/aoc against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/jcowgill/aoc:/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] 5af2a1141dc53e652f79bd826c97bea7738a6f3e650f537c01c68e8f740e3e0f [INFO] running `"docker" "start" "-a" "5af2a1141dc53e652f79bd826c97bea7738a6f3e650f537c01c68e8f740e3e0f"` [INFO] [stderr] Checking aoc v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/duplicate.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | Duplicate { iter: iter, duplicates: duplicates, current: None } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/duplicate.rs:66:29 [INFO] [stderr] | [INFO] [stderr] 66 | Duplicate { iter: iter, duplicates: duplicates, current: None } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `duplicates` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:48:40 [INFO] [stderr] | [INFO] [stderr] 48 | return Ok(StarId { year: year, day: day, star: star }); [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `year` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:48:52 [INFO] [stderr] | [INFO] [stderr] 48 | return Ok(StarId { year: year, day: day, star: star }); [INFO] [stderr] | ^^^^^^^^ help: replace it with: `day` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:48:62 [INFO] [stderr] | [INFO] [stderr] 48 | return Ok(StarId { year: year, day: day, star: star }); [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `star` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/duplicate.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | Duplicate { iter: iter, duplicates: duplicates, current: None } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/duplicate.rs:66:29 [INFO] [stderr] | [INFO] [stderr] 66 | Duplicate { iter: iter, duplicates: duplicates, current: None } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `duplicates` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:48:40 [INFO] [stderr] | [INFO] [stderr] 48 | return Ok(StarId { year: year, day: day, star: star }); [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `year` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:48:52 [INFO] [stderr] | [INFO] [stderr] 48 | return Ok(StarId { year: year, day: day, star: star }); [INFO] [stderr] | ^^^^^^^^ help: replace it with: `day` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:48:62 [INFO] [stderr] | [INFO] [stderr] 48 | return Ok(StarId { year: year, day: day, star: star }); [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `star` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/yr2017/processor.rs:111:16 [INFO] [stderr] | [INFO] [stderr] 111 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 112 | | if parts.len() != 3 { return Err(()); } [INFO] [stderr] 113 | | } [INFO] [stderr] | |_________^ help: try: `if parts.len() != 3 { return Err(()); }` [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] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/yr2017/day3.rs:15:12 [INFO] [stderr] | [INFO] [stderr] 15 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 16 | | if y <= -x { 3 } else { 0 } [INFO] [stderr] 17 | | } [INFO] [stderr] | |_____^ help: try: `if y <= -x { 3 } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/yr2017/day7.rs:85:5 [INFO] [stderr] | [INFO] [stderr] 85 | result [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/yr2017/day7.rs:84:18 [INFO] [stderr] | [INFO] [stderr] 84 | let result = resolved.drain().next().unwrap().1; [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 unit expression [INFO] [stderr] --> src/yr2017/day9.rs:13:37 [INFO] [stderr] | [INFO] [stderr] 13 | '!' => { stream.next(); () }, [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/yr2017/day15.rs:2:33 [INFO] [stderr] | [INFO] [stderr] 2 | const STAR1_ITERATIONS: usize = 40000000; [INFO] [stderr] | ^^^^^^^^ help: consider: `40_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/yr2017/day15.rs:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | const STAR2_ITERATIONS: usize = 5000000; [INFO] [stderr] | ^^^^^^^ help: consider: `5_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/yr2017/day15.rs:40:66 [INFO] [stderr] | [INFO] [stderr] 40 | self.value = ((self.value as u64 * self.factor as u64) % 0x7FFFFFFF) as u32; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x7FFF_FFFF` [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/yr2017/day16.rs:199:24 [INFO] [stderr] | [INFO] [stderr] 199 | whole_dance(input, 1000000000) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_000_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/yr2017/day17.rs:25:17 [INFO] [stderr] | [INFO] [stderr] 25 | for i in 2..50000000 { [INFO] [stderr] | ^^^^^^^^ help: consider: `50_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/yr2017/day21.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | return self.data.len() / self.width; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.data.len() / self.width` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/yr2017/day22.rs:120:24 [INFO] [stderr] | [INFO] [stderr] 120 | star_common(input, 10000000, |ns| match ns { [INFO] [stderr] | ^^^^^^^^ help: consider: `10_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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/yr2017/processor.rs:111:16 [INFO] [stderr] | [INFO] [stderr] 111 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 112 | | if parts.len() != 3 { return Err(()); } [INFO] [stderr] 113 | | } [INFO] [stderr] | |_________^ help: try: `if parts.len() != 3 { return Err(()); }` [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] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/yr2017/day3.rs:15:12 [INFO] [stderr] | [INFO] [stderr] 15 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 16 | | if y <= -x { 3 } else { 0 } [INFO] [stderr] 17 | | } [INFO] [stderr] | |_____^ help: try: `if y <= -x { 3 } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/yr2017/day7.rs:85:5 [INFO] [stderr] | [INFO] [stderr] 85 | result [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/yr2017/day7.rs:84:18 [INFO] [stderr] | [INFO] [stderr] 84 | let result = resolved.drain().next().unwrap().1; [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 unit expression [INFO] [stderr] --> src/yr2017/day9.rs:13:37 [INFO] [stderr] | [INFO] [stderr] 13 | '!' => { stream.next(); () }, [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/yr2017/day15.rs:2:33 [INFO] [stderr] | [INFO] [stderr] 2 | const STAR1_ITERATIONS: usize = 40000000; [INFO] [stderr] | ^^^^^^^^ help: consider: `40_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/yr2017/day15.rs:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | const STAR2_ITERATIONS: usize = 5000000; [INFO] [stderr] | ^^^^^^^ help: consider: `5_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/yr2017/day15.rs:40:66 [INFO] [stderr] | [INFO] [stderr] 40 | self.value = ((self.value as u64 * self.factor as u64) % 0x7FFFFFFF) as u32; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x7FFF_FFFF` [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/yr2017/day16.rs:199:24 [INFO] [stderr] | [INFO] [stderr] 199 | whole_dance(input, 1000000000) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_000_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/yr2017/day17.rs:25:17 [INFO] [stderr] | [INFO] [stderr] 25 | for i in 2..50000000 { [INFO] [stderr] | ^^^^^^^^ help: consider: `50_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/yr2017/day21.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | return self.data.len() / self.width; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.data.len() / self.width` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/yr2017/day22.rs:120:24 [INFO] [stderr] | [INFO] [stderr] 120 | star_common(input, 10000000, |ns| match ns { [INFO] [stderr] | ^^^^^^^^ help: consider: `10_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] error: equal expressions as operands to `-` [INFO] [stderr] --> src/direction.rs:47:20 [INFO] [stderr] | [INFO] [stderr] 47 | let zero = size - size; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/processor.rs:30:21 [INFO] [stderr] | [INFO] [stderr] 30 | state.regs[('p' as u8 - 'a' as u8) as usize] = pid; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'p' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/processor.rs:30:33 [INFO] [stderr] | [INFO] [stderr] 30 | state.regs[('p' as u8 - 'a' as u8) as usize] = pid; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/processor.rs:50:46 [INFO] [stderr] | [INFO] [stderr] 50 | return Ok(Register(c as u8 - 'a' as u8)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/yr2017/day3.rs:49:25 [INFO] [stderr] | [INFO] [stderr] 49 | let ring_number = ((((value - 1) as f64).sqrt() + 1.0) / 2.0).floor() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(value - 1)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/yr2017/day3.rs:74:30 [INFO] [stderr] | [INFO] [stderr] 74 | fn value_at(spreadsheet: &Vec, x: i32, y: i32) -> i32 { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[i32]` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/yr2017/day7.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | / match child_results.iter().enumerate().find(|&(_, &value)| value != good_weight) { [INFO] [stderr] 110 | | Some((i, value)) => { [INFO] [stderr] 111 | | // Return corrected weight [INFO] [stderr] 112 | | return Err(tower.children[i].weight + good_weight - value) [INFO] [stderr] 113 | | }, [INFO] [stderr] 114 | | None => () [INFO] [stderr] 115 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 109 | if let Some((i, value)) = child_results.iter().enumerate().find(|&(_, &value)| value != good_weight) { [INFO] [stderr] 110 | // Return corrected weight [INFO] [stderr] 111 | return Err(tower.children[i].weight + good_weight - value) [INFO] [stderr] 112 | } [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/yr2017/day13.rs:14:44 [INFO] [stderr] | [INFO] [stderr] 14 | fn walk_severity(time_offset: i32, depths: &Vec<(i32, i32)>) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[(i32, i32)]` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/yr2017/day15.rs:40:24 [INFO] [stderr] | [INFO] [stderr] 40 | self.value = ((self.value as u64 * self.factor as u64) % 0x7FFFFFFF) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.value)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/yr2017/day15.rs:40:44 [INFO] [stderr] | [INFO] [stderr] 40 | self.value = ((self.value as u64 * self.factor as u64) % 0x7FFFFFFF) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.factor)` [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 character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day16.rs:9:39 [INFO] [stderr] | [INFO] [stderr] 9 | Some(Program(prog as u8 - 'a' as u8)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day16.rs:17:19 [INFO] [stderr] | [INFO] [stderr] 17 | Some(('a' as u8 + self.0) as char) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/yr2017/day16.rs:89:33 [INFO] [stderr] | [INFO] [stderr] 89 | Substitution((0..n).map(|v| Program(v)).collect()) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `Program` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/yr2017/day18.rs:7:9 [INFO] [stderr] | [INFO] [stderr] 7 | Err(_) => panic!("invalid program") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/yr2017/day18.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | / match instr { [INFO] [stderr] 13 | | &Instruction::Snd(_) | &Instruction::Rcv(_) | [INFO] [stderr] 14 | | &Instruction::Set(_, _) | &Instruction::Add(_, _) | [INFO] [stderr] 15 | | &Instruction::Mul(_, _) | &Instruction::Mod(_, _) | [INFO] [stderr] 16 | | &Instruction::Jgz(_, _) => (), [INFO] [stderr] 17 | | _ => panic!("invalid program"), [INFO] [stderr] 18 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 12 | match *instr { [INFO] [stderr] 13 | Instruction::Snd(_) | Instruction::Rcv(_) | [INFO] [stderr] 14 | Instruction::Set(_, _) | Instruction::Add(_, _) | [INFO] [stderr] 15 | Instruction::Mul(_, _) | Instruction::Mod(_, _) | [INFO] [stderr] 16 | Instruction::Jgz(_, _) => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day19.rs:77:62 [INFO] [stderr] | [INFO] [stderr] 77 | 'A'...'Z' => CellValue::Letter(c as u8 - 'A' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/yr2017/day19.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | / (0..grid.width) [INFO] [stderr] 90 | | .map(|x| Vector2 { x: x as isize, y: 0 }) [INFO] [stderr] 91 | | .filter(|p| grid.cell_value(*p) == CellValue::Vertical) [INFO] [stderr] 92 | | .next() [INFO] [stderr] | |_______________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|p| grid.cell_value(*p) == CellValue::Vertical).next()` with `find(|p| grid.cell_value(*p) == CellValue::Vertical)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/yr2017/day19.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | pos = pos + dir.to_vec_neg(1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pos += dir.to_vec_neg(1)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day19.rs:131:35 [INFO] [stderr] | [INFO] [stderr] 131 | letters.push((l + 'A' as u8) as char) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/yr2017/day23.rs:7:9 [INFO] [stderr] | [INFO] [stderr] 7 | Err(_) => panic!("invalid program") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/yr2017/day23.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | / match instr { [INFO] [stderr] 13 | | &Instruction::Set(_, _) | &Instruction::Sub(_, _) | [INFO] [stderr] 14 | | &Instruction::Mul(_, _) | &Instruction::Jnz(_, _) => (), [INFO] [stderr] 15 | | _ => panic!("invalid program"), [INFO] [stderr] 16 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 12 | match *instr { [INFO] [stderr] 13 | Instruction::Set(_, _) | Instruction::Sub(_, _) | [INFO] [stderr] 14 | Instruction::Mul(_, _) | Instruction::Jnz(_, _) => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/yr2017/day23.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | / match program.get(state.pc as usize) { [INFO] [stderr] 32 | | Some(&Instruction::Mul(_, _)) => mul_instructions += 1, [INFO] [stderr] 33 | | _ => (), [INFO] [stderr] 34 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(&Instruction::Mul(_, _)) = program.get(state.pc as usize) { mul_instructions += 1 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `-` [INFO] [stderr] --> src/yr2017/day23.rs:99:16 [INFO] [stderr] | [INFO] [stderr] 99 | state.regs[('a' as u8 - 'a' as u8) as usize] = 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day23.rs:99:17 [INFO] [stderr] | [INFO] [stderr] 99 | state.regs[('a' as u8 - 'a' as u8) as usize] = 1; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day23.rs:99:29 [INFO] [stderr] | [INFO] [stderr] 99 | state.regs[('a' as u8 - 'a' as u8) as usize] = 1; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day23.rs:109:17 [INFO] [stderr] | [INFO] [stderr] 109 | state.regs[('h' as u8 - 'a' as u8) as usize].to_string() [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'h' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day23.rs:109:29 [INFO] [stderr] | [INFO] [stderr] 109 | state.regs[('h' as u8 - 'a' as u8) as usize].to_string() [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/yr2018/day3.rs:66:22 [INFO] [stderr] | [INFO] [stderr] 66 | .filter(|&v| v >= &2) [INFO] [stderr] | ^^^^^-- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `2` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `aoc`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: equal expressions as operands to `-` [INFO] [stderr] --> src/direction.rs:47:20 [INFO] [stderr] | [INFO] [stderr] 47 | let zero = size - size; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/processor.rs:30:21 [INFO] [stderr] | [INFO] [stderr] 30 | state.regs[('p' as u8 - 'a' as u8) as usize] = pid; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'p' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/processor.rs:30:33 [INFO] [stderr] | [INFO] [stderr] 30 | state.regs[('p' as u8 - 'a' as u8) as usize] = pid; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/processor.rs:50:46 [INFO] [stderr] | [INFO] [stderr] 50 | return Ok(Register(c as u8 - 'a' as u8)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/yr2017/day3.rs:49:25 [INFO] [stderr] | [INFO] [stderr] 49 | let ring_number = ((((value - 1) as f64).sqrt() + 1.0) / 2.0).floor() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(value - 1)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/yr2017/day3.rs:74:30 [INFO] [stderr] | [INFO] [stderr] 74 | fn value_at(spreadsheet: &Vec, x: i32, y: i32) -> i32 { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[i32]` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/yr2017/day7.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | / match child_results.iter().enumerate().find(|&(_, &value)| value != good_weight) { [INFO] [stderr] 110 | | Some((i, value)) => { [INFO] [stderr] 111 | | // Return corrected weight [INFO] [stderr] 112 | | return Err(tower.children[i].weight + good_weight - value) [INFO] [stderr] 113 | | }, [INFO] [stderr] 114 | | None => () [INFO] [stderr] 115 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 109 | if let Some((i, value)) = child_results.iter().enumerate().find(|&(_, &value)| value != good_weight) { [INFO] [stderr] 110 | // Return corrected weight [INFO] [stderr] 111 | return Err(tower.children[i].weight + good_weight - value) [INFO] [stderr] 112 | } [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/yr2017/day13.rs:14:44 [INFO] [stderr] | [INFO] [stderr] 14 | fn walk_severity(time_offset: i32, depths: &Vec<(i32, i32)>) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[(i32, i32)]` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/yr2017/day15.rs:40:24 [INFO] [stderr] | [INFO] [stderr] 40 | self.value = ((self.value as u64 * self.factor as u64) % 0x7FFFFFFF) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.value)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/yr2017/day15.rs:40:44 [INFO] [stderr] | [INFO] [stderr] 40 | self.value = ((self.value as u64 * self.factor as u64) % 0x7FFFFFFF) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.factor)` [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 character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day16.rs:9:39 [INFO] [stderr] | [INFO] [stderr] 9 | Some(Program(prog as u8 - 'a' as u8)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day16.rs:17:19 [INFO] [stderr] | [INFO] [stderr] 17 | Some(('a' as u8 + self.0) as char) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/yr2017/day16.rs:89:33 [INFO] [stderr] | [INFO] [stderr] 89 | Substitution((0..n).map(|v| Program(v)).collect()) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `Program` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/yr2017/day18.rs:7:9 [INFO] [stderr] | [INFO] [stderr] 7 | Err(_) => panic!("invalid program") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/yr2017/day18.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | / match instr { [INFO] [stderr] 13 | | &Instruction::Snd(_) | &Instruction::Rcv(_) | [INFO] [stderr] 14 | | &Instruction::Set(_, _) | &Instruction::Add(_, _) | [INFO] [stderr] 15 | | &Instruction::Mul(_, _) | &Instruction::Mod(_, _) | [INFO] [stderr] 16 | | &Instruction::Jgz(_, _) => (), [INFO] [stderr] 17 | | _ => panic!("invalid program"), [INFO] [stderr] 18 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 12 | match *instr { [INFO] [stderr] 13 | Instruction::Snd(_) | Instruction::Rcv(_) | [INFO] [stderr] 14 | Instruction::Set(_, _) | Instruction::Add(_, _) | [INFO] [stderr] 15 | Instruction::Mul(_, _) | Instruction::Mod(_, _) | [INFO] [stderr] 16 | Instruction::Jgz(_, _) => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day19.rs:77:62 [INFO] [stderr] | [INFO] [stderr] 77 | 'A'...'Z' => CellValue::Letter(c as u8 - 'A' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/yr2017/day19.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | / (0..grid.width) [INFO] [stderr] 90 | | .map(|x| Vector2 { x: x as isize, y: 0 }) [INFO] [stderr] 91 | | .filter(|p| grid.cell_value(*p) == CellValue::Vertical) [INFO] [stderr] 92 | | .next() [INFO] [stderr] | |_______________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|p| grid.cell_value(*p) == CellValue::Vertical).next()` with `find(|p| grid.cell_value(*p) == CellValue::Vertical)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/yr2017/day19.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | pos = pos + dir.to_vec_neg(1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pos += dir.to_vec_neg(1)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day19.rs:131:35 [INFO] [stderr] | [INFO] [stderr] 131 | letters.push((l + 'A' as u8) as char) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/yr2017/day23.rs:7:9 [INFO] [stderr] | [INFO] [stderr] 7 | Err(_) => panic!("invalid program") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/yr2017/day23.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | / match instr { [INFO] [stderr] 13 | | &Instruction::Set(_, _) | &Instruction::Sub(_, _) | [INFO] [stderr] 14 | | &Instruction::Mul(_, _) | &Instruction::Jnz(_, _) => (), [INFO] [stderr] 15 | | _ => panic!("invalid program"), [INFO] [stderr] 16 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 12 | match *instr { [INFO] [stderr] 13 | Instruction::Set(_, _) | Instruction::Sub(_, _) | [INFO] [stderr] 14 | Instruction::Mul(_, _) | Instruction::Jnz(_, _) => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/yr2017/day23.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | / match program.get(state.pc as usize) { [INFO] [stderr] 32 | | Some(&Instruction::Mul(_, _)) => mul_instructions += 1, [INFO] [stderr] 33 | | _ => (), [INFO] [stderr] 34 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(&Instruction::Mul(_, _)) = program.get(state.pc as usize) { mul_instructions += 1 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `-` [INFO] [stderr] --> src/yr2017/day23.rs:99:16 [INFO] [stderr] | [INFO] [stderr] 99 | state.regs[('a' as u8 - 'a' as u8) as usize] = 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day23.rs:99:17 [INFO] [stderr] | [INFO] [stderr] 99 | state.regs[('a' as u8 - 'a' as u8) as usize] = 1; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day23.rs:99:29 [INFO] [stderr] | [INFO] [stderr] 99 | state.regs[('a' as u8 - 'a' as u8) as usize] = 1; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day23.rs:109:17 [INFO] [stderr] | [INFO] [stderr] 109 | state.regs[('h' as u8 - 'a' as u8) as usize].to_string() [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'h' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/yr2017/day23.rs:109:29 [INFO] [stderr] | [INFO] [stderr] 109 | state.regs[('h' as u8 - 'a' as u8) as usize].to_string() [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/yr2018/day3.rs:66:22 [INFO] [stderr] | [INFO] [stderr] 66 | .filter(|&v| v >= &2) [INFO] [stderr] | ^^^^^-- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `2` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `aoc`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "5af2a1141dc53e652f79bd826c97bea7738a6f3e650f537c01c68e8f740e3e0f"` [INFO] running `"docker" "rm" "-f" "5af2a1141dc53e652f79bd826c97bea7738a6f3e650f537c01c68e8f740e3e0f"` [INFO] [stdout] 5af2a1141dc53e652f79bd826c97bea7738a6f3e650f537c01c68e8f740e3e0f