[INFO] updating cached repository derezzedex/puzzle_solver [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/derezzedex/puzzle_solver [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/derezzedex/puzzle_solver" "work/ex/clippy-test-run/sources/stable/gh/derezzedex/puzzle_solver"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/derezzedex/puzzle_solver'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/derezzedex/puzzle_solver" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/derezzedex/puzzle_solver"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/derezzedex/puzzle_solver'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 12ff182c6baa90371baf565b4980d30c74f7b831 [INFO] sha for GitHub repo derezzedex/puzzle_solver: 12ff182c6baa90371baf565b4980d30c74f7b831 [INFO] validating manifest of derezzedex/puzzle_solver 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 derezzedex/puzzle_solver 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 derezzedex/puzzle_solver [INFO] finished frobbing derezzedex/puzzle_solver [INFO] frobbed toml for derezzedex/puzzle_solver written to work/ex/clippy-test-run/sources/stable/gh/derezzedex/puzzle_solver/Cargo.toml [INFO] started frobbing derezzedex/puzzle_solver [INFO] finished frobbing derezzedex/puzzle_solver [INFO] frobbed toml for derezzedex/puzzle_solver written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/derezzedex/puzzle_solver/Cargo.toml [INFO] crate derezzedex/puzzle_solver 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 derezzedex/puzzle_solver against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/derezzedex/puzzle_solver:/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] e6233d96eed30f358c3452bfd78b71795d2072654df7ade7b2c133938a0a0a0f [INFO] running `"docker" "start" "-a" "e6233d96eed30f358c3452bfd78b71795d2072654df7ade7b2c133938a0a0a0f"` [INFO] [stderr] Checking memchr v2.0.1 [INFO] [stderr] Checking aho-corasick v0.6.4 [INFO] [stderr] Checking regex v0.2.3 [INFO] [stderr] Checking docopt v0.8.1 [INFO] [stderr] Checking puzzle_solver v0.1.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:108:9 [INFO] [stderr] | [INFO] [stderr] 108 | Data {bytes: bytes} [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `bytes` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:108:9 [INFO] [stderr] | [INFO] [stderr] 108 | Data {bytes: bytes} [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `bytes` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:15:15 [INFO] [stderr] | [INFO] [stderr] 15 | const USAGE: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:132:3 [INFO] [stderr] | [INFO] [stderr] 132 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:144:3 [INFO] [stderr] | [INFO] [stderr] 144 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:159:3 [INFO] [stderr] | [INFO] [stderr] 159 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:193:3 [INFO] [stderr] | [INFO] [stderr] 193 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:273:9 [INFO] [stderr] | [INFO] [stderr] 273 | }else{ [INFO] [stderr] | __________________^ [INFO] [stderr] 274 | | if lower{ [INFO] [stderr] 275 | | result.push(lower_alpha.chars().nth(index).unwrap()); [INFO] [stderr] 276 | | } [INFO] [stderr] ... | [INFO] [stderr] 279 | | } [INFO] [stderr] 280 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 273 | }elseif lower{ [INFO] [stderr] 274 | result.push(lower_alpha.chars().nth(index).unwrap()); [INFO] [stderr] 275 | } [INFO] [stderr] 276 | else{ [INFO] [stderr] 277 | result.push(upper_alpha.chars().nth(index).unwrap()); [INFO] [stderr] 278 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/main.rs:308:13 [INFO] [stderr] | [INFO] [stderr] 308 | let r = (33 + ((i+14)%94)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:395:8 [INFO] [stderr] | [INFO] [stderr] 395 | }else{ [INFO] [stderr] | ______________^ [INFO] [stderr] 396 | | if args.cmd_base64{ [INFO] [stderr] 397 | | data = Data::from_str(&Data::from_str(text).to_base64()); [INFO] [stderr] 398 | | }else if args.cmd_hex{ [INFO] [stderr] ... | [INFO] [stderr] 410 | | } [INFO] [stderr] 411 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 395 | }elseif args.cmd_base64{ [INFO] [stderr] 396 | data = Data::from_str(&Data::from_str(text).to_base64()); [INFO] [stderr] 397 | }else if args.cmd_hex{ [INFO] [stderr] 398 | if args.flag_lower{ [INFO] [stderr] 399 | data = Data::from_str(&Data::from_str(text).to_lowerhex()); [INFO] [stderr] 400 | }else{ [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:15:15 [INFO] [stderr] | [INFO] [stderr] 15 | const USAGE: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:132:3 [INFO] [stderr] | [INFO] [stderr] 132 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:144:3 [INFO] [stderr] | [INFO] [stderr] 144 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:159:3 [INFO] [stderr] | [INFO] [stderr] 159 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:193:3 [INFO] [stderr] | [INFO] [stderr] 193 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:273:9 [INFO] [stderr] | [INFO] [stderr] 273 | }else{ [INFO] [stderr] | __________________^ [INFO] [stderr] 274 | | if lower{ [INFO] [stderr] 275 | | result.push(lower_alpha.chars().nth(index).unwrap()); [INFO] [stderr] 276 | | } [INFO] [stderr] ... | [INFO] [stderr] 279 | | } [INFO] [stderr] 280 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 273 | }elseif lower{ [INFO] [stderr] 274 | result.push(lower_alpha.chars().nth(index).unwrap()); [INFO] [stderr] 275 | } [INFO] [stderr] 276 | else{ [INFO] [stderr] 277 | result.push(upper_alpha.chars().nth(index).unwrap()); [INFO] [stderr] 278 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/main.rs:308:13 [INFO] [stderr] | [INFO] [stderr] 308 | let r = (33 + ((i+14)%94)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:395:8 [INFO] [stderr] | [INFO] [stderr] 395 | }else{ [INFO] [stderr] | ______________^ [INFO] [stderr] 396 | | if args.cmd_base64{ [INFO] [stderr] 397 | | data = Data::from_str(&Data::from_str(text).to_base64()); [INFO] [stderr] 398 | | }else if args.cmd_hex{ [INFO] [stderr] ... | [INFO] [stderr] 410 | | } [INFO] [stderr] 411 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 395 | }elseif args.cmd_base64{ [INFO] [stderr] 396 | data = Data::from_str(&Data::from_str(text).to_base64()); [INFO] [stderr] 397 | }else if args.cmd_hex{ [INFO] [stderr] 398 | if args.flag_lower{ [INFO] [stderr] 399 | data = Data::from_str(&Data::from_str(text).to_lowerhex()); [INFO] [stderr] 400 | }else{ [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: value assigned to `result` is never read [INFO] [stderr] --> src/main.rs:415:10 [INFO] [stderr] | [INFO] [stderr] 415 | let mut result = String::new(); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: lint level defined here [INFO] [stderr] --> src/main.rs:414:9 [INFO] [stderr] | [INFO] [stderr] 414 | #[warn(unused_assignments)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `j` [INFO] [stderr] --> src/main.rs:228:8 [INFO] [stderr] | [INFO] [stderr] 228 | let j = string.find(i).unwrap(); [INFO] [stderr] | ^ help: consider using `_j` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:198:10 [INFO] [stderr] | [INFO] [stderr] 198 | let mut separator: usize = 4; [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:254:7 [INFO] [stderr] | [INFO] [stderr] 254 | let mut result = self.to_str(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: method is never used: `rot_self` [INFO] [stderr] --> src/main.rs:253:2 [INFO] [stderr] | [INFO] [stderr] 253 | fn rot_self(&self, rot: usize) -> Self{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `result` is never read [INFO] [stderr] --> src/main.rs:415:10 [INFO] [stderr] | [INFO] [stderr] 415 | let mut result = String::new(); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: lint level defined here [INFO] [stderr] --> src/main.rs:414:9 [INFO] [stderr] | [INFO] [stderr] 414 | #[warn(unused_assignments)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `j` [INFO] [stderr] --> src/main.rs:228:8 [INFO] [stderr] | [INFO] [stderr] 228 | let j = string.find(i).unwrap(); [INFO] [stderr] | ^ help: consider using `_j` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:87:58 [INFO] [stderr] | [INFO] [stderr] 87 | let values: Result, _> = v.split(",").map(|s| s.trim().parse()).collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in &self.bytes.enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:127:13 [INFO] [stderr] | [INFO] [stderr] 127 | for _i in &self.bytes{ [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in &self.bytes.enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | for _i in &self.bytes{ [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in &self.bytes.enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | for _i in &self.bytes{ [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/main.rs:166:14 [INFO] [stderr] | [INFO] [stderr] 166 | let slen = string.clone().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 166 | let slen = &(*string).clone().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 166 | let slen = &str::clone(string).len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/main.rs:174:13 [INFO] [stderr] | [INFO] [stderr] 174 | for i in 0..(slen/separator)+1{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=(slen/separator)` [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: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in &self.bytes.enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:188:13 [INFO] [stderr] | [INFO] [stderr] 188 | for _i in &self.bytes{ [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/main.rs:201:14 [INFO] [stderr] | [INFO] [stderr] 201 | let slen = string.clone().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 201 | let slen = &(*string).clone().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 201 | let slen = &str::clone(string).len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/main.rs:203:13 [INFO] [stderr] | [INFO] [stderr] 203 | for i in 0..(slen/separator)+1{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=(slen/separator)` [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: comparison is useless due to type limits [INFO] [stderr] --> src/main.rs:271:21 [INFO] [stderr] | [INFO] [stderr] 271 | if index > 26 || index < 0{ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_comparisons)] on by default [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/main.rs:271:21 [INFO] [stderr] | [INFO] [stderr] 271 | if index > 26 || index < 0{ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, this comparison is always false [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/main.rs:285:12 [INFO] [stderr] | [INFO] [stderr] 285 | fn to_int(text: &str) -> String{ [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:198:10 [INFO] [stderr] | [INFO] [stderr] 198 | let mut separator: usize = 4; [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/main.rs:303:14 [INFO] [stderr] | [INFO] [stderr] 303 | fn to_rot47(string: &str) -> String{ [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/main.rs:307:7 [INFO] [stderr] | [INFO] [stderr] 307 | if i <= &126u8 && i >= &33u8{ [INFO] [stderr] | ^^^^^------ [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `126u8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/main.rs:307:22 [INFO] [stderr] | [INFO] [stderr] 307 | if i <= &126u8 && i >= &33u8{ [INFO] [stderr] | ^^^^^----- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `33u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/main.rs:320:1 [INFO] [stderr] | [INFO] [stderr] 320 | / fn main(){ [INFO] [stderr] 321 | | [INFO] [stderr] 322 | | let args: Args = Docopt::new(USAGE) [INFO] [stderr] 323 | | .and_then(|d| d.deserialize()) [INFO] [stderr] ... | [INFO] [stderr] 436 | | println!("{}", result); [INFO] [stderr] 437 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:415:2 [INFO] [stderr] | [INFO] [stderr] 415 | let mut result = String::new(); [INFO] [stderr] | _____^ [INFO] [stderr] 416 | | if output_mode == "default"{ [INFO] [stderr] 417 | | result = String::from(data.to_str()); [INFO] [stderr] 418 | | [INFO] [stderr] ... | [INFO] [stderr] 433 | | [INFO] [stderr] 434 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 415 | let result = if output_mode == "default" { String::from(data.to_str()) } else { match output_mode{ [INFO] [stderr] 416 | "reverse" => Data::reverse(&data.to_str()), [INFO] [stderr] 417 | "rot47" => Data::to_rot47(&data.to_str()), [INFO] [stderr] 418 | "toint" => Data::to_int(&data.to_str()), [INFO] [stderr] 419 | "base64" => data.to_base64(), [INFO] [stderr] 420 | "bin" => data.to_binary(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:254:7 [INFO] [stderr] | [INFO] [stderr] 254 | let mut result = self.to_str(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] warning: method is never used: `rot_self` [INFO] [stderr] --> src/main.rs:253:2 [INFO] [stderr] | [INFO] [stderr] 253 | fn rot_self(&self, rot: usize) -> Self{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] error: Could not compile `puzzle_solver`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:87:58 [INFO] [stderr] | [INFO] [stderr] 87 | let values: Result, _> = v.split(",").map(|s| s.trim().parse()).collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in &self.bytes.enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:127:13 [INFO] [stderr] | [INFO] [stderr] 127 | for _i in &self.bytes{ [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in &self.bytes.enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | for _i in &self.bytes{ [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in &self.bytes.enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | for _i in &self.bytes{ [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/main.rs:166:14 [INFO] [stderr] | [INFO] [stderr] 166 | let slen = string.clone().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 166 | let slen = &(*string).clone().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 166 | let slen = &str::clone(string).len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/main.rs:174:13 [INFO] [stderr] | [INFO] [stderr] 174 | for i in 0..(slen/separator)+1{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=(slen/separator)` [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: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in &self.bytes.enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:188:13 [INFO] [stderr] | [INFO] [stderr] 188 | for _i in &self.bytes{ [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/main.rs:201:14 [INFO] [stderr] | [INFO] [stderr] 201 | let slen = string.clone().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 201 | let slen = &(*string).clone().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 201 | let slen = &str::clone(string).len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/main.rs:203:13 [INFO] [stderr] | [INFO] [stderr] 203 | for i in 0..(slen/separator)+1{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=(slen/separator)` [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: comparison is useless due to type limits [INFO] [stderr] --> src/main.rs:271:21 [INFO] [stderr] | [INFO] [stderr] 271 | if index > 26 || index < 0{ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_comparisons)] on by default [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/main.rs:271:21 [INFO] [stderr] | [INFO] [stderr] 271 | if index > 26 || index < 0{ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, this comparison is always false [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/main.rs:285:12 [INFO] [stderr] | [INFO] [stderr] 285 | fn to_int(text: &str) -> String{ [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/main.rs:303:14 [INFO] [stderr] | [INFO] [stderr] 303 | fn to_rot47(string: &str) -> String{ [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/main.rs:307:7 [INFO] [stderr] | [INFO] [stderr] 307 | if i <= &126u8 && i >= &33u8{ [INFO] [stderr] | ^^^^^------ [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `126u8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/main.rs:307:22 [INFO] [stderr] | [INFO] [stderr] 307 | if i <= &126u8 && i >= &33u8{ [INFO] [stderr] | ^^^^^----- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `33u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/main.rs:320:1 [INFO] [stderr] | [INFO] [stderr] 320 | / fn main(){ [INFO] [stderr] 321 | | [INFO] [stderr] 322 | | let args: Args = Docopt::new(USAGE) [INFO] [stderr] 323 | | .and_then(|d| d.deserialize()) [INFO] [stderr] ... | [INFO] [stderr] 436 | | println!("{}", result); [INFO] [stderr] 437 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:415:2 [INFO] [stderr] | [INFO] [stderr] 415 | let mut result = String::new(); [INFO] [stderr] | _____^ [INFO] [stderr] 416 | | if output_mode == "default"{ [INFO] [stderr] 417 | | result = String::from(data.to_str()); [INFO] [stderr] 418 | | [INFO] [stderr] ... | [INFO] [stderr] 433 | | [INFO] [stderr] 434 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 415 | let result = if output_mode == "default" { String::from(data.to_str()) } else { match output_mode{ [INFO] [stderr] 416 | "reverse" => Data::reverse(&data.to_str()), [INFO] [stderr] 417 | "rot47" => Data::to_rot47(&data.to_str()), [INFO] [stderr] 418 | "toint" => Data::to_int(&data.to_str()), [INFO] [stderr] 419 | "base64" => data.to_base64(), [INFO] [stderr] 420 | "bin" => data.to_binary(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `puzzle_solver`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "e6233d96eed30f358c3452bfd78b71795d2072654df7ade7b2c133938a0a0a0f"` [INFO] running `"docker" "rm" "-f" "e6233d96eed30f358c3452bfd78b71795d2072654df7ade7b2c133938a0a0a0f"` [INFO] [stdout] e6233d96eed30f358c3452bfd78b71795d2072654df7ade7b2c133938a0a0a0f