[INFO] updating cached repository micahflee/cryptopals [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/micahflee/cryptopals [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/micahflee/cryptopals" "work/ex/clippy-test-run/sources/stable/gh/micahflee/cryptopals"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/micahflee/cryptopals'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/micahflee/cryptopals" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/micahflee/cryptopals"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/micahflee/cryptopals'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 57119865e44a180d2c1deb877ebfd305543e563e [INFO] sha for GitHub repo micahflee/cryptopals: 57119865e44a180d2c1deb877ebfd305543e563e [INFO] validating manifest of micahflee/cryptopals 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 micahflee/cryptopals 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 micahflee/cryptopals [INFO] finished frobbing micahflee/cryptopals [INFO] frobbed toml for micahflee/cryptopals written to work/ex/clippy-test-run/sources/stable/gh/micahflee/cryptopals/Cargo.toml [INFO] started frobbing micahflee/cryptopals [INFO] finished frobbing micahflee/cryptopals [INFO] frobbed toml for micahflee/cryptopals written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/micahflee/cryptopals/Cargo.toml [INFO] crate micahflee/cryptopals 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 micahflee/cryptopals against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/micahflee/cryptopals:/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] e37ec5644472adcf95f47fadd9d1b1b78e10ce6e07869bfb9f2899775a67fdca [INFO] running `"docker" "start" "-a" "e37ec5644472adcf95f47fadd9d1b1b78e10ce6e07869bfb9f2899775a67fdca"` [INFO] [stderr] Checking rand_core v0.1.0-pre.0 [INFO] [stderr] Checking hamming v0.1.3 [INFO] [stderr] Checking hex v0.3.1 [INFO] [stderr] Checking serde_json v1.0.13 [INFO] [stderr] Checking clap v2.31.2 [INFO] [stderr] Checking rust-crypto v0.2.36 [INFO] [stderr] Checking rand v0.5.0-pre.0 [INFO] [stderr] Checking queryst v2.0.0 [INFO] [stderr] Checking cryptopals v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/set2.rs:132:14 [INFO] [stderr] | [INFO] [stderr] 132 | else { [INFO] [stderr] | ______________^ [INFO] [stderr] 133 | | if ciphertext.len() > last_ciphertext_len { [INFO] [stderr] 134 | | blocksize = ciphertext.len() - last_ciphertext_len; [INFO] [stderr] 135 | | break; [INFO] [stderr] ... | [INFO] [stderr] 138 | | } [INFO] [stderr] 139 | | } [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] 132 | else if ciphertext.len() > last_ciphertext_len { [INFO] [stderr] 133 | blocksize = ciphertext.len() - last_ciphertext_len; [INFO] [stderr] 134 | break; [INFO] [stderr] 135 | } else { [INFO] [stderr] 136 | last_ciphertext_len = ciphertext.len(); [INFO] [stderr] 137 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/set2.rs:661:5 [INFO] [stderr] | [INFO] [stderr] 661 | return len1 != len2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `len1 != len2` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/set2.rs:132:14 [INFO] [stderr] | [INFO] [stderr] 132 | else { [INFO] [stderr] | ______________^ [INFO] [stderr] 133 | | if ciphertext.len() > last_ciphertext_len { [INFO] [stderr] 134 | | blocksize = ciphertext.len() - last_ciphertext_len; [INFO] [stderr] 135 | | break; [INFO] [stderr] ... | [INFO] [stderr] 138 | | } [INFO] [stderr] 139 | | } [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] 132 | else if ciphertext.len() > last_ciphertext_len { [INFO] [stderr] 133 | blocksize = ciphertext.len() - last_ciphertext_len; [INFO] [stderr] 134 | break; [INFO] [stderr] 135 | } else { [INFO] [stderr] 136 | last_ciphertext_len = ciphertext.len(); [INFO] [stderr] 137 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/set2.rs:661:5 [INFO] [stderr] | [INFO] [stderr] 661 | return len1 != len2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `len1 != len2` [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: the variable `count` is used as a loop counter. Consider using `for (count, item) in &scores_vec.enumerate()` or similar iterators [INFO] [stderr] --> src/set1.rs:105:16 [INFO] [stderr] | [INFO] [stderr] 105 | for val in &scores_vec { [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/set1.rs:107:9 [INFO] [stderr] | [INFO] [stderr] 107 | / match str::from_utf8(&plaintext_bytes) { [INFO] [stderr] 108 | | Ok(plaintext_string) => { [INFO] [stderr] 109 | | println!("{}: {:?}", val.1, plaintext_string); [INFO] [stderr] 110 | | }, [INFO] [stderr] 111 | | Err(_) => {} [INFO] [stderr] 112 | | }; [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] 107 | if let Ok(plaintext_string) = str::from_utf8(&plaintext_bytes) { [INFO] [stderr] 108 | println!("{}: {:?}", val.1, plaintext_string); [INFO] [stderr] 109 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set1.rs:151:15 [INFO] [stderr] | [INFO] [stderr] 151 | let key = "ICE".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"ICE"` [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set1.rs:241:15 [INFO] [stderr] | [INFO] [stderr] 241 | let key = "YELLOW SUBMARINE".as_bytes(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"YELLOW SUBMARINE"` [INFO] [stderr] | [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: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set1.rs:252:13 [INFO] [stderr] | [INFO] [stderr] 252 | Err(_) => panic!("Error decrypting AES-128-ECB") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set1.rs:254:26 [INFO] [stderr] | [INFO] [stderr] 254 | plaintext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [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] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set1.rs:401:38 [INFO] [stderr] | [INFO] [stderr] 401 | let score1 = score_plaintext("the quick brown fox jumped over the crazy dog".as_bytes().to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"the quick brown fox jumped over the crazy dog"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set1.rs:417:13 [INFO] [stderr] | [INFO] [stderr] 417 | "this is a test".as_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"this is a test"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set1.rs:418:13 [INFO] [stderr] | [INFO] [stderr] 418 | "wokka wokka!!!".as_bytes() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"wokka wokka!!!"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:48:21 [INFO] [stderr] | [INFO] [stderr] 48 | let mut block = "YELLOW SUBMARINE".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"YELLOW SUBMARINE"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:58:15 [INFO] [stderr] | [INFO] [stderr] 58 | let key = "YELLOW SUBMARINE".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"YELLOW SUBMARINE"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:96:44 [INFO] [stderr] | [INFO] [stderr] 96 | let ciphertext = encryption_oracle("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".as_bytes().to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"` [INFO] [stderr] | [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:121:28 [INFO] [stderr] | [INFO] [stderr] 121 | let mut message = vec!['A' as u8]; [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'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:142:22 [INFO] [stderr] | [INFO] [stderr] 142 | message.push('A' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:149:22 [INFO] [stderr] | [INFO] [stderr] 149 | message.push('A' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:191:26 [INFO] [stderr] | [INFO] [stderr] 191 | message.push('A' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:342:22 [INFO] [stderr] | [INFO] [stderr] 342 | message.push('A' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:351:22 [INFO] [stderr] | [INFO] [stderr] 351 | message.push('A' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:359:29 [INFO] [stderr] | [INFO] [stderr] 359 | message_prefix.push('B' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'B' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:381:26 [INFO] [stderr] | [INFO] [stderr] 381 | message.push('A' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:476:12 [INFO] [stderr] | [INFO] [stderr] 476 | Ok("ICE ICE BABY".as_bytes().to_vec()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"ICE ICE BABY"` [INFO] [stderr] | [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: function is never used: `blocks_into_bytes` [INFO] [stderr] --> src/utils.rs:59:1 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn blocks_into_bytes(blocks: Vec>) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/set2.rs:513:5 [INFO] [stderr] | [INFO] [stderr] 513 | ciphertext[36] = ciphertext[36] ^ 2; // 2 == 0b10 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ciphertext[36] ^= 2` [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: manual implementation of an assign operation [INFO] [stderr] --> src/set2.rs:514:5 [INFO] [stderr] | [INFO] [stderr] 514 | ciphertext[42] = ciphertext[42] ^ 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ciphertext[42] ^= 2` [INFO] [stderr] | [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: manual implementation of an assign operation [INFO] [stderr] --> src/set2.rs:515:5 [INFO] [stderr] | [INFO] [stderr] 515 | ciphertext[47] = ciphertext[47] ^ 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ciphertext[47] ^= 2` [INFO] [stderr] | [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: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set2.rs:537:13 [INFO] [stderr] | [INFO] [stderr] 537 | Err(_) => panic!("Error decrypting AES-128-ECB") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set2.rs:539:26 [INFO] [stderr] | [INFO] [stderr] 539 | plaintext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set2.rs:587:13 [INFO] [stderr] | [INFO] [stderr] 587 | Err(_) => panic!("Error encrypting") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set2.rs:589:27 [INFO] [stderr] | [INFO] [stderr] 589 | ciphertext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set2.rs:626:13 [INFO] [stderr] | [INFO] [stderr] 626 | Err(_) => panic!("Error encrypting") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set2.rs:628:27 [INFO] [stderr] | [INFO] [stderr] 628 | ciphertext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set2.rs:697:13 [INFO] [stderr] | [INFO] [stderr] 697 | Err(_) => panic!("Error encrypting") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set2.rs:699:27 [INFO] [stderr] | [INFO] [stderr] 699 | ciphertext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set2.rs:719:13 [INFO] [stderr] | [INFO] [stderr] 719 | Err(_) => panic!("Error decrypting") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set2.rs:721:26 [INFO] [stderr] | [INFO] [stderr] 721 | plaintext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:743:27 [INFO] [stderr] | [INFO] [stderr] 743 | plaintext.append(&mut "comment1=cooking%20MCs;userdata=".as_bytes().to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"comment1=cooking%20MCs;userdata="` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:745:27 [INFO] [stderr] | [INFO] [stderr] 745 | plaintext.append(&mut ";comment2=%20like%20a%20pound%20of%20bacon".as_bytes().to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b";comment2=%20like%20a%20pound%20of%20bacon"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:757:18 [INFO] [stderr] | [INFO] [stderr] 757 | let search = ";admin=true;".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b";admin=true;"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:773:19 [INFO] [stderr] | [INFO] [stderr] 773 | let key = "YELLOW SUBMARINE".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"YELLOW SUBMARINE"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:781:25 [INFO] [stderr] | [INFO] [stderr] 781 | let plaintext = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"` [INFO] [stderr] | [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: the variable `count` is used as a loop counter. Consider using `for (count, item) in &scores_vec.enumerate()` or similar iterators [INFO] [stderr] --> src/set1.rs:105:16 [INFO] [stderr] | [INFO] [stderr] 105 | for val in &scores_vec { [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: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set2.rs:794:17 [INFO] [stderr] | [INFO] [stderr] 794 | Err(_) => panic!("Error encrypting") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/set1.rs:107:9 [INFO] [stderr] | [INFO] [stderr] 107 | / match str::from_utf8(&plaintext_bytes) { [INFO] [stderr] 108 | | Ok(plaintext_string) => { [INFO] [stderr] 109 | | println!("{}: {:?}", val.1, plaintext_string); [INFO] [stderr] 110 | | }, [INFO] [stderr] 111 | | Err(_) => {} [INFO] [stderr] 112 | | }; [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] 107 | if let Ok(plaintext_string) = str::from_utf8(&plaintext_bytes) { [INFO] [stderr] 108 | println!("{}: {:?}", val.1, plaintext_string); [INFO] [stderr] 109 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set2.rs:796:35 [INFO] [stderr] | [INFO] [stderr] 796 | ecb_ciphertext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set2.rs:814:17 [INFO] [stderr] | [INFO] [stderr] 814 | Err(_) => panic!("Error encrypting") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set2.rs:816:35 [INFO] [stderr] | [INFO] [stderr] 816 | cbc_ciphertext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/set3.rs:55:20 [INFO] [stderr] | [INFO] [stderr] 55 | for block_i in 1..(blocks.len() + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `1..=blocks.len()` [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] error: this loop never actually loops [INFO] [stderr] --> src/set3.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | / for block_i in 1..(blocks.len() + 1) { [INFO] [stderr] 56 | | println!("ciphertext has {} blocks, working on block index {}", blocks.len(), blocks.len() - block_i); [INFO] [stderr] 57 | | [INFO] [stderr] 58 | | // Start building the malicious ciphertext, which is block 0 to block_i [INFO] [stderr] ... | [INFO] [stderr] 88 | | break; [INFO] [stderr] 89 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `blocks`. [INFO] [stderr] --> src/set3.rs:60:18 [INFO] [stderr] | [INFO] [stderr] 60 | for i in 0..(block_i + 1) { [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] 60 | for in blocks.iter().take((block_i + 1)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/set3.rs:60:18 [INFO] [stderr] | [INFO] [stderr] 60 | for i in 0..(block_i + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `0..=block_i` [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set1.rs:151:15 [INFO] [stderr] | [INFO] [stderr] 151 | let key = "ICE".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"ICE"` [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: an inclusive range would be more readable [INFO] [stderr] --> src/set3.rs:69:23 [INFO] [stderr] | [INFO] [stderr] 69 | for char_i in 1..(block_size + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `1..=block_size` [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] error: this loop never actually loops [INFO] [stderr] --> src/set3.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | / for char_i in 1..(block_size + 1) { [INFO] [stderr] 70 | | // Guess bytes starting at the end [INFO] [stderr] 71 | | for guess in 0..255 { [INFO] [stderr] 72 | | // Set the byte that we're guessing, and build a new malicious ciphertext [INFO] [stderr] ... | [INFO] [stderr] 86 | | break; [INFO] [stderr] 87 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [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/utils.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | / match file.read_to_string(&mut s) { [INFO] [stderr] 32 | | Err(why) => return Err(format!("couldn't read {}: {}", display, why.description())), [INFO] [stderr] 33 | | Ok(_) => {}, [INFO] [stderr] 34 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(why) = file.read_to_string(&mut s) { return Err(format!("couldn't read {}: {}", display, why.description())) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/utils.rs:50:16 [INFO] [stderr] | [INFO] [stderr] 50 | if block.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!block.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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set1.rs:241:15 [INFO] [stderr] | [INFO] [stderr] 241 | let key = "YELLOW SUBMARINE".as_bytes(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"YELLOW SUBMARINE"` [INFO] [stderr] | [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/utils.rs:140:27 [INFO] [stderr] | [INFO] [stderr] 140 | ciphertext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set1.rs:252:13 [INFO] [stderr] | [INFO] [stderr] 252 | Err(_) => panic!("Error decrypting AES-128-ECB") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set1.rs:254:26 [INFO] [stderr] | [INFO] [stderr] 254 | plaintext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [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] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/utils.rs:165:26 [INFO] [stderr] | [INFO] [stderr] 165 | plaintext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:231:21 [INFO] [stderr] | [INFO] [stderr] 231 | let bytes = "AAAABBBBCCCCDD".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"AAAABBBBCCCCDD"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:236:17 [INFO] [stderr] | [INFO] [stderr] 236 | "AAAA".as_bytes().to_vec(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"AAAA"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:237:17 [INFO] [stderr] | [INFO] [stderr] 237 | "BBBB".as_bytes().to_vec(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"BBBB"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:238:17 [INFO] [stderr] | [INFO] [stderr] 238 | "CCCC".as_bytes().to_vec(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"CCCC"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:239:17 [INFO] [stderr] | [INFO] [stderr] 239 | "DD".as_bytes().to_vec() [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"DD"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:246:25 [INFO] [stderr] | [INFO] [stderr] 246 | let mut block = "YELLOW SUBMARINE".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"YELLOW SUBMARINE"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:261:24 [INFO] [stderr] | [INFO] [stderr] 261 | let haystack = "the quick brown fox jumps over the lazy dog".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"the quick brown fox jumps over the lazy dog"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:262:51 [INFO] [stderr] | [INFO] [stderr] 262 | assert_eq!(vec_contains(haystack.clone(), "brown fox".as_bytes().to_vec()), true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"brown fox"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:263:51 [INFO] [stderr] | [INFO] [stderr] 263 | assert_eq!(vec_contains(haystack.clone(), "blue fox".as_bytes().to_vec()), false); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"blue fox"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:48:21 [INFO] [stderr] | [INFO] [stderr] 48 | let mut block = "YELLOW SUBMARINE".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"YELLOW SUBMARINE"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:280:25 [INFO] [stderr] | [INFO] [stderr] 280 | let plaintext = "It uses hand-drawn stick figure graphics and writing characterized by surreal humor, word play, parody and references to popular culture. In KoL, a player's character fights monsters for experience, and acquiring meat (the game's currency), and/or items, through a turn-based system. Players may also interact with each other through player versus player competition, participate in the in-game economy by trading goods and services, organize their characters into clans, work together to complete clan dungeons, and speak to each other in many different chat channels.".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"It uses hand-drawn stick figure graphics and writing characterized by surreal humor, word play, parody and references to popular culture. In KoL, a player's character fights monsters for experience, and acquiring meat (the game's currency), and/or items, through a turn-based system. Players may also interact with each other through player versus player competition, participate in the in-game economy by trading goods and services, organize their characters into clans, work together to complete clan dungeons, and speak to each other in many different chat channels."` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:295:16 [INFO] [stderr] | [INFO] [stderr] 295 | Ok("ICE ICE BABY".as_bytes().to_vec()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"ICE ICE BABY"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:314:13 [INFO] [stderr] | [INFO] [stderr] 314 | "AAAA".as_bytes().to_vec(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"AAAA"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:315:13 [INFO] [stderr] | [INFO] [stderr] 315 | "BBBB".as_bytes().to_vec(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"BBBB"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:316:13 [INFO] [stderr] | [INFO] [stderr] 316 | "CCCC".as_bytes().to_vec(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"CCCC"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:317:13 [INFO] [stderr] | [INFO] [stderr] 317 | "DD".as_bytes().to_vec() [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"DD"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/utils.rs:322:13 [INFO] [stderr] | [INFO] [stderr] 322 | "AAAABBBBCCCCDD".as_bytes().to_vec() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"AAAABBBBCCCCDD"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:58:15 [INFO] [stderr] | [INFO] [stderr] 58 | let key = "YELLOW SUBMARINE".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"YELLOW SUBMARINE"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:96:44 [INFO] [stderr] | [INFO] [stderr] 96 | let ciphertext = encryption_oracle("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".as_bytes().to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"` [INFO] [stderr] | [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] error: aborting due to 2 previous errors [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/set2.rs:121:28 [INFO] [stderr] | [INFO] [stderr] 121 | let mut message = vec!['A' as u8]; [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'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:142:22 [INFO] [stderr] | [INFO] [stderr] 142 | message.push('A' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:149:22 [INFO] [stderr] | [INFO] [stderr] 149 | message.push('A' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:191:26 [INFO] [stderr] | [INFO] [stderr] 191 | message.push('A' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] error: Could not compile `cryptopals`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [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/set2.rs:342:22 [INFO] [stderr] | [INFO] [stderr] 342 | message.push('A' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:351:22 [INFO] [stderr] | [INFO] [stderr] 351 | message.push('A' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:359:29 [INFO] [stderr] | [INFO] [stderr] 359 | message_prefix.push('B' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'B' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/set2.rs:381:26 [INFO] [stderr] | [INFO] [stderr] 381 | message.push('A' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:476:12 [INFO] [stderr] | [INFO] [stderr] 476 | Ok("ICE ICE BABY".as_bytes().to_vec()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"ICE ICE BABY"` [INFO] [stderr] | [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: manual implementation of an assign operation [INFO] [stderr] --> src/set2.rs:513:5 [INFO] [stderr] | [INFO] [stderr] 513 | ciphertext[36] = ciphertext[36] ^ 2; // 2 == 0b10 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ciphertext[36] ^= 2` [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: manual implementation of an assign operation [INFO] [stderr] --> src/set2.rs:514:5 [INFO] [stderr] | [INFO] [stderr] 514 | ciphertext[42] = ciphertext[42] ^ 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ciphertext[42] ^= 2` [INFO] [stderr] | [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: manual implementation of an assign operation [INFO] [stderr] --> src/set2.rs:515:5 [INFO] [stderr] | [INFO] [stderr] 515 | ciphertext[47] = ciphertext[47] ^ 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ciphertext[47] ^= 2` [INFO] [stderr] | [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: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set2.rs:537:13 [INFO] [stderr] | [INFO] [stderr] 537 | Err(_) => panic!("Error decrypting AES-128-ECB") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set2.rs:539:26 [INFO] [stderr] | [INFO] [stderr] 539 | plaintext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set2.rs:587:13 [INFO] [stderr] | [INFO] [stderr] 587 | Err(_) => panic!("Error encrypting") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set2.rs:589:27 [INFO] [stderr] | [INFO] [stderr] 589 | ciphertext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set2.rs:626:13 [INFO] [stderr] | [INFO] [stderr] 626 | Err(_) => panic!("Error encrypting") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set2.rs:628:27 [INFO] [stderr] | [INFO] [stderr] 628 | ciphertext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set2.rs:697:13 [INFO] [stderr] | [INFO] [stderr] 697 | Err(_) => panic!("Error encrypting") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set2.rs:699:27 [INFO] [stderr] | [INFO] [stderr] 699 | ciphertext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/set2.rs:719:13 [INFO] [stderr] | [INFO] [stderr] 719 | Err(_) => panic!("Error decrypting") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/set2.rs:721:26 [INFO] [stderr] | [INFO] [stderr] 721 | plaintext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:743:27 [INFO] [stderr] | [INFO] [stderr] 743 | plaintext.append(&mut "comment1=cooking%20MCs;userdata=".as_bytes().to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"comment1=cooking%20MCs;userdata="` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:745:27 [INFO] [stderr] | [INFO] [stderr] 745 | plaintext.append(&mut ";comment2=%20like%20a%20pound%20of%20bacon".as_bytes().to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b";comment2=%20like%20a%20pound%20of%20bacon"` [INFO] [stderr] | [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/set2.rs:757:18 [INFO] [stderr] | [INFO] [stderr] 757 | let search = ";admin=true;".as_bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b";admin=true;"` [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/set3.rs:55:20 [INFO] [stderr] | [INFO] [stderr] 55 | for block_i in 1..(blocks.len() + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `1..=blocks.len()` [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] error: this loop never actually loops [INFO] [stderr] --> src/set3.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | / for block_i in 1..(blocks.len() + 1) { [INFO] [stderr] 56 | | println!("ciphertext has {} blocks, working on block index {}", blocks.len(), blocks.len() - block_i); [INFO] [stderr] 57 | | [INFO] [stderr] 58 | | // Start building the malicious ciphertext, which is block 0 to block_i [INFO] [stderr] ... | [INFO] [stderr] 88 | | break; [INFO] [stderr] 89 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `blocks`. [INFO] [stderr] --> src/set3.rs:60:18 [INFO] [stderr] | [INFO] [stderr] 60 | for i in 0..(block_i + 1) { [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] 60 | for in blocks.iter().take((block_i + 1)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/set3.rs:60:18 [INFO] [stderr] | [INFO] [stderr] 60 | for i in 0..(block_i + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `0..=block_i` [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/set3.rs:69:23 [INFO] [stderr] | [INFO] [stderr] 69 | for char_i in 1..(block_size + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `1..=block_size` [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] error: this loop never actually loops [INFO] [stderr] --> src/set3.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | / for char_i in 1..(block_size + 1) { [INFO] [stderr] 70 | | // Guess bytes starting at the end [INFO] [stderr] 71 | | for guess in 0..255 { [INFO] [stderr] 72 | | // Set the byte that we're guessing, and build a new malicious ciphertext [INFO] [stderr] ... | [INFO] [stderr] 86 | | break; [INFO] [stderr] 87 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [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/utils.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | / match file.read_to_string(&mut s) { [INFO] [stderr] 32 | | Err(why) => return Err(format!("couldn't read {}: {}", display, why.description())), [INFO] [stderr] 33 | | Ok(_) => {}, [INFO] [stderr] 34 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(why) = file.read_to_string(&mut s) { return Err(format!("couldn't read {}: {}", display, why.description())) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/utils.rs:50:16 [INFO] [stderr] | [INFO] [stderr] 50 | if block.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!block.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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/utils.rs:140:27 [INFO] [stderr] | [INFO] [stderr] 140 | ciphertext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/utils.rs:165:26 [INFO] [stderr] | [INFO] [stderr] 165 | plaintext.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `write_buffer.take_read_buffer().take_remaining().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `cryptopals`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "e37ec5644472adcf95f47fadd9d1b1b78e10ce6e07869bfb9f2899775a67fdca"` [INFO] running `"docker" "rm" "-f" "e37ec5644472adcf95f47fadd9d1b1b78e10ce6e07869bfb9f2899775a67fdca"` [INFO] [stdout] e37ec5644472adcf95f47fadd9d1b1b78e10ce6e07869bfb9f2899775a67fdca