[INFO] crate queens-rock 0.1.0 is already in cache [INFO] extracting crate queens-rock 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/queens-rock/0.1.0 [INFO] extracting crate queens-rock 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/queens-rock/0.1.0 [INFO] validating manifest of queens-rock-0.1.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of queens-rock-0.1.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing queens-rock-0.1.0 [INFO] finished frobbing queens-rock-0.1.0 [INFO] frobbed toml for queens-rock-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/queens-rock/0.1.0/Cargo.toml [INFO] started frobbing queens-rock-0.1.0 [INFO] finished frobbing queens-rock-0.1.0 [INFO] frobbed toml for queens-rock-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/queens-rock/0.1.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting queens-rock-0.1.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/queens-rock/0.1.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 2bf7af24fd3ebe2f4c2cf894bb5f695ef4d6a4384dccbf888c9c7cc62b22b628 [INFO] running `"docker" "start" "-a" "2bf7af24fd3ebe2f4c2cf894bb5f695ef4d6a4384dccbf888c9c7cc62b22b628"` [INFO] [stderr] Checking queens-rock v0.1.0 (/opt/crater/workdir) [INFO] [stderr] Checking tiff v0.2.1 [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/gf256.rs:215:17 [INFO] [stderr] | [INFO] [stderr] 215 | let mut m = 1; [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/gf256.rs:217:21 [INFO] [stderr] | [INFO] [stderr] 217 | let mut d = s[j]; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/gf256.rs:235:21 [INFO] [stderr] | [INFO] [stderr] 235 | let t = c1.clone(); [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/identify.rs:108:13 [INFO] [stderr] | [INFO] [stderr] 108 | let y = (c[3] * u + c[4] * v + c[5]) / den; [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/identify.rs:320:17 [INFO] [stderr] | [INFO] [stderr] 320 | let (u, v) = c2.c.unmap(&b); [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/identify.rs:374:21 [INFO] [stderr] | [INFO] [stderr] 374 | let (mut x, mut y) = (p0.x, p0.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: 6th binding whose name is just one char [INFO] [stderr] --> src/identify.rs:376:13 [INFO] [stderr] | [INFO] [stderr] 376 | let mut n = p1.x - p0.x; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/identify.rs:377:13 [INFO] [stderr] | [INFO] [stderr] 377 | let mut d = p1.y - p0.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: 8th binding whose name is just one char [INFO] [stderr] --> src/identify.rs:404:13 [INFO] [stderr] | [INFO] [stderr] 404 | let mut a = 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/identify.rs:729:18 [INFO] [stderr] | [INFO] [stderr] 729 | let (x, y) = reg_r.borrow().seed.split(); [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/identify.rs:729:21 [INFO] [stderr] | [INFO] [stderr] 729 | let (x, y) = reg_r.borrow().seed.split(); [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/linear_algebra.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | let c = -(q.b.y - q.a.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: 6th binding whose name is just one char [INFO] [stderr] --> src/linear_algebra.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | let d = q.b.x - q.a.x; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/linear_algebra.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | let e = a * p.b.x + b * p.b.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: 8th binding whose name is just one char [INFO] [stderr] --> src/linear_algebra.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | let f = c * q.b.x + d * q.b.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] Checking image v0.20.1 [INFO] [stderr] warning: constant item is never used: `DATA_TYPE_KANJI` [INFO] [stderr] --> src/decode.rs:195:5 [INFO] [stderr] | [INFO] [stderr] 195 | const DATA_TYPE_KANJI: usize = 0b1000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bit_vec.rs:126:32 [INFO] [stderr] | [INFO] [stderr] 126 | if bit_pos != 0 && self.buf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.buf.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: manual implementation of an assign operation [INFO] [stderr] --> src/bit_vec.rs:234:13 [INFO] [stderr] | [INFO] [stderr] 234 | a = a << 1; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `a <<= 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: The function/method `read_data` doesn't need a mutable reference [INFO] [stderr] --> src/decode.rs:182:31 [INFO] [stderr] | [INFO] [stderr] 182 | let buf = read_data(code, &mut data)?; [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/decode.rs:253:36 [INFO] [stderr] | [INFO] [stderr] 253 | *x = ((tuple % 10) as u8 + '0' as u8).into(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'0' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/decode.rs:407:32 [INFO] [stderr] | [INFO] [stderr] 407 | let mut lb_ecc: RsParams = sb_ecc.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*sb_ecc` [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: the loop variable `i` is used to index `result` [INFO] [stderr] --> src/gf256.rs:109:18 [INFO] [stderr] | [INFO] [stderr] 109 | for i in 0..npar { [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] 109 | for (i, ) in result.iter_mut().enumerate().take(npar) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/gf256.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | / match dest.get_mut(p as usize) { [INFO] [stderr] 191 | | Some(dest_p) => { [INFO] [stderr] 192 | | *dest_p ^= self.exp [INFO] [stderr] 193 | | [((self.log[*v as usize] as usize + log_c as usize) % self.p as usize)]; [INFO] [stderr] ... | [INFO] [stderr] 196 | | _ => {} [INFO] [stderr] 197 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 190 | if let Some(dest_p) = dest.get_mut(p as usize) { [INFO] [stderr] 191 | *dest_p ^= self.exp [INFO] [stderr] 192 | [((self.log[*v as usize] as usize + log_c as usize) % self.p as usize)]; [INFO] [stderr] 193 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/gf256.rs:219:22 [INFO] [stderr] | [INFO] [stderr] 219 | for i in 1..(l + 1) { [INFO] [stderr] | ^^^^^^^^^^ help: use: `1..=l` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:176:32 [INFO] [stderr] | [INFO] [stderr] 176 | FindOneCorner::new(ref_.clone()), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*ref_` [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/identify.rs:310:17 [INFO] [stderr] | [INFO] [stderr] 310 | let mut b = qr.align.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `qr.align` [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 looks like you are swapping `n` and `d` manually [INFO] [stderr] --> src/identify.rs:380:9 [INFO] [stderr] | [INFO] [stderr] 380 | / let swap = n; [INFO] [stderr] 381 | | n = d; [INFO] [stderr] 382 | | d = swap; [INFO] [stderr] | |________________^ help: try: `std::mem::swap(&mut n, &mut d)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_swap)] on by default [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/identify.rs:406:14 [INFO] [stderr] | [INFO] [stderr] 406 | for _ in 0..(d + 1) { [INFO] [stderr] | ^^^^^^^^^^ help: use: `0..=d` [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 `j` is used to index `adjustments` [INFO] [stderr] --> src/identify.rs:593:18 [INFO] [stderr] | [INFO] [stderr] 593 | for j 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] 593 | for (j, ) in adjustments.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:628:9 [INFO] [stderr] | [INFO] [stderr] 628 | qr.caps[1].borrow().corners.0[0].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `qr.caps[1].borrow().corners.0[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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:629:9 [INFO] [stderr] | [INFO] [stderr] 629 | qr.caps[2].borrow().corners.0[0].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `qr.caps[2].borrow().corners.0[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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:631:9 [INFO] [stderr] | [INFO] [stderr] 631 | qr.caps[0].borrow().corners.0[0].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `qr.caps[0].borrow().corners.0[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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:654:13 [INFO] [stderr] | [INFO] [stderr] 654 | a.center.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.center` [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 looks like you are swapping `a` and `c` manually [INFO] [stderr] --> src/identify.rs:667:13 [INFO] [stderr] | [INFO] [stderr] 667 | / let swap = a; [INFO] [stderr] 668 | | [INFO] [stderr] 669 | | a = c; [INFO] [stderr] 670 | | c = swap; [INFO] [stderr] | |____________________^ help: try: `std::mem::swap(&mut a, &mut c)` [INFO] [stderr] | [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:702:16 [INFO] [stderr] | [INFO] [stderr] 702 | a: a.corners.0[0].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.corners.0[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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:703:16 [INFO] [stderr] | [INFO] [stderr] 703 | b: a.corners.0[1].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.corners.0[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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:706:16 [INFO] [stderr] | [INFO] [stderr] 706 | a: c.corners.0[0].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `c.corners.0[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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:707:16 [INFO] [stderr] | [INFO] [stderr] 707 | b: c.corners.0[3].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `c.corners.0[3]` [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/identify.rs:747:49 [INFO] [stderr] | [INFO] [stderr] 747 | FindLeftmostToLine::new(hd.clone(), score), [INFO] [stderr] | ^^^^^^^^^^ help: try removing the `clone` call: `hd` [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: redundant closure found [INFO] [stderr] --> src/identify.rs:881:29 [INFO] [stderr] | [INFO] [stderr] 881 | let iter = iter.map(|i| Pixel::Origin(i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Pixel::Origin` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: item `identify::ScanResults` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/identify.rs:1109:1 [INFO] [stderr] | [INFO] [stderr] 1109 | / impl ScanResults { [INFO] [stderr] 1110 | | /// Scan QR bitmap from source image [INFO] [stderr] 1111 | | pub fn extract(&self, index: usize) -> Option { [INFO] [stderr] 1112 | | let qr = self.grids.get(index)?; [INFO] [stderr] ... | [INFO] [stderr] 1156 | | } [INFO] [stderr] 1157 | | } [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: slow zero-filling initialization [INFO] [stderr] --> src/pixels.rs:153:9 [INFO] [stderr] | [INFO] [stderr] 152 | let mut row_average: Vec = Vec::with_capacity(w); [INFO] [stderr] | --------------------- help: consider replace allocation with: `vec![0; w]` [INFO] [stderr] 153 | row_average.resize(w, 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::slow_vector_initialization)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/pixels.rs:230:26 [INFO] [stderr] | [INFO] [stderr] 230 | for i in row[(left..(right + 1))].iter_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `(left..=right)` [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/pixels.rs:238:25 [INFO] [stderr] | [INFO] [stderr] 238 | let range = left..(right + 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `left..=right` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/gf256.rs:215:17 [INFO] [stderr] | [INFO] [stderr] 215 | let mut m = 1; [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/gf256.rs:217:21 [INFO] [stderr] | [INFO] [stderr] 217 | let mut d = s[j]; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/gf256.rs:235:21 [INFO] [stderr] | [INFO] [stderr] 235 | let t = c1.clone(); [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/identify.rs:108:13 [INFO] [stderr] | [INFO] [stderr] 108 | let y = (c[3] * u + c[4] * v + c[5]) / den; [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/identify.rs:320:17 [INFO] [stderr] | [INFO] [stderr] 320 | let (u, v) = c2.c.unmap(&b); [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/identify.rs:374:21 [INFO] [stderr] | [INFO] [stderr] 374 | let (mut x, mut y) = (p0.x, p0.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: 6th binding whose name is just one char [INFO] [stderr] --> src/identify.rs:376:13 [INFO] [stderr] | [INFO] [stderr] 376 | let mut n = p1.x - p0.x; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/identify.rs:377:13 [INFO] [stderr] | [INFO] [stderr] 377 | let mut d = p1.y - p0.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: 8th binding whose name is just one char [INFO] [stderr] --> src/identify.rs:404:13 [INFO] [stderr] | [INFO] [stderr] 404 | let mut a = 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/identify.rs:729:18 [INFO] [stderr] | [INFO] [stderr] 729 | let (x, y) = reg_r.borrow().seed.split(); [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/identify.rs:729:21 [INFO] [stderr] | [INFO] [stderr] 729 | let (x, y) = reg_r.borrow().seed.split(); [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/linear_algebra.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | let c = -(q.b.y - q.a.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: 6th binding whose name is just one char [INFO] [stderr] --> src/linear_algebra.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | let d = q.b.x - q.a.x; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/linear_algebra.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | let e = a * p.b.x + b * p.b.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: 8th binding whose name is just one char [INFO] [stderr] --> src/linear_algebra.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | let f = c * q.b.x + d * q.b.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: long literal lacking separators [INFO] [stderr] --> src/bit_vec.rs:414:46 [INFO] [stderr] | [INFO] [stderr] 414 | assert_eq!(buf.iter().take_bits(32), 0b110011); [INFO] [stderr] | ^^^^^^^^ help: consider: `0b11_0011` [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/bit_vec.rs:425:41 [INFO] [stderr] | [INFO] [stderr] 425 | assert_eq!(buf.as_ref()[0], 0b00000111); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0111` [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/bit_vec.rs:434:41 [INFO] [stderr] | [INFO] [stderr] 434 | assert_eq!(buf.as_ref()[0], 0b11100000); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1110_0000` [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: constant item is never used: `DATA_TYPE_KANJI` [INFO] [stderr] --> src/decode.rs:195:5 [INFO] [stderr] | [INFO] [stderr] 195 | const DATA_TYPE_KANJI: usize = 0b1000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bit_vec.rs:126:32 [INFO] [stderr] | [INFO] [stderr] 126 | if bit_pos != 0 && self.buf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.buf.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: manual implementation of an assign operation [INFO] [stderr] --> src/bit_vec.rs:234:13 [INFO] [stderr] | [INFO] [stderr] 234 | a = a << 1; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `a <<= 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: The function/method `read_data` doesn't need a mutable reference [INFO] [stderr] --> src/decode.rs:182:31 [INFO] [stderr] | [INFO] [stderr] 182 | let buf = read_data(code, &mut data)?; [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/decode.rs:253:36 [INFO] [stderr] | [INFO] [stderr] 253 | *x = ((tuple % 10) as u8 + '0' as u8).into(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'0' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/decode.rs:407:32 [INFO] [stderr] | [INFO] [stderr] 407 | let mut lb_ecc: RsParams = sb_ecc.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*sb_ecc` [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: the loop variable `i` is used to index `result` [INFO] [stderr] --> src/gf256.rs:109:18 [INFO] [stderr] | [INFO] [stderr] 109 | for i in 0..npar { [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] 109 | for (i, ) in result.iter_mut().enumerate().take(npar) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/gf256.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | / match dest.get_mut(p as usize) { [INFO] [stderr] 191 | | Some(dest_p) => { [INFO] [stderr] 192 | | *dest_p ^= self.exp [INFO] [stderr] 193 | | [((self.log[*v as usize] as usize + log_c as usize) % self.p as usize)]; [INFO] [stderr] ... | [INFO] [stderr] 196 | | _ => {} [INFO] [stderr] 197 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 190 | if let Some(dest_p) = dest.get_mut(p as usize) { [INFO] [stderr] 191 | *dest_p ^= self.exp [INFO] [stderr] 192 | [((self.log[*v as usize] as usize + log_c as usize) % self.p as usize)]; [INFO] [stderr] 193 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/gf256.rs:219:22 [INFO] [stderr] | [INFO] [stderr] 219 | for i in 1..(l + 1) { [INFO] [stderr] | ^^^^^^^^^^ help: use: `1..=l` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:176:32 [INFO] [stderr] | [INFO] [stderr] 176 | FindOneCorner::new(ref_.clone()), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*ref_` [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/identify.rs:310:17 [INFO] [stderr] | [INFO] [stderr] 310 | let mut b = qr.align.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `qr.align` [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 looks like you are swapping `n` and `d` manually [INFO] [stderr] --> src/identify.rs:380:9 [INFO] [stderr] | [INFO] [stderr] 380 | / let swap = n; [INFO] [stderr] 381 | | n = d; [INFO] [stderr] 382 | | d = swap; [INFO] [stderr] | |________________^ help: try: `std::mem::swap(&mut n, &mut d)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_swap)] on by default [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/identify.rs:406:14 [INFO] [stderr] | [INFO] [stderr] 406 | for _ in 0..(d + 1) { [INFO] [stderr] | ^^^^^^^^^^ help: use: `0..=d` [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 `j` is used to index `adjustments` [INFO] [stderr] --> src/identify.rs:593:18 [INFO] [stderr] | [INFO] [stderr] 593 | for j 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] 593 | for (j, ) in adjustments.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:628:9 [INFO] [stderr] | [INFO] [stderr] 628 | qr.caps[1].borrow().corners.0[0].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `qr.caps[1].borrow().corners.0[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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:629:9 [INFO] [stderr] | [INFO] [stderr] 629 | qr.caps[2].borrow().corners.0[0].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `qr.caps[2].borrow().corners.0[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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:631:9 [INFO] [stderr] | [INFO] [stderr] 631 | qr.caps[0].borrow().corners.0[0].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `qr.caps[0].borrow().corners.0[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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:654:13 [INFO] [stderr] | [INFO] [stderr] 654 | a.center.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.center` [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 looks like you are swapping `a` and `c` manually [INFO] [stderr] --> src/identify.rs:667:13 [INFO] [stderr] | [INFO] [stderr] 667 | / let swap = a; [INFO] [stderr] 668 | | [INFO] [stderr] 669 | | a = c; [INFO] [stderr] 670 | | c = swap; [INFO] [stderr] | |____________________^ help: try: `std::mem::swap(&mut a, &mut c)` [INFO] [stderr] | [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:702:16 [INFO] [stderr] | [INFO] [stderr] 702 | a: a.corners.0[0].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.corners.0[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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:703:16 [INFO] [stderr] | [INFO] [stderr] 703 | b: a.corners.0[1].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.corners.0[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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:706:16 [INFO] [stderr] | [INFO] [stderr] 706 | a: c.corners.0[0].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `c.corners.0[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: using `clone` on a `Copy` type [INFO] [stderr] --> src/identify.rs:707:16 [INFO] [stderr] | [INFO] [stderr] 707 | b: c.corners.0[3].clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `c.corners.0[3]` [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/identify.rs:747:49 [INFO] [stderr] | [INFO] [stderr] 747 | FindLeftmostToLine::new(hd.clone(), score), [INFO] [stderr] | ^^^^^^^^^^ help: try removing the `clone` call: `hd` [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: redundant closure found [INFO] [stderr] --> src/identify.rs:881:29 [INFO] [stderr] | [INFO] [stderr] 881 | let iter = iter.map(|i| Pixel::Origin(i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Pixel::Origin` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: item `identify::ScanResults` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/identify.rs:1109:1 [INFO] [stderr] | [INFO] [stderr] 1109 | / impl ScanResults { [INFO] [stderr] 1110 | | /// Scan QR bitmap from source image [INFO] [stderr] 1111 | | pub fn extract(&self, index: usize) -> Option { [INFO] [stderr] 1112 | | let qr = self.grids.get(index)?; [INFO] [stderr] ... | [INFO] [stderr] 1156 | | } [INFO] [stderr] 1157 | | } [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: slow zero-filling initialization [INFO] [stderr] --> src/pixels.rs:153:9 [INFO] [stderr] | [INFO] [stderr] 152 | let mut row_average: Vec = Vec::with_capacity(w); [INFO] [stderr] | --------------------- help: consider replace allocation with: `vec![0; w]` [INFO] [stderr] 153 | row_average.resize(w, 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::slow_vector_initialization)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/pixels.rs:230:26 [INFO] [stderr] | [INFO] [stderr] 230 | for i in row[(left..(right + 1))].iter_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `(left..=right)` [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/pixels.rs:238:25 [INFO] [stderr] | [INFO] [stderr] 238 | let range = left..(right + 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `left..=right` [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] Finished dev [unoptimized + debuginfo] target(s) in 12.11s [INFO] running `"docker" "inspect" "2bf7af24fd3ebe2f4c2cf894bb5f695ef4d6a4384dccbf888c9c7cc62b22b628"` [INFO] running `"docker" "rm" "-f" "2bf7af24fd3ebe2f4c2cf894bb5f695ef4d6a4384dccbf888c9c7cc62b22b628"` [INFO] [stdout] 2bf7af24fd3ebe2f4c2cf894bb5f695ef4d6a4384dccbf888c9c7cc62b22b628