[INFO] updating cached repository MathiasBayon/stegano [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/MathiasBayon/stegano [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/MathiasBayon/stegano" "work/ex/clippy-test-run/sources/stable/gh/MathiasBayon/stegano"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/MathiasBayon/stegano'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/MathiasBayon/stegano" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/MathiasBayon/stegano"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/MathiasBayon/stegano'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] f0328a3a404d84c143d95407fefeb1f7e8d00a7c [INFO] sha for GitHub repo MathiasBayon/stegano: f0328a3a404d84c143d95407fefeb1f7e8d00a7c [INFO] validating manifest of MathiasBayon/stegano 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 MathiasBayon/stegano 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 MathiasBayon/stegano [INFO] finished frobbing MathiasBayon/stegano [INFO] frobbed toml for MathiasBayon/stegano written to work/ex/clippy-test-run/sources/stable/gh/MathiasBayon/stegano/Cargo.toml [INFO] started frobbing MathiasBayon/stegano [INFO] finished frobbing MathiasBayon/stegano [INFO] frobbed toml for MathiasBayon/stegano written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/MathiasBayon/stegano/Cargo.toml [INFO] crate MathiasBayon/stegano 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 MathiasBayon/stegano against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/MathiasBayon/stegano:/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] 7c9795cbd6c2300e25879f1ca151b6ff7c7f917fba0beec5678fc9084e2e67fa [INFO] running `"docker" "start" "-a" "7c9795cbd6c2300e25879f1ca151b6ff7c7f917fba0beec5678fc9084e2e67fa"` [INFO] [stderr] Checking cfg-if v0.1.2 [INFO] [stderr] Checking nodrop v0.1.12 [INFO] [stderr] Checking lazy_static v1.0.0 [INFO] [stderr] Checking memoffset v0.2.1 [INFO] [stderr] Checking scopeguard v0.3.3 [INFO] [stderr] Compiling unicode-xid v0.1.0 [INFO] [stderr] Checking libc v0.2.40 [INFO] [stderr] Compiling rayon-core v1.4.0 [INFO] [stderr] Checking num-traits v0.2.2 [INFO] [stderr] Checking either v1.5.0 [INFO] [stderr] Checking byteorder v1.2.2 [INFO] [stderr] Checking adler32 v1.0.2 [INFO] [stderr] Compiling gcc v0.3.54 [INFO] [stderr] Checking bitflags v1.0.3 [INFO] [stderr] Checking lzw v0.10.0 [INFO] [stderr] Checking color_quant v1.0.0 [INFO] [stderr] Checking scoped_threadpool v0.1.9 [INFO] [stderr] Checking rustc-serialize v0.3.24 [INFO] [stderr] Checking arrayvec v0.4.7 [INFO] [stderr] Checking crossbeam-utils v0.2.2 [INFO] [stderr] Compiling proc-macro2 v0.2.3 [INFO] [stderr] Checking inflate v0.4.2 [INFO] [stderr] Checking deflate v0.7.18 [INFO] [stderr] Checking num_cpus v1.8.0 [INFO] [stderr] Checking rand v0.4.2 [INFO] [stderr] Checking time v0.1.39 [INFO] [stderr] Checking gif v0.10.0 [INFO] [stderr] Checking num-integer v0.1.36 [INFO] [stderr] Checking crossbeam-epoch v0.3.1 [INFO] [stderr] Checking crossbeam-deque v0.2.0 [INFO] [stderr] Checking num-iter v0.1.35 [INFO] [stderr] Checking num-rational v0.1.42 [INFO] [stderr] Checking rand v0.3.22 [INFO] [stderr] Checking png v0.12.0 [INFO] [stderr] Compiling rust-crypto v0.2.36 [INFO] [stderr] Checking rayon v1.0.1 [INFO] [stderr] Compiling quote v0.4.2 [INFO] [stderr] Compiling syn v0.12.15 [INFO] [stderr] Checking jpeg-decoder v0.1.14 [INFO] [stderr] Compiling num-derive v0.2.0 [INFO] [stderr] Checking image v0.19.0 [INFO] [stderr] Checking stegano v1.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/lib/binary.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod binary { [INFO] [stderr] 3 | | [INFO] [stderr] 4 | | extern crate rand; [INFO] [stderr] 5 | | [INFO] [stderr] ... | [INFO] [stderr] 178 | | } [INFO] [stderr] 179 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/lib/cypher.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod cypher { [INFO] [stderr] 3 | | extern crate crypto; [INFO] [stderr] 4 | | [INFO] [stderr] 5 | | use self::crypto::{ [INFO] [stderr] ... | [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/lib/dot_matrix.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod dot_matrix { [INFO] [stderr] 3 | | [INFO] [stderr] 4 | | extern crate image; [INFO] [stderr] 5 | | use self::image::{DynamicImage, GenericImage, ImageError, Pixel}; [INFO] [stderr] ... | [INFO] [stderr] 505 | | } [INFO] [stderr] 506 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/lib/binary.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod binary { [INFO] [stderr] 3 | | [INFO] [stderr] 4 | | extern crate rand; [INFO] [stderr] 5 | | [INFO] [stderr] ... | [INFO] [stderr] 178 | | } [INFO] [stderr] 179 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/lib/cypher.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod cypher { [INFO] [stderr] 3 | | extern crate crypto; [INFO] [stderr] 4 | | [INFO] [stderr] 5 | | use self::crypto::{ [INFO] [stderr] ... | [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/lib/dot_matrix.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod dot_matrix { [INFO] [stderr] 3 | | [INFO] [stderr] 4 | | extern crate image; [INFO] [stderr] 5 | | use self::image::{DynamicImage, GenericImage, ImageError, Pixel}; [INFO] [stderr] ... | [INFO] [stderr] 505 | | } [INFO] [stderr] 506 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/lib/binary.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | / pub fn from_str(bit_str: &str) -> Result { [INFO] [stderr] 30 | | // Slice the string into chars [INFO] [stderr] 31 | | // Map '0' and '1' chars to 0s and 1s [INFO] [stderr] 32 | | // Fold the whole "byte-string" into a number [INFO] [stderr] ... | [INFO] [stderr] 48 | | } [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [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/lib/binary.rs:52:39 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn from_bool_vec(bit_vec: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[bool]` [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lib/binary.rs:62:22 [INFO] [stderr] | [INFO] [stderr] 62 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib/binary.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | / match bit { [INFO] [stderr] 82 | | true => self.value += 1, [INFO] [stderr] 83 | | false => {} [INFO] [stderr] 84 | | } [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if bit { self.value += 1 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib/binary.rs:118:34 [INFO] [stderr] | [INFO] [stderr] 118 | pub fn is_one_byte_char(chr: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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: identical conversion [INFO] [stderr] --> src/lib/binary.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | msg.chars().into_iter().all(|c| is_one_byte_char(&c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `msg.chars()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib/binary.rs:129:9 [INFO] [stderr] | [INFO] [stderr] 129 | / match bool_value { [INFO] [stderr] 130 | | true => 1, [INFO] [stderr] 131 | | false => 0, [INFO] [stderr] 132 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if bool_value { 1 } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [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/lib/binary.rs:137:48 [INFO] [stderr] | [INFO] [stderr] 137 | pub fn convert_byte_vec_to_bit_vec(vector: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Byte]` [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 only used to index `vector`. [INFO] [stderr] --> src/lib/binary.rs:142:18 [INFO] [stderr] | [INFO] [stderr] 142 | for i in 0..vector.len() { [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] 142 | for in &vector { [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib/binary.rs:155:47 [INFO] [stderr] | [INFO] [stderr] 155 | pub fn convert_u8_vec_to_byte_vec(vector: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lib/binary.rs:156:16 [INFO] [stderr] | [INFO] [stderr] 156 | vector.into_iter().map(|&e| Byte::new(e)).collect() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib/cypher.rs:64:17 [INFO] [stderr] | [INFO] [stderr] 64 | / write_buffer [INFO] [stderr] 65 | | .take_read_buffer() [INFO] [stderr] 66 | | .take_remaining() [INFO] [stderr] 67 | | .iter() [INFO] [stderr] 68 | | .map(|&i| i), [INFO] [stderr] | |________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 64 | write_buffer [INFO] [stderr] 65 | .take_read_buffer() [INFO] [stderr] 66 | .take_remaining() [INFO] [stderr] 67 | .iter().cloned(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib/cypher.rs:103:17 [INFO] [stderr] | [INFO] [stderr] 103 | / write_buffer [INFO] [stderr] 104 | | .take_read_buffer() [INFO] [stderr] 105 | | .take_remaining() [INFO] [stderr] 106 | | .iter() [INFO] [stderr] 107 | | .map(|&i| i), [INFO] [stderr] | |________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 103 | write_buffer [INFO] [stderr] 104 | .take_read_buffer() [INFO] [stderr] 105 | .take_remaining() [INFO] [stderr] 106 | .iter().cloned(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `pass_256` [INFO] [stderr] --> src/lib/cypher.rs:133:18 [INFO] [stderr] | [INFO] [stderr] 133 | for i in 0..cmp::min(password.as_bytes().len(), 64) { [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] 133 | for (i, ) in pass_256.iter_mut().enumerate().take(cmp::min(password.as_bytes().len(), 64)) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/lib/cypher.rs:133:18 [INFO] [stderr] | [INFO] [stderr] 133 | for i in 0..cmp::min(password.as_bytes().len(), 64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `pass_256[..cmp::min(password.as_bytes().len(), 64)].clone_from_slice(&password.as_bytes()[..cmp::min(password.as_bytes().len(), 64)])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [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/lib/cypher.rs:149:35 [INFO] [stderr] | [INFO] [stderr] 149 | pub fn simple_decrypt(vector: &Vec, password: &str) -> Result { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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 `pass_256` [INFO] [stderr] --> src/lib/cypher.rs:163:18 [INFO] [stderr] | [INFO] [stderr] 163 | for i in 0..cmp::min(password.as_bytes().len(), 64) { [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] 163 | for (i, ) in pass_256.iter_mut().enumerate().take(cmp::min(password.as_bytes().len(), 64)) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/lib/cypher.rs:163:18 [INFO] [stderr] | [INFO] [stderr] 163 | for i in 0..cmp::min(password.as_bytes().len(), 64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `pass_256[..cmp::min(password.as_bytes().len(), 64)].clone_from_slice(&password.as_bytes()[..cmp::min(password.as_bytes().len(), 64)])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/lib/dot_matrix.rs:100:16 [INFO] [stderr] | [INFO] [stderr] 100 | if bits.len() >= 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!bits.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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lib/dot_matrix.rs:147:17 [INFO] [stderr] | [INFO] [stderr] 147 | / if pixel.to_rgb()[0] % 2 == 0 { [INFO] [stderr] 148 | | false [INFO] [stderr] 149 | | } else { [INFO] [stderr] 150 | | true [INFO] [stderr] 151 | | }, [INFO] [stderr] | |_________________^ help: you can reduce it to: `!(pixel.to_rgb()[0] % 2 == 0)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lib/dot_matrix.rs:152:17 [INFO] [stderr] | [INFO] [stderr] 152 | / if pixel.to_rgb()[1] % 2 == 0 { [INFO] [stderr] 153 | | false [INFO] [stderr] 154 | | } else { [INFO] [stderr] 155 | | true [INFO] [stderr] 156 | | }, [INFO] [stderr] | |_________________^ help: you can reduce it to: `!(pixel.to_rgb()[1] % 2 == 0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lib/dot_matrix.rs:157:17 [INFO] [stderr] | [INFO] [stderr] 157 | / if pixel.to_rgb()[2] % 2 == 0 { [INFO] [stderr] 158 | | false [INFO] [stderr] 159 | | } else { [INFO] [stderr] 160 | | true [INFO] [stderr] 161 | | }, [INFO] [stderr] | |_________________^ help: you can reduce it to: `!(pixel.to_rgb()[2] % 2 == 0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/lib/dot_matrix.rs:221:17 [INFO] [stderr] | [INFO] [stderr] 221 | / match move_cursor_to_next_pixel(&mut x, &mut y, (max_x, max_y)) { [INFO] [stderr] 222 | | Ok(_) => true, [INFO] [stderr] 223 | | Err(_) => false, [INFO] [stderr] 224 | | } [INFO] [stderr] | |_________________^ help: try this: `move_cursor_to_next_pixel(&mut x, &mut y, (max_x, max_y)).is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/lib/dot_matrix.rs:315:17 [INFO] [stderr] | [INFO] [stderr] 315 | / match move_cursor_to_next_pixel(&mut x, &mut y, (max_x, max_y)) { [INFO] [stderr] 316 | | Ok(_) => true, [INFO] [stderr] 317 | | Err(_) => false, [INFO] [stderr] 318 | | } // Error seems to be here ! [INFO] [stderr] | |_________________^ help: try this: `move_cursor_to_next_pixel(&mut x, &mut y, (max_x, max_y)).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/lib/dot_matrix.rs:431:17 [INFO] [stderr] | [INFO] [stderr] 431 | / match move_cursor_to_next_pixel(&mut x, &mut y, (max_x, max_y)) { [INFO] [stderr] 432 | | Ok(_) => true, [INFO] [stderr] 433 | | Err(_) => false, [INFO] [stderr] 434 | | } [INFO] [stderr] | |_________________^ help: try this: `move_cursor_to_next_pixel(&mut x, &mut y, (max_x, max_y)).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib/dot_matrix.rs:475:23 [INFO] [stderr] | [INFO] [stderr] 475 | bool_triplet: &[bool; 3], [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `[bool; 3]` [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 loop variable `i` is only used to index `bool_triplet`. [INFO] [stderr] --> src/lib/dot_matrix.rs:479:18 [INFO] [stderr] | [INFO] [stderr] 479 | for i in n..m + 1 { [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] 479 | for in bool_triplet.iter().take(m + 1).skip(n) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib/dot_matrix.rs:479:18 [INFO] [stderr] | [INFO] [stderr] 479 | for i in n..m + 1 { [INFO] [stderr] | ^^^^^^^^ help: use: `n..=m` [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/main.rs:28:26 [INFO] [stderr] | [INFO] [stderr] 28 | fn main_sub_encode(args: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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/main.rs:66:26 [INFO] [stderr] | [INFO] [stderr] 66 | fn main_sub_decode(args: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/lib/binary.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | / pub fn from_str(bit_str: &str) -> Result { [INFO] [stderr] 30 | | // Slice the string into chars [INFO] [stderr] 31 | | // Map '0' and '1' chars to 0s and 1s [INFO] [stderr] 32 | | // Fold the whole "byte-string" into a number [INFO] [stderr] ... | [INFO] [stderr] 48 | | } [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [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/lib/binary.rs:52:39 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn from_bool_vec(bit_vec: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[bool]` [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lib/binary.rs:62:22 [INFO] [stderr] | [INFO] [stderr] 62 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib/binary.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | / match bit { [INFO] [stderr] 82 | | true => self.value += 1, [INFO] [stderr] 83 | | false => {} [INFO] [stderr] 84 | | } [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if bit { self.value += 1 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib/binary.rs:118:34 [INFO] [stderr] | [INFO] [stderr] 118 | pub fn is_one_byte_char(chr: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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: identical conversion [INFO] [stderr] --> src/lib/binary.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | msg.chars().into_iter().all(|c| is_one_byte_char(&c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `msg.chars()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib/binary.rs:129:9 [INFO] [stderr] | [INFO] [stderr] 129 | / match bool_value { [INFO] [stderr] 130 | | true => 1, [INFO] [stderr] 131 | | false => 0, [INFO] [stderr] 132 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if bool_value { 1 } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [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/lib/binary.rs:137:48 [INFO] [stderr] | [INFO] [stderr] 137 | pub fn convert_byte_vec_to_bit_vec(vector: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Byte]` [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 only used to index `vector`. [INFO] [stderr] --> src/lib/binary.rs:142:18 [INFO] [stderr] | [INFO] [stderr] 142 | for i in 0..vector.len() { [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] 142 | for in &vector { [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib/binary.rs:155:47 [INFO] [stderr] | [INFO] [stderr] 155 | pub fn convert_u8_vec_to_byte_vec(vector: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lib/binary.rs:156:16 [INFO] [stderr] | [INFO] [stderr] 156 | vector.into_iter().map(|&e| Byte::new(e)).collect() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib/cypher.rs:64:17 [INFO] [stderr] | [INFO] [stderr] 64 | / write_buffer [INFO] [stderr] 65 | | .take_read_buffer() [INFO] [stderr] 66 | | .take_remaining() [INFO] [stderr] 67 | | .iter() [INFO] [stderr] 68 | | .map(|&i| i), [INFO] [stderr] | |________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 64 | write_buffer [INFO] [stderr] 65 | .take_read_buffer() [INFO] [stderr] 66 | .take_remaining() [INFO] [stderr] 67 | .iter().cloned(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib/cypher.rs:103:17 [INFO] [stderr] | [INFO] [stderr] 103 | / write_buffer [INFO] [stderr] 104 | | .take_read_buffer() [INFO] [stderr] 105 | | .take_remaining() [INFO] [stderr] 106 | | .iter() [INFO] [stderr] 107 | | .map(|&i| i), [INFO] [stderr] | |________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 103 | write_buffer [INFO] [stderr] 104 | .take_read_buffer() [INFO] [stderr] 105 | .take_remaining() [INFO] [stderr] 106 | .iter().cloned(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `pass_256` [INFO] [stderr] --> src/lib/cypher.rs:133:18 [INFO] [stderr] | [INFO] [stderr] 133 | for i in 0..cmp::min(password.as_bytes().len(), 64) { [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] 133 | for (i, ) in pass_256.iter_mut().enumerate().take(cmp::min(password.as_bytes().len(), 64)) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/lib/cypher.rs:133:18 [INFO] [stderr] | [INFO] [stderr] 133 | for i in 0..cmp::min(password.as_bytes().len(), 64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `pass_256[..cmp::min(password.as_bytes().len(), 64)].clone_from_slice(&password.as_bytes()[..cmp::min(password.as_bytes().len(), 64)])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [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/lib/cypher.rs:149:35 [INFO] [stderr] | [INFO] [stderr] 149 | pub fn simple_decrypt(vector: &Vec, password: &str) -> Result { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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 `pass_256` [INFO] [stderr] --> src/lib/cypher.rs:163:18 [INFO] [stderr] | [INFO] [stderr] 163 | for i in 0..cmp::min(password.as_bytes().len(), 64) { [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] 163 | for (i, ) in pass_256.iter_mut().enumerate().take(cmp::min(password.as_bytes().len(), 64)) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/lib/cypher.rs:163:18 [INFO] [stderr] | [INFO] [stderr] 163 | for i in 0..cmp::min(password.as_bytes().len(), 64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `pass_256[..cmp::min(password.as_bytes().len(), 64)].clone_from_slice(&password.as_bytes()[..cmp::min(password.as_bytes().len(), 64)])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/lib/dot_matrix.rs:100:16 [INFO] [stderr] | [INFO] [stderr] 100 | if bits.len() >= 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!bits.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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lib/dot_matrix.rs:147:17 [INFO] [stderr] | [INFO] [stderr] 147 | / if pixel.to_rgb()[0] % 2 == 0 { [INFO] [stderr] 148 | | false [INFO] [stderr] 149 | | } else { [INFO] [stderr] 150 | | true [INFO] [stderr] 151 | | }, [INFO] [stderr] | |_________________^ help: you can reduce it to: `!(pixel.to_rgb()[0] % 2 == 0)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lib/dot_matrix.rs:152:17 [INFO] [stderr] | [INFO] [stderr] 152 | / if pixel.to_rgb()[1] % 2 == 0 { [INFO] [stderr] 153 | | false [INFO] [stderr] 154 | | } else { [INFO] [stderr] 155 | | true [INFO] [stderr] 156 | | }, [INFO] [stderr] | |_________________^ help: you can reduce it to: `!(pixel.to_rgb()[1] % 2 == 0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lib/dot_matrix.rs:157:17 [INFO] [stderr] | [INFO] [stderr] 157 | / if pixel.to_rgb()[2] % 2 == 0 { [INFO] [stderr] 158 | | false [INFO] [stderr] 159 | | } else { [INFO] [stderr] 160 | | true [INFO] [stderr] 161 | | }, [INFO] [stderr] | |_________________^ help: you can reduce it to: `!(pixel.to_rgb()[2] % 2 == 0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/lib/dot_matrix.rs:221:17 [INFO] [stderr] | [INFO] [stderr] 221 | / match move_cursor_to_next_pixel(&mut x, &mut y, (max_x, max_y)) { [INFO] [stderr] 222 | | Ok(_) => true, [INFO] [stderr] 223 | | Err(_) => false, [INFO] [stderr] 224 | | } [INFO] [stderr] | |_________________^ help: try this: `move_cursor_to_next_pixel(&mut x, &mut y, (max_x, max_y)).is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/lib/dot_matrix.rs:315:17 [INFO] [stderr] | [INFO] [stderr] 315 | / match move_cursor_to_next_pixel(&mut x, &mut y, (max_x, max_y)) { [INFO] [stderr] 316 | | Ok(_) => true, [INFO] [stderr] 317 | | Err(_) => false, [INFO] [stderr] 318 | | } // Error seems to be here ! [INFO] [stderr] | |_________________^ help: try this: `move_cursor_to_next_pixel(&mut x, &mut y, (max_x, max_y)).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/lib/dot_matrix.rs:431:17 [INFO] [stderr] | [INFO] [stderr] 431 | / match move_cursor_to_next_pixel(&mut x, &mut y, (max_x, max_y)) { [INFO] [stderr] 432 | | Ok(_) => true, [INFO] [stderr] 433 | | Err(_) => false, [INFO] [stderr] 434 | | } [INFO] [stderr] | |_________________^ help: try this: `move_cursor_to_next_pixel(&mut x, &mut y, (max_x, max_y)).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib/dot_matrix.rs:475:23 [INFO] [stderr] | [INFO] [stderr] 475 | bool_triplet: &[bool; 3], [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `[bool; 3]` [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 loop variable `i` is only used to index `bool_triplet`. [INFO] [stderr] --> src/lib/dot_matrix.rs:479:18 [INFO] [stderr] | [INFO] [stderr] 479 | for i in n..m + 1 { [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] 479 | for in bool_triplet.iter().take(m + 1).skip(n) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib/dot_matrix.rs:479:18 [INFO] [stderr] | [INFO] [stderr] 479 | for i in n..m + 1 { [INFO] [stderr] | ^^^^^^^^ help: use: `n..=m` [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/lib/dot_matrix.rs:567:24 [INFO] [stderr] | [INFO] [stderr] 567 | file.write_all("Test message within file".as_bytes()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"Test message within file"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/lib/dot_matrix.rs:592:9 [INFO] [stderr] | [INFO] [stderr] 592 | / let _ = image2 [INFO] [stderr] 593 | | .decode_file( [INFO] [stderr] 594 | | "/Users/mathias/Documents/Devs/Rust/stegano/test_files/test2.txt", [INFO] [stderr] 595 | | "Password", [INFO] [stderr] ... | [INFO] [stderr] 599 | | process::exit(1); [INFO] [stderr] 600 | | }); [INFO] [stderr] | |_______________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [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/main.rs:28:26 [INFO] [stderr] | [INFO] [stderr] 28 | fn main_sub_encode(args: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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/main.rs:66:26 [INFO] [stderr] | [INFO] [stderr] 66 | fn main_sub_decode(args: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] Finished dev [optimized + debuginfo] target(s) in 1m 07s [INFO] running `"docker" "inspect" "7c9795cbd6c2300e25879f1ca151b6ff7c7f917fba0beec5678fc9084e2e67fa"` [INFO] running `"docker" "rm" "-f" "7c9795cbd6c2300e25879f1ca151b6ff7c7f917fba0beec5678fc9084e2e67fa"` [INFO] [stdout] 7c9795cbd6c2300e25879f1ca151b6ff7c7f917fba0beec5678fc9084e2e67fa