[INFO] updating cached repository ichyo/icfpc2018 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/ichyo/icfpc2018 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/ichyo/icfpc2018" "work/ex/clippy-test-run/sources/stable/gh/ichyo/icfpc2018"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/ichyo/icfpc2018'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/ichyo/icfpc2018" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ichyo/icfpc2018"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ichyo/icfpc2018'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 94bbc543e58e92cb6c782f938353061e04d4d1ba [INFO] sha for GitHub repo ichyo/icfpc2018: 94bbc543e58e92cb6c782f938353061e04d4d1ba [INFO] validating manifest of ichyo/icfpc2018 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 ichyo/icfpc2018 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 ichyo/icfpc2018 [INFO] finished frobbing ichyo/icfpc2018 [INFO] frobbed toml for ichyo/icfpc2018 written to work/ex/clippy-test-run/sources/stable/gh/ichyo/icfpc2018/Cargo.toml [INFO] started frobbing ichyo/icfpc2018 [INFO] finished frobbing ichyo/icfpc2018 [INFO] frobbed toml for ichyo/icfpc2018 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ichyo/icfpc2018/Cargo.toml [INFO] crate ichyo/icfpc2018 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 ichyo/icfpc2018 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/ichyo/icfpc2018:/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] c1a5c482acbd997ff783d08b4dfbad827bcd7fa7549713667280db6ba7719783 [INFO] running `"docker" "start" "-a" "c1a5c482acbd997ff783d08b4dfbad827bcd7fa7549713667280db6ba7719783"` [INFO] [stderr] Checking memchr v2.0.1 [INFO] [stderr] Checking tokio-service v0.1.0 [INFO] [stderr] Checking relay v0.1.1 [INFO] [stderr] Checking want v0.0.4 [INFO] [stderr] Checking tokio-io v0.1.7 [INFO] [stderr] Checking tokio-threadpool v0.1.5 [INFO] [stderr] Checking serde_urlencoded v0.5.2 [INFO] [stderr] Checking csv-core v0.1.4 [INFO] [stderr] Checking csv v1.0.0 [INFO] [stderr] Checking tokio-codec v0.1.0 [INFO] [stderr] Checking tokio-reactor v0.1.2 [INFO] [stderr] Checking tokio-fs v0.1.2 [INFO] [stderr] Checking tokio-udp v0.1.1 [INFO] [stderr] Checking tokio-tcp v0.1.0 [INFO] [stderr] Checking tokio v0.1.7 [INFO] [stderr] Checking tokio-core v0.1.17 [INFO] [stderr] Checking tokio-proto v0.1.1 [INFO] [stderr] Checking tokio-tls v0.1.4 [INFO] [stderr] Checking hyper v0.11.27 [INFO] [stderr] Checking hyper-tls v0.1.3 [INFO] [stderr] Checking reqwest v0.8.6 [INFO] [stderr] Checking icfpc2018 v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/nano/trace.rs:174:25 [INFO] [stderr] | [INFO] [stderr] 174 | let a = mask(x >> 4, 2); [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: 6th binding whose name is just one char [INFO] [stderr] --> src/nano/trace.rs:175:25 [INFO] [stderr] | [INFO] [stderr] 175 | let i = mask(y, 5); [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: 5th binding whose name is just one char [INFO] [stderr] --> src/nano/trace.rs:202:25 [INFO] [stderr] | [INFO] [stderr] 202 | let p = PnDiff::decode_near(nd); [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/nano/trace.rs:203:25 [INFO] [stderr] | [INFO] [stderr] 203 | let m = y; [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: 5th binding whose name is just one char [INFO] [stderr] --> src/nano/trace.rs:222:25 [INFO] [stderr] | [INFO] [stderr] 222 | let f = PnDiff::decode_far(dx, dy, dz); [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: 5th binding whose name is just one char [INFO] [stderr] --> src/nano/trace.rs:231:25 [INFO] [stderr] | [INFO] [stderr] 231 | let f = PnDiff::decode_far(dx, dy, dz); [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: 5th binding whose name is just one char [INFO] [stderr] --> src/nano/solver.rs:476:28 [INFO] [stderr] | [INFO] [stderr] 476 | let (f, t, d) = if dx != 0 { [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: 5th binding whose name is just one char [INFO] [stderr] --> src/nano/trace.rs:174:25 [INFO] [stderr] | [INFO] [stderr] 174 | let a = mask(x >> 4, 2); [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: 6th binding whose name is just one char [INFO] [stderr] --> src/nano/trace.rs:175:25 [INFO] [stderr] | [INFO] [stderr] 175 | let i = mask(y, 5); [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: 5th binding whose name is just one char [INFO] [stderr] --> src/nano/trace.rs:202:25 [INFO] [stderr] | [INFO] [stderr] 202 | let p = PnDiff::decode_near(nd); [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/nano/trace.rs:203:25 [INFO] [stderr] | [INFO] [stderr] 203 | let m = y; [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: 5th binding whose name is just one char [INFO] [stderr] --> src/nano/trace.rs:222:25 [INFO] [stderr] | [INFO] [stderr] 222 | let f = PnDiff::decode_far(dx, dy, dz); [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: 5th binding whose name is just one char [INFO] [stderr] --> src/nano/trace.rs:231:25 [INFO] [stderr] | [INFO] [stderr] 231 | let f = PnDiff::decode_far(dx, dy, dz); [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: 5th binding whose name is just one char [INFO] [stderr] --> src/nano/solver.rs:476:28 [INFO] [stderr] | [INFO] [stderr] 476 | let (f, t, d) = if dx != 0 { [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: long literal lacking separators [INFO] [stderr] --> src/nano/trace.rs:112:44 [INFO] [stderr] | [INFO] [stderr] 112 | Command::Halt => w.write(&[0b11111111])?, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1111` [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/nano/trace.rs:113:44 [INFO] [stderr] | [INFO] [stderr] 113 | Command::Wait => w.write(&[0b11111110])?, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1110` [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/nano/trace.rs:114:44 [INFO] [stderr] | [INFO] [stderr] 114 | Command::Flip => w.write(&[0b11111101])?, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1101` [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/nano/trace.rs:117:31 [INFO] [stderr] | [INFO] [stderr] 117 | w.write(&[0b00000100 | (a << 4), i])? [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0100` [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/nano/trace.rs:169:17 [INFO] [stderr] | [INFO] [stderr] 169 | 0b11111111 => Command::Halt, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1111` [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/nano/trace.rs:170:17 [INFO] [stderr] | [INFO] [stderr] 170 | 0b11111110 => Command::Wait, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1110` [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/nano/trace.rs:171:17 [INFO] [stderr] | [INFO] [stderr] 171 | 0b11111101 => Command::Flip, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1101` [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: unused import: `nano::util::floor` [INFO] [stderr] --> src/nano/solver.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use nano::util::floor; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/nano/solver.rs:21:25 [INFO] [stderr] | [INFO] [stderr] 21 | const MAX_ITER: usize = 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: Unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stderr] --> src/nano/solver.rs:69:12 [INFO] [stderr] | [INFO] [stderr] 69 | if MAX_SEED as usize <= 2 * r as usize - 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::int_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stderr] help: change `>= y + 1` to `> y` as shown [INFO] [stderr] | [INFO] [stderr] 69 | if MAX_SEED as usize < 2 * r as usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/nano/trace.rs:112:44 [INFO] [stderr] | [INFO] [stderr] 112 | Command::Halt => w.write(&[0b11111111])?, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1111` [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/nano/trace.rs:113:44 [INFO] [stderr] | [INFO] [stderr] 113 | Command::Wait => w.write(&[0b11111110])?, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1110` [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/nano/trace.rs:114:44 [INFO] [stderr] | [INFO] [stderr] 114 | Command::Flip => w.write(&[0b11111101])?, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1101` [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/nano/trace.rs:117:31 [INFO] [stderr] | [INFO] [stderr] 117 | w.write(&[0b00000100 | (a << 4), i])? [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0100` [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/nano/trace.rs:169:17 [INFO] [stderr] | [INFO] [stderr] 169 | 0b11111111 => Command::Halt, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1111` [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/nano/trace.rs:170:17 [INFO] [stderr] | [INFO] [stderr] 170 | 0b11111110 => Command::Wait, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1110` [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/nano/trace.rs:171:17 [INFO] [stderr] | [INFO] [stderr] 171 | 0b11111101 => Command::Flip, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1101` [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: unused import: `nano::util::floor` [INFO] [stderr] --> src/nano/solver.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use nano::util::floor; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/nano/solver.rs:21:25 [INFO] [stderr] | [INFO] [stderr] 21 | const MAX_ITER: usize = 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: Unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stderr] --> src/nano/solver.rs:69:12 [INFO] [stderr] | [INFO] [stderr] 69 | if MAX_SEED as usize <= 2 * r as usize - 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::int_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stderr] help: change `>= y + 1` to `> y` as shown [INFO] [stderr] | [INFO] [stderr] 69 | if MAX_SEED as usize < 2 * r as usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/nano/solver.rs:550:20 [INFO] [stderr] | [INFO] [stderr] 550 | .inspect(|(i, (s, energy))| { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/nano/solver.rs:550:24 [INFO] [stderr] | [INFO] [stderr] 550 | .inspect(|(i, (s, energy))| { [INFO] [stderr] | ^ help: consider using `_s` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `energy` [INFO] [stderr] --> src/nano/solver.rs:550:27 [INFO] [stderr] | [INFO] [stderr] 550 | .inspect(|(i, (s, energy))| { [INFO] [stderr] | ^^^^^^ help: consider using `_energy` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/nano/solver.rs:553:27 [INFO] [stderr] | [INFO] [stderr] 553 | .min_by_key(|(_, (s, c))| c.clone()) [INFO] [stderr] | ^ help: consider using `_s` instead [INFO] [stderr] [INFO] [stderr] warning: variable `remaining` is assigned to, but never used [INFO] [stderr] --> src/nano/solver.rs:562:13 [INFO] [stderr] | [INFO] [stderr] 562 | let mut remaining = matrix.len(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_remaining` instead [INFO] [stderr] [INFO] [stderr] warning: variable `removed` is assigned to, but never used [INFO] [stderr] --> src/nano/solver.rs:563:13 [INFO] [stderr] | [INFO] [stderr] 563 | let mut removed = 0; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_removed` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `idx` [INFO] [stderr] --> src/nano/solver.rs:308:25 [INFO] [stderr] | [INFO] [stderr] 308 | for idx in bots { [INFO] [stderr] | ^^^ help: consider using `_idx` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/nano/solver.rs:550:20 [INFO] [stderr] | [INFO] [stderr] 550 | .inspect(|(i, (s, energy))| { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/nano/solver.rs:550:24 [INFO] [stderr] | [INFO] [stderr] 550 | .inspect(|(i, (s, energy))| { [INFO] [stderr] | ^ help: consider using `_s` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `energy` [INFO] [stderr] --> src/nano/solver.rs:550:27 [INFO] [stderr] | [INFO] [stderr] 550 | .inspect(|(i, (s, energy))| { [INFO] [stderr] | ^^^^^^ help: consider using `_energy` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/nano/solver.rs:553:27 [INFO] [stderr] | [INFO] [stderr] 553 | .min_by_key(|(_, (s, c))| c.clone()) [INFO] [stderr] | ^ help: consider using `_s` instead [INFO] [stderr] [INFO] [stderr] warning: variable `remaining` is assigned to, but never used [INFO] [stderr] --> src/nano/solver.rs:562:13 [INFO] [stderr] | [INFO] [stderr] 562 | let mut remaining = matrix.len(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_remaining` instead [INFO] [stderr] [INFO] [stderr] warning: variable `removed` is assigned to, but never used [INFO] [stderr] --> src/nano/solver.rs:563:13 [INFO] [stderr] | [INFO] [stderr] 563 | let mut removed = 0; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_removed` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `idx` [INFO] [stderr] --> src/nano/solver.rs:308:25 [INFO] [stderr] | [INFO] [stderr] 308 | for idx in bots { [INFO] [stderr] | ^^^ help: consider using `_idx` instead [INFO] [stderr] [INFO] [stderr] warning: method is never used: `is_grounded` [INFO] [stderr] --> src/nano/game.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | fn is_grounded(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `model_dst` [INFO] [stderr] --> src/nano/solver.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | model_dst: &'a Model, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `is_grounded` [INFO] [stderr] --> src/nano/game.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | fn is_grounded(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `model_dst` [INFO] [stderr] --> src/nano/solver.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | model_dst: &'a Model, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/nano/game.rs:288:24 [INFO] [stderr] | [INFO] [stderr] 288 | if b.seeds.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `b.seeds.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/nano/game.rs:288:24 [INFO] [stderr] | [INFO] [stderr] 288 | if b.seeds.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `b.seeds.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: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/nano/game.rs:400:34 [INFO] [stderr] | [INFO] [stderr] 400 | self.state.energy += 2 * d.mlen() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(d.mlen())` [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: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/nano/game.rs:407:35 [INFO] [stderr] | [INFO] [stderr] 407 | self.state.energy += 2 * (d1.mlen() as u64 + 2 + d2.mlen() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u64::from(d1.mlen())` [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 u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/nano/game.rs:407:58 [INFO] [stderr] | [INFO] [stderr] 407 | self.state.energy += 2 * (d1.mlen() as u64 + 2 + d2.mlen() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u64::from(d2.mlen())` [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/nano/game.rs:436:30 [INFO] [stderr] | [INFO] [stderr] 436 | seeds: bot.seeds[1..m as usize + 1].to_owned(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `1..=m as usize` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nano/game.rs:499:15 [INFO] [stderr] | [INFO] [stderr] 499 | bots: &'b Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Bot]` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/nano/game.rs:509:26 [INFO] [stderr] | [INFO] [stderr] 509 | .or_insert(VecDeque::with_capacity(2)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| VecDeque::with_capacity(2))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/nano/game.rs:522:26 [INFO] [stderr] | [INFO] [stderr] 522 | .or_insert(VecDeque::with_capacity(8)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| VecDeque::with_capacity(8))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/nano/game.rs:528:26 [INFO] [stderr] | [INFO] [stderr] 528 | .or_insert(VecDeque::with_capacity(2)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| VecDeque::with_capacity(2))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/nano/game.rs:400:34 [INFO] [stderr] | [INFO] [stderr] 400 | self.state.energy += 2 * d.mlen() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(d.mlen())` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/nano/game.rs:576:36 [INFO] [stderr] | [INFO] [stderr] 576 | let (b1, t1) = group[0].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `group[0]` [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/nano/game.rs:577:36 [INFO] [stderr] | [INFO] [stderr] 577 | let (b2, t2) = group[1].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `group[1]` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/nano/game.rs:407:35 [INFO] [stderr] | [INFO] [stderr] 407 | self.state.energy += 2 * (d1.mlen() as u64 + 2 + d2.mlen() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u64::from(d1.mlen())` [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 u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/nano/game.rs:407:58 [INFO] [stderr] | [INFO] [stderr] 407 | self.state.energy += 2 * (d1.mlen() as u64 + 2 + d2.mlen() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u64::from(d2.mlen())` [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/nano/game.rs:590:36 [INFO] [stderr] | [INFO] [stderr] 590 | let (b1, t1) = group[0].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `group[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/nano/game.rs:635:17 [INFO] [stderr] | [INFO] [stderr] 635 | let r = self.resolution() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.resolution())` [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/nano/game.rs:436:30 [INFO] [stderr] | [INFO] [stderr] 436 | seeds: bot.seeds[1..m as usize + 1].to_owned(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `1..=m as usize` [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: item `nano::model::Matrix` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/nano/model.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | / impl Matrix { [INFO] [stderr] 18 | | pub fn new(r: u8) -> Matrix { [INFO] [stderr] 19 | | let rb = r as usize; [INFO] [stderr] 20 | | let n = floor(rb * rb * rb, 8); [INFO] [stderr] ... | [INFO] [stderr] 129 | | } [INFO] [stderr] 130 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `buffer`. [INFO] [stderr] --> src/nano/model.rs:45:18 [INFO] [stderr] | [INFO] [stderr] 45 | for i in 0..n { [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] 45 | for in buffer.iter_mut().take(n) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: The function/method `::from_bytes` doesn't need a mutable reference [INFO] [stderr] --> src/nano/model.rs:48:39 [INFO] [stderr] | [INFO] [stderr] 48 | let bits = BitSet::from_bytes(&mut buffer); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: item `nano::model::Model` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/nano/model.rs:132:1 [INFO] [stderr] | [INFO] [stderr] 132 | / impl Model { [INFO] [stderr] 133 | | pub fn new(r: u8) -> Model { [INFO] [stderr] 134 | | Model(Matrix::new(r)) [INFO] [stderr] 135 | | } [INFO] [stderr] ... | [INFO] [stderr] 177 | | } [INFO] [stderr] 178 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nano/game.rs:499:15 [INFO] [stderr] | [INFO] [stderr] 499 | bots: &'b Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Bot]` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/nano/game.rs:509:26 [INFO] [stderr] | [INFO] [stderr] 509 | .or_insert(VecDeque::with_capacity(2)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| VecDeque::with_capacity(2))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/nano/game.rs:522:26 [INFO] [stderr] | [INFO] [stderr] 522 | .or_insert(VecDeque::with_capacity(8)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| VecDeque::with_capacity(8))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/nano/game.rs:528:26 [INFO] [stderr] | [INFO] [stderr] 528 | .or_insert(VecDeque::with_capacity(2)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| VecDeque::with_capacity(2))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:15:17 [INFO] [stderr] | [INFO] [stderr] 15 | let r = r as i16; [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(r)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:16:17 [INFO] [stderr] | [INFO] [stderr] 16 | let x = (self.x as i16) + (rhs.dx as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(self.x)` [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 i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:16:35 [INFO] [stderr] | [INFO] [stderr] 16 | let x = (self.x as i16) + (rhs.dx as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(rhs.dx)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:17:17 [INFO] [stderr] | [INFO] [stderr] 17 | let y = (self.y as i16) + (rhs.dy as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(self.y)` [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 i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:17:35 [INFO] [stderr] | [INFO] [stderr] 17 | let y = (self.y as i16) + (rhs.dy as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(rhs.dy)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:18:17 [INFO] [stderr] | [INFO] [stderr] 18 | let z = (self.z as i16) + (rhs.dz as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(self.z)` [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 i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:18:35 [INFO] [stderr] | [INFO] [stderr] 18 | let z = (self.z as i16) + (rhs.dz as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(rhs.dz)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:31:18 [INFO] [stderr] | [INFO] [stderr] 31 | let dx = (self.x as i16) - (rhs.x as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(self.x)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:31:36 [INFO] [stderr] | [INFO] [stderr] 31 | let dx = (self.x as i16) - (rhs.x as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(rhs.x)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:32:18 [INFO] [stderr] | [INFO] [stderr] 32 | let dy = (self.y as i16) - (rhs.y as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(self.y)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:32:36 [INFO] [stderr] | [INFO] [stderr] 32 | let dy = (self.y as i16) - (rhs.y as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(rhs.y)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:33:18 [INFO] [stderr] | [INFO] [stderr] 33 | let dz = (self.z as i16) - (rhs.z as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(self.z)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:33:36 [INFO] [stderr] | [INFO] [stderr] 33 | let dz = (self.z as i16) - (rhs.z as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(rhs.z)` [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/nano/point.rs:45:18 [INFO] [stderr] | [INFO] [stderr] 45 | for x in lx..rx + 1 { [INFO] [stderr] | ^^^^^^^^^^ help: use: `lx..=rx` [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/nano/point.rs:46:22 [INFO] [stderr] | [INFO] [stderr] 46 | for y in ly..ry + 1 { [INFO] [stderr] | ^^^^^^^^^^ help: use: `ly..=ry` [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/nano/point.rs:47:26 [INFO] [stderr] | [INFO] [stderr] 47 | for z in lz..rz + 1 { [INFO] [stderr] | ^^^^^^^^^^ help: use: `lz..=rz` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:116:17 [INFO] [stderr] | [INFO] [stderr] 116 | pub fn mlen(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:120:17 [INFO] [stderr] | [INFO] [stderr] 120 | pub fn clen(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `nd` [INFO] [stderr] --> src/nano/point.rs:134:19 [INFO] [stderr] | [INFO] [stderr] 134 | let dz = ((nd / 1) % 3) as i8 - 1; [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:146:32 [INFO] [stderr] | [INFO] [stderr] 146 | pub fn encode_short_linear(&self) -> (u8, u8) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:149:31 [INFO] [stderr] | [INFO] [stderr] 149 | pub fn encode_long_linear(&self) -> (u8, u8) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:153:24 [INFO] [stderr] | [INFO] [stderr] 153 | pub fn encode_near(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:158:23 [INFO] [stderr] | [INFO] [stderr] 158 | pub fn encode_far(&self) -> (u8, u8, u8) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:189:22 [INFO] [stderr] | [INFO] [stderr] 189 | fn encode_linear(&self, size: u8) -> (u8, u8) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:203:18 [INFO] [stderr] | [INFO] [stderr] 203 | fn is_linear(&self, size: u8) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/nano/game.rs:576:36 [INFO] [stderr] | [INFO] [stderr] 576 | let (b1, t1) = group[0].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `group[0]` [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/nano/game.rs:577:36 [INFO] [stderr] | [INFO] [stderr] 577 | let (b2, t2) = group[1].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `group[1]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:215:27 [INFO] [stderr] | [INFO] [stderr] 215 | pub fn is_long_linear(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:219:28 [INFO] [stderr] | [INFO] [stderr] 219 | pub fn is_short_linear(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:223:20 [INFO] [stderr] | [INFO] [stderr] 223 | pub fn is_near(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:227:19 [INFO] [stderr] | [INFO] [stderr] 227 | pub fn is_far(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/nano/game.rs:590:36 [INFO] [stderr] | [INFO] [stderr] 590 | let (b1, t1) = group[0].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `group[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/nano/game.rs:635:17 [INFO] [stderr] | [INFO] [stderr] 635 | let r = self.resolution() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.resolution())` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/trace.rs:29:28 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn volatile_points(&self, c: Pn, r: u8) -> Result> { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:35:38 [INFO] [stderr] | [INFO] [stderr] 35 | let t = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:39:39 [INFO] [stderr] | [INFO] [stderr] 39 | let m = c.add(*d1, r).ok_or(invalid_coord_msg(c, *d1))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:40:39 [INFO] [stderr] | [INFO] [stderr] 40 | let t = m.add(*d2, r).ok_or(invalid_coord_msg(m, *d2))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(m, *d2))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:46:38 [INFO] [stderr] | [INFO] [stderr] 46 | let t = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:50:38 [INFO] [stderr] | [INFO] [stderr] 50 | let t = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:54:38 [INFO] [stderr] | [INFO] [stderr] 54 | let t = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:58:38 [INFO] [stderr] | [INFO] [stderr] 58 | let _ = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:62:38 [INFO] [stderr] | [INFO] [stderr] 62 | let _ = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:66:39 [INFO] [stderr] | [INFO] [stderr] 66 | let r1 = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:67:40 [INFO] [stderr] | [INFO] [stderr] 67 | let r2 = r1.add(*f, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:73:39 [INFO] [stderr] | [INFO] [stderr] 73 | let r1 = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:74:40 [INFO] [stderr] | [INFO] [stderr] 74 | let r2 = r1.add(*f, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: item `nano::trace::Trace` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/nano/trace.rs:86:1 [INFO] [stderr] | [INFO] [stderr] 86 | / impl Trace { [INFO] [stderr] 87 | | pub fn new(cmds: Vec) -> Trace { [INFO] [stderr] 88 | | Trace(cmds) [INFO] [stderr] 89 | | } [INFO] [stderr] ... | [INFO] [stderr] 96 | | } [INFO] [stderr] 97 | | } [INFO] [stderr] | |_^ [INFO] [stderr] warning: item `nano::model::Matrix` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/nano/model.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | / impl Matrix { [INFO] [stderr] 18 | | pub fn new(r: u8) -> Matrix { [INFO] [stderr] 19 | | let rb = r as usize; [INFO] [stderr] 20 | | let n = floor(rb * rb * rb, 8); [INFO] [stderr] ... | [INFO] [stderr] 129 | | } [INFO] [stderr] 130 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `buffer`. [INFO] [stderr] --> src/nano/model.rs:45:18 [INFO] [stderr] | [INFO] [stderr] 45 | for i in 0..n { [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] 45 | for in buffer.iter_mut().take(n) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: The function/method `::from_bytes` doesn't need a mutable reference [INFO] [stderr] --> src/nano/model.rs:48:39 [INFO] [stderr] | [INFO] [stderr] 48 | let bits = BitSet::from_bytes(&mut buffer); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/nano/trace.rs:146:21 [INFO] [stderr] | [INFO] [stderr] 146 | w.write(&[(nd << 3) | 0b001])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/nano/trace.rs:152:21 [INFO] [stderr] | [INFO] [stderr] 152 | w.write(&[(nd << 3) | 0b000])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `(nd << 3)` [INFO] [stderr] --> src/nano/trace.rs:152:31 [INFO] [stderr] | [INFO] [stderr] 152 | w.write(&[(nd << 3) | 0b000])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: item `nano::model::Model` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/nano/model.rs:132:1 [INFO] [stderr] | [INFO] [stderr] 132 | / impl Model { [INFO] [stderr] 133 | | pub fn new(r: u8) -> Model { [INFO] [stderr] 134 | | Model(Matrix::new(r)) [INFO] [stderr] 135 | | } [INFO] [stderr] ... | [INFO] [stderr] 177 | | } [INFO] [stderr] 178 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/nano/util.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | result = result | ((byte >> i) & 1) << (8 - 1 - i); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result |= ((byte >> i) & 1) << (8 - 1 - i)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nano/solver.rs:160:36 [INFO] [stderr] | [INFO] [stderr] 160 | fn arrived_bots(&self, target: &Vec>) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Option]` [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/nano/solver.rs:171:17 [INFO] [stderr] | [INFO] [stderr] 171 | target: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Option]` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:15:17 [INFO] [stderr] | [INFO] [stderr] 15 | let r = r as i16; [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(r)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:16:17 [INFO] [stderr] | [INFO] [stderr] 16 | let x = (self.x as i16) + (rhs.dx as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(self.x)` [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 i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:16:35 [INFO] [stderr] | [INFO] [stderr] 16 | let x = (self.x as i16) + (rhs.dx as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(rhs.dx)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:17:17 [INFO] [stderr] | [INFO] [stderr] 17 | let y = (self.y as i16) + (rhs.dy as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(self.y)` [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 i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:17:35 [INFO] [stderr] | [INFO] [stderr] 17 | let y = (self.y as i16) + (rhs.dy as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(rhs.dy)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:18:17 [INFO] [stderr] | [INFO] [stderr] 18 | let z = (self.z as i16) + (rhs.dz as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(self.z)` [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 i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:18:35 [INFO] [stderr] | [INFO] [stderr] 18 | let z = (self.z as i16) + (rhs.dz as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(rhs.dz)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:31:18 [INFO] [stderr] | [INFO] [stderr] 31 | let dx = (self.x as i16) - (rhs.x as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(self.x)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:31:36 [INFO] [stderr] | [INFO] [stderr] 31 | let dx = (self.x as i16) - (rhs.x as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(rhs.x)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:32:18 [INFO] [stderr] | [INFO] [stderr] 32 | let dy = (self.y as i16) - (rhs.y as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(self.y)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:32:36 [INFO] [stderr] | [INFO] [stderr] 32 | let dy = (self.y as i16) - (rhs.y as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(rhs.y)` [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 loop variable `i` is used to index `bots` [INFO] [stderr] --> src/nano/solver.rs:190:18 [INFO] [stderr] | [INFO] [stderr] 190 | for i in 0..bots.len() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [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] 190 | for (i, ) in bots.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:33:18 [INFO] [stderr] | [INFO] [stderr] 33 | let dz = (self.z as i16) - (rhs.z as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(self.z)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/point.rs:33:36 [INFO] [stderr] | [INFO] [stderr] 33 | let dz = (self.z as i16) - (rhs.z as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(rhs.z)` [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/nano/point.rs:45:18 [INFO] [stderr] | [INFO] [stderr] 45 | for x in lx..rx + 1 { [INFO] [stderr] | ^^^^^^^^^^ help: use: `lx..=rx` [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/nano/point.rs:46:22 [INFO] [stderr] | [INFO] [stderr] 46 | for y in ly..ry + 1 { [INFO] [stderr] | ^^^^^^^^^^ help: use: `ly..=ry` [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/nano/point.rs:47:26 [INFO] [stderr] | [INFO] [stderr] 47 | for z in lz..rz + 1 { [INFO] [stderr] | ^^^^^^^^^^ help: use: `lz..=rz` [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: the loop variable `i` is only used to index `use_bots`. [INFO] [stderr] --> src/nano/solver.rs:271:26 [INFO] [stderr] | [INFO] [stderr] 271 | for i in 0..8 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [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] 271 | for in &mut use_bots { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `s` [INFO] [stderr] --> src/nano/solver.rs:276:33 [INFO] [stderr] | [INFO] [stderr] 276 | let x = if ((s >> 0) & 1) == 1 { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/nano/solver.rs:312:43 [INFO] [stderr] | [INFO] [stderr] 312 | remove_list.push((bots.clone(), (fp.clone(), tp.clone()))); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*bots` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/nano/solver.rs:312:58 [INFO] [stderr] | [INFO] [stderr] 312 | remove_list.push((bots.clone(), (fp.clone(), tp.clone()))); [INFO] [stderr] | ^^^^^^^^^^ help: try dereferencing it: `*fp` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/nano/solver.rs:312:70 [INFO] [stderr] | [INFO] [stderr] 312 | remove_list.push((bots.clone(), (fp.clone(), tp.clone()))); [INFO] [stderr] | ^^^^^^^^^^ help: try dereferencing it: `*tp` [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: the loop variable `s` is used to index `bots` [INFO] [stderr] --> src/nano/solver.rs:314:34 [INFO] [stderr] | [INFO] [stderr] 314 | for s in 0..8 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [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] 314 | for (s, ) in bots.iter().enumerate().take(8) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:116:17 [INFO] [stderr] | [INFO] [stderr] 116 | pub fn mlen(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:120:17 [INFO] [stderr] | [INFO] [stderr] 120 | pub fn clen(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `nd` [INFO] [stderr] --> src/nano/point.rs:134:19 [INFO] [stderr] | [INFO] [stderr] 134 | let dz = ((nd / 1) % 3) as i8 - 1; [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:146:32 [INFO] [stderr] | [INFO] [stderr] 146 | pub fn encode_short_linear(&self) -> (u8, u8) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:149:31 [INFO] [stderr] | [INFO] [stderr] 149 | pub fn encode_long_linear(&self) -> (u8, u8) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:153:24 [INFO] [stderr] | [INFO] [stderr] 153 | pub fn encode_near(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:158:23 [INFO] [stderr] | [INFO] [stderr] 158 | pub fn encode_far(&self) -> (u8, u8, u8) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:483:22 [INFO] [stderr] | [INFO] [stderr] 483 | if ((f as i16 + d as i16 * k as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(f)` [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 i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:483:33 [INFO] [stderr] | [INFO] [stderr] 483 | if ((f as i16 + d as i16 * k as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:189:22 [INFO] [stderr] | [INFO] [stderr] 189 | fn encode_linear(&self, size: u8) -> (u8, u8) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:483:44 [INFO] [stderr] | [INFO] [stderr] 483 | if ((f as i16 + d as i16 * k as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(k)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:483:56 [INFO] [stderr] | [INFO] [stderr] 483 | if ((f as i16 + d as i16 * k as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(t)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:484:25 [INFO] [stderr] | [INFO] [stderr] 484 | < ((f as i16 + d as i16 * (k + 1) as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(f)` [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 i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:484:36 [INFO] [stderr] | [INFO] [stderr] 484 | < ((f as i16 + d as i16 * (k + 1) as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::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: casting i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:484:47 [INFO] [stderr] | [INFO] [stderr] 484 | < ((f as i16 + d as i16 * (k + 1) as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(k + 1)` [INFO] [stderr] | [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:203:18 [INFO] [stderr] | [INFO] [stderr] 203 | fn is_linear(&self, size: u8) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:484:65 [INFO] [stderr] | [INFO] [stderr] 484 | < ((f as i16 + d as i16 * (k + 1) as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(t)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:215:27 [INFO] [stderr] | [INFO] [stderr] 215 | pub fn is_long_linear(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/solver.rs:554:10 [INFO] [stderr] | [INFO] [stderr] 554 | .ok_or("no solution found".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "no solution found".into())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/nano/solver.rs:553:35 [INFO] [stderr] | [INFO] [stderr] 553 | .min_by_key(|(_, (s, c))| c.clone()) [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*c` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:577:25 [INFO] [stderr] | [INFO] [stderr] 577 | tx as i16 - fx as i16, [INFO] [stderr] | ^^^^^^^^^ help: try: `i16::from(tx)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:577:37 [INFO] [stderr] | [INFO] [stderr] 577 | tx as i16 - fx as i16, [INFO] [stderr] | ^^^^^^^^^ help: try: `i16::from(fx)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:578:34 [INFO] [stderr] | [INFO] [stderr] 578 | cmp::min(ty as i16 - fy as i16, tz as i16 - fz as i16), [INFO] [stderr] | ^^^^^^^^^ help: try: `i16::from(ty)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:578:46 [INFO] [stderr] | [INFO] [stderr] 578 | cmp::min(ty as i16 - fy as i16, tz as i16 - fz as i16), [INFO] [stderr] | ^^^^^^^^^ help: try: `i16::from(fy)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:578:57 [INFO] [stderr] | [INFO] [stderr] 578 | cmp::min(ty as i16 - fy as i16, tz as i16 - fz as i16), [INFO] [stderr] | ^^^^^^^^^ help: try: `i16::from(tz)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:578:69 [INFO] [stderr] | [INFO] [stderr] 578 | cmp::min(ty as i16 - fy as i16, tz as i16 - fz as i16), [INFO] [stderr] | ^^^^^^^^^ help: try: `i16::from(fz)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:219:28 [INFO] [stderr] | [INFO] [stderr] 219 | pub fn is_short_linear(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:223:20 [INFO] [stderr] | [INFO] [stderr] 223 | pub fn is_near(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/point.rs:227:19 [INFO] [stderr] | [INFO] [stderr] 227 | pub fn is_far(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `icfpc2018`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nano/trace.rs:29:28 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn volatile_points(&self, c: Pn, r: u8) -> Result> { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:35:38 [INFO] [stderr] | [INFO] [stderr] 35 | let t = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:39:39 [INFO] [stderr] | [INFO] [stderr] 39 | let m = c.add(*d1, r).ok_or(invalid_coord_msg(c, *d1))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:40:39 [INFO] [stderr] | [INFO] [stderr] 40 | let t = m.add(*d2, r).ok_or(invalid_coord_msg(m, *d2))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(m, *d2))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:46:38 [INFO] [stderr] | [INFO] [stderr] 46 | let t = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:50:38 [INFO] [stderr] | [INFO] [stderr] 50 | let t = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:54:38 [INFO] [stderr] | [INFO] [stderr] 54 | let t = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:58:38 [INFO] [stderr] | [INFO] [stderr] 58 | let _ = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:62:38 [INFO] [stderr] | [INFO] [stderr] 62 | let _ = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:66:39 [INFO] [stderr] | [INFO] [stderr] 66 | let r1 = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:67:40 [INFO] [stderr] | [INFO] [stderr] 67 | let r2 = r1.add(*f, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:73:39 [INFO] [stderr] | [INFO] [stderr] 73 | let r1 = c.add(*d, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/trace.rs:74:40 [INFO] [stderr] | [INFO] [stderr] 74 | let r2 = r1.add(*f, r).ok_or(invalid_coord_msg(c, *d))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_coord_msg(c, *d))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: item `nano::trace::Trace` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/nano/trace.rs:86:1 [INFO] [stderr] | [INFO] [stderr] 86 | / impl Trace { [INFO] [stderr] 87 | | pub fn new(cmds: Vec) -> Trace { [INFO] [stderr] 88 | | Trace(cmds) [INFO] [stderr] 89 | | } [INFO] [stderr] ... | [INFO] [stderr] 96 | | } [INFO] [stderr] 97 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/nano/trace.rs:146:21 [INFO] [stderr] | [INFO] [stderr] 146 | w.write(&[(nd << 3) | 0b001])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/nano/trace.rs:152:21 [INFO] [stderr] | [INFO] [stderr] 152 | w.write(&[(nd << 3) | 0b000])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `(nd << 3)` [INFO] [stderr] --> src/nano/trace.rs:152:31 [INFO] [stderr] | [INFO] [stderr] 152 | w.write(&[(nd << 3) | 0b000])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/nano/util.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | result = result | ((byte >> i) & 1) << (8 - 1 - i); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result |= ((byte >> i) & 1) << (8 - 1 - i)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nano/solver.rs:160:36 [INFO] [stderr] | [INFO] [stderr] 160 | fn arrived_bots(&self, target: &Vec>) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Option]` [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/nano/solver.rs:171:17 [INFO] [stderr] | [INFO] [stderr] 171 | target: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Option]` [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: the loop variable `i` is used to index `bots` [INFO] [stderr] --> src/nano/solver.rs:190:18 [INFO] [stderr] | [INFO] [stderr] 190 | for i in 0..bots.len() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [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] 190 | for (i, ) in bots.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `use_bots`. [INFO] [stderr] --> src/nano/solver.rs:271:26 [INFO] [stderr] | [INFO] [stderr] 271 | for i in 0..8 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [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] 271 | for in &mut use_bots { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `s` [INFO] [stderr] --> src/nano/solver.rs:276:33 [INFO] [stderr] | [INFO] [stderr] 276 | let x = if ((s >> 0) & 1) == 1 { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/nano/solver.rs:312:43 [INFO] [stderr] | [INFO] [stderr] 312 | remove_list.push((bots.clone(), (fp.clone(), tp.clone()))); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*bots` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/nano/solver.rs:312:58 [INFO] [stderr] | [INFO] [stderr] 312 | remove_list.push((bots.clone(), (fp.clone(), tp.clone()))); [INFO] [stderr] | ^^^^^^^^^^ help: try dereferencing it: `*fp` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/nano/solver.rs:312:70 [INFO] [stderr] | [INFO] [stderr] 312 | remove_list.push((bots.clone(), (fp.clone(), tp.clone()))); [INFO] [stderr] | ^^^^^^^^^^ help: try dereferencing it: `*tp` [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: the loop variable `s` is used to index `bots` [INFO] [stderr] --> src/nano/solver.rs:314:34 [INFO] [stderr] | [INFO] [stderr] 314 | for s in 0..8 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [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] 314 | for (s, ) in bots.iter().enumerate().take(8) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:483:22 [INFO] [stderr] | [INFO] [stderr] 483 | if ((f as i16 + d as i16 * k as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(f)` [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 i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:483:33 [INFO] [stderr] | [INFO] [stderr] 483 | if ((f as i16 + d as i16 * k as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::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: casting i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:483:44 [INFO] [stderr] | [INFO] [stderr] 483 | if ((f as i16 + d as i16 * k as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(k)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:483:56 [INFO] [stderr] | [INFO] [stderr] 483 | if ((f as i16 + d as i16 * k as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(t)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:484:25 [INFO] [stderr] | [INFO] [stderr] 484 | < ((f as i16 + d as i16 * (k + 1) as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(f)` [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 i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:484:36 [INFO] [stderr] | [INFO] [stderr] 484 | < ((f as i16 + d as i16 * (k + 1) as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::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: casting i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:484:47 [INFO] [stderr] | [INFO] [stderr] 484 | < ((f as i16 + d as i16 * (k + 1) as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(k + 1)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:484:65 [INFO] [stderr] | [INFO] [stderr] 484 | < ((f as i16 + d as i16 * (k + 1) as i16) - t as i16).abs() [INFO] [stderr] | ^^^^^^^^ help: try: `i16::from(t)` [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/nano/solver.rs:554:10 [INFO] [stderr] | [INFO] [stderr] 554 | .ok_or("no solution found".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "no solution found".into())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/nano/solver.rs:553:35 [INFO] [stderr] | [INFO] [stderr] 553 | .min_by_key(|(_, (s, c))| c.clone()) [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*c` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:577:25 [INFO] [stderr] | [INFO] [stderr] 577 | tx as i16 - fx as i16, [INFO] [stderr] | ^^^^^^^^^ help: try: `i16::from(tx)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:577:37 [INFO] [stderr] | [INFO] [stderr] 577 | tx as i16 - fx as i16, [INFO] [stderr] | ^^^^^^^^^ help: try: `i16::from(fx)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:578:34 [INFO] [stderr] | [INFO] [stderr] 578 | cmp::min(ty as i16 - fy as i16, tz as i16 - fz as i16), [INFO] [stderr] | ^^^^^^^^^ help: try: `i16::from(ty)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:578:46 [INFO] [stderr] | [INFO] [stderr] 578 | cmp::min(ty as i16 - fy as i16, tz as i16 - fz as i16), [INFO] [stderr] | ^^^^^^^^^ help: try: `i16::from(fy)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:578:57 [INFO] [stderr] | [INFO] [stderr] 578 | cmp::min(ty as i16 - fy as i16, tz as i16 - fz as i16), [INFO] [stderr] | ^^^^^^^^^ help: try: `i16::from(tz)` [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 u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/nano/solver.rs:578:69 [INFO] [stderr] | [INFO] [stderr] 578 | cmp::min(ty as i16 - fy as i16, tz as i16 - fz as i16), [INFO] [stderr] | ^^^^^^^^^ help: try: `i16::from(fz)` [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] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `icfpc2018`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "c1a5c482acbd997ff783d08b4dfbad827bcd7fa7549713667280db6ba7719783"` [INFO] running `"docker" "rm" "-f" "c1a5c482acbd997ff783d08b4dfbad827bcd7fa7549713667280db6ba7719783"` [INFO] [stdout] c1a5c482acbd997ff783d08b4dfbad827bcd7fa7549713667280db6ba7719783