[INFO] fetching crate cifra 0.9.3+post3... [INFO] testing cifra-0.9.3+post3 against try#8de4c7234dd9b97c9d76b58671343fdbbc9a433e+target=x86_64-unknown-linux-musl for musl_upgrade_1_2_5_with_libc_patch_0 [INFO] extracting crate cifra 0.9.3+post3 into /workspace/builds/worker-0-tc1/source [INFO] started tweaking crates.io crate cifra 0.9.3+post3 [INFO] finished tweaking crates.io crate cifra 0.9.3+post3 [INFO] tweaked toml for crates.io crate cifra 0.9.3+post3 written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate cifra 0.9.3+post3 on toolchain 8de4c7234dd9b97c9d76b58671343fdbbc9a433e [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate cifra 0.9.3+post3 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded test_common v1.4.0 [INFO] [stderr] Downloaded clap v3.0.0-rc.5 [INFO] [stderr] Downloaded rstest v0.6.4 [INFO] [stderr] Downloaded ring v0.14.6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 003958e8ab0bbf0bdee31c8eba0a5c044688d9be12b5edb363e2dc1c417d0ad4 [INFO] running `Command { std: "docker" "start" "-a" "003958e8ab0bbf0bdee31c8eba0a5c044688d9be12b5edb363e2dc1c417d0ad4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "003958e8ab0bbf0bdee31c8eba0a5c044688d9be12b5edb363e2dc1c417d0ad4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "003958e8ab0bbf0bdee31c8eba0a5c044688d9be12b5edb363e2dc1c417d0ad4", kill_on_drop: false }` [INFO] [stdout] 003958e8ab0bbf0bdee31c8eba0a5c044688d9be12b5edb363e2dc1c417d0ad4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "build" "--frozen" "--message-format=json" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] 9d9c31c396c0592ef06e4198e760a538b70abe0779f2a3e5830168ddffbb1524 [INFO] running `Command { std: "docker" "start" "-a" "9d9c31c396c0592ef06e4198e760a538b70abe0779f2a3e5830168ddffbb1524", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.0.1 [INFO] [stderr] Compiling libc v0.2.112 [INFO] [stderr] Compiling proc-macro2 v1.0.34 [INFO] [stderr] Compiling pkg-config v0.3.24 [INFO] [stderr] Compiling unicode-xid v0.2.2 [INFO] [stderr] Compiling syn v1.0.82 [INFO] [stderr] Compiling memchr v2.4.1 [INFO] [stderr] Compiling crossbeam-utils v0.8.5 [INFO] [stderr] Compiling crossbeam-epoch v0.9.5 [INFO] [stderr] Compiling scopeguard v1.1.0 [INFO] [stderr] Compiling cc v1.0.72 [INFO] [stderr] Compiling byteorder v1.4.3 [INFO] [stderr] Compiling memoffset v0.6.5 [INFO] [stderr] Compiling miniz_oxide v0.4.4 [INFO] [stderr] Compiling rayon-core v1.9.1 [INFO] [stderr] Compiling libsqlite3-sys v0.22.2 [INFO] [stderr] Compiling indexmap v1.7.0 [INFO] [stderr] Compiling getrandom v0.1.16 [INFO] [stderr] Compiling quote v1.0.10 [INFO] [stderr] Compiling gimli v0.26.1 [INFO] [stderr] Compiling version_check v0.9.3 [INFO] [stderr] Compiling crossbeam-deque v0.8.1 [INFO] [stderr] Compiling rand_core v0.5.1 [INFO] [stderr] Compiling num_cpus v1.13.0 [INFO] [stderr] Compiling object v0.27.1 [INFO] [stderr] Compiling crossbeam-channel v0.5.1 [INFO] [stderr] Compiling error-chain v0.12.4 [INFO] [stderr] Compiling rayon v1.5.1 [INFO] [stderr] Compiling unicode-segmentation v1.8.0 [INFO] [stderr] Compiling rustc-demangle v0.1.21 [INFO] [stderr] Compiling backtrace v0.3.63 [INFO] [stderr] Compiling hashbrown v0.11.2 [INFO] [stderr] Compiling ppv-lite86 v0.2.15 [INFO] [stderr] Compiling heck v0.3.3 [INFO] [stderr] Compiling atty v0.2.14 [INFO] [stderr] Compiling dirs-sys v0.3.6 [INFO] [stderr] Compiling aho-corasick v0.7.18 [INFO] [stderr] Compiling rand_chacha v0.2.2 [INFO] [stderr] Compiling os_str_bytes v6.0.0 [INFO] [stderr] Compiling addr2line v0.17.0 [INFO] [stderr] Compiling termcolor v1.1.2 [INFO] [stderr] Compiling either v1.6.1 [INFO] [stderr] Compiling regex-syntax v0.6.25 [INFO] [stderr] Compiling textwrap v0.14.2 [INFO] [stderr] Compiling rand v0.7.3 [INFO] [stderr] Compiling clap v3.0.0-rc.5 [INFO] [stderr] Compiling dirs v4.0.0 [INFO] [stderr] Compiling strum v0.21.0 [INFO] [stderr] Compiling dotenv v0.15.0 [INFO] [stderr] Compiling linked-hash-map v0.5.4 [INFO] [stderr] Compiling regex v1.5.4 [INFO] [stderr] Compiling diesel_derives v1.4.1 [INFO] [stderr] Compiling strum_macros v0.21.1 [INFO] [stderr] Compiling diesel v1.4.8 [INFO] [stderr] Compiling migrations_internals v1.4.1 [INFO] [stderr] Compiling migrations_macros v1.4.2 [INFO] [stderr] Compiling diesel_migrations v1.4.0 [INFO] [stderr] Compiling cifra v0.9.3+post3 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `OsStr` [INFO] [stdout] --> src/attack/database.rs:6:16 [INFO] [stdout] | [INFO] [stdout] 6 | use std::ffi::{OsStr, OsString}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Error` [INFO] [stdout] --> src/attack/database.rs:11:43 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::{ErrorKind, Result, ResultExt, Error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `DATABASE_STANDARD_PATH` should have an upper camel case name [INFO] [stdout] --> src/attack/database.rs:31:8 [INFO] [stdout] | [INFO] [stdout] 31 | struct DATABASE_STANDARD_PATH; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DatabaseStandardPath` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `cipher` [INFO] [stdout] --> src/attack/frequency.rs:5:48 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::cipher::vigenere::{DEFAULT_CHARSET, cipher, decipher}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Error` and `ResultExt` [INFO] [stdout] --> src/cipher/substitution.rs:2:32 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::{ErrorKind, Result, ResultExt, Error}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `has_error_description_deprecated` [INFO] [stdout] --> src/lib.rs:22:1 [INFO] [stdout] | [INFO] [stdout] 22 | / error_chain! { [INFO] [stdout] 23 | | types { [INFO] [stdout] 24 | | Error, ErrorKind, ResultExt, Result; [INFO] [stdout] ... | [INFO] [stdout] 80 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `docsrs`, `feature`, and `test` and 31 more [INFO] [stdout] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `impl_error_chain_processed` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the macro `impl_error_chain_processed` may come from an old version of the `error_chain` crate, try updating your dependency with `cargo update -p error_chain` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `E` [INFO] [stdout] --> src/attack/simple_attacks.rs:165:25 [INFO] [stdout] | [INFO] [stdout] 165 | Err(E) => return None [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_E` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/attack/frequency.rs:126:28 [INFO] [stdout] | [INFO] [stdout] 126 | .filter(|(&key, &_value)| _value == *value) [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/attack/frequency.rs:157:25 [INFO] [stdout] | [INFO] [stdout] 157 | .map(|(key, value)| key) [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/attack/frequency.rs:164:25 [INFO] [stdout] | [INFO] [stdout] 164 | .map(|(key, value)| key) [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `char` [INFO] [stdout] --> src/attack/frequency.rs:256:13 [INFO] [stdout] | [INFO] [stdout] 256 | for (i, char) in char_string.chars().enumerate() { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_char` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/frequency.rs:269:28 [INFO] [stdout] | [INFO] [stdout] 269 | let mut values = sequences.get_mut(sequence_to_find).unwrap(); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/attack/frequency.rs:383:21 [INFO] [stdout] | [INFO] [stdout] 383 | .map(|(key, value)| key) [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ciphered_text` [INFO] [stdout] --> src/attack/vigenere.rs:36:26 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn brute_force(ciphered_text: T, charset: U, testing: bool)-> Result [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ciphered_text` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `charset` [INFO] [stdout] --> src/attack/vigenere.rs:36:44 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn brute_force(ciphered_text: T, charset: U, testing: bool)-> Result [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_charset` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `testing` [INFO] [stdout] --> src/attack/vigenere.rs:36:56 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn brute_force(ciphered_text: T, charset: U, testing: bool)-> Result [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_testing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ciphered_text` [INFO] [stdout] --> src/attack/vigenere.rs:47:23 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn brute_force_mp(ciphered_text: &str, charset: &str, testing: bool)-> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ciphered_text` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `charset` [INFO] [stdout] --> src/attack/vigenere.rs:47:44 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn brute_force_mp(ciphered_text: &str, charset: &str, testing: bool)-> Result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_charset` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `testing` [INFO] [stdout] --> src/attack/vigenere.rs:47:59 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn brute_force_mp(ciphered_text: &str, charset: &str, testing: bool)-> Result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_testing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset_char` is never read [INFO] [stdout] --> src/cipher/vigenere.rs:101:17 [INFO] [stdout] | [INFO] [stdout] 101 | let mut offset_char = String::new(); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_best_result` is never used [INFO] [stdout] --> src/attack/caesar.rs:114:4 [INFO] [stdout] | [INFO] [stdout] 114 | fn get_best_result(identified_languages: &Vec<(usize, IdentifiedLanguage)>)-> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `database_path` is never read [INFO] [stdout] --> src/attack/database.rs:98:5 [INFO] [stdout] | [INFO] [stdout] 96 | pub struct Database { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 97 | pub session: DatabaseSession, [INFO] [stdout] 98 | database_path: String [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `candidates` is never read [INFO] [stdout] --> src/attack/dictionaries.rs:410:5 [INFO] [stdout] | [INFO] [stdout] 407 | pub struct IdentifiedLanguage { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 410 | candidates: HashMap [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IntegerKeyIterator` is never constructed [INFO] [stdout] --> src/attack/simple_attacks.rs:88:8 [INFO] [stdout] | [INFO] [stdout] 88 | struct IntegerKeyIterator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/attack/simple_attacks.rs:95:8 [INFO] [stdout] | [INFO] [stdout] 94 | impl IntegerKeyIterator { [INFO] [stdout] | ----------------------- associated function in this implementation [INFO] [stdout] 95 | fn new(start: usize, end: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DictionaryWordKeyIterator` is never constructed [INFO] [stdout] --> src/attack/simple_attacks.rs:119:8 [INFO] [stdout] | [INFO] [stdout] 119 | struct DictionaryWordKeyIterator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `get_next_word` are never used [INFO] [stdout] --> src/attack/simple_attacks.rs:129:12 [INFO] [stdout] | [INFO] [stdout] 128 | impl DictionaryWordKeyIterator { [INFO] [stdout] | ------------------------------ associated items in this implementation [INFO] [stdout] 129 | pub fn new() -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | fn get_next_word(&mut self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `create_new_single_entry` is never used [INFO] [stdout] --> src/attack/substitution.rs:723:8 [INFO] [stdout] | [INFO] [stdout] 386 | impl Mapping { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 723 | fn create_new_single_entry(&mut self, key: char, value: char) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LetterHistogram` is never constructed [INFO] [stdout] --> src/attack/frequency.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | struct LetterHistogram { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/attack/frequency.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 22 | impl LetterHistogram { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 37 | fn from_text(text: T, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | fn from_dict(letters: HashMap, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | fn setup_for_matching(self, letter_counter: Counter, width: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | fn create_ordered_dict(mut self, letter_counter: Counter) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | fn set_matching_width(mut self, width: usize) -> Self{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | fn frequency(&self, key: T) -> Result [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 190 | fn letters(&self) -> linked_hash_map::Keys { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 208 | fn match_score(one: &LetterHistogram, other: &LetterHistogram) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_repeated_sequences` is never used [INFO] [stdout] --> src/attack/frequency.rs:230:8 [INFO] [stdout] | [INFO] [stdout] 230 | pub fn find_repeated_sequences(text: T, length: usize) -> HashMap> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_adjacent_separations` is never used [INFO] [stdout] --> src/attack/frequency.rs:247:4 [INFO] [stdout] | [INFO] [stdout] 247 | fn find_adjacent_separations(text: T, length: usize) -> HashMap> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_not_adjacent_separations` is never used [INFO] [stdout] --> src/attack/frequency.rs:292:4 [INFO] [stdout] | [INFO] [stdout] 292 | fn find_not_adjacent_separations(sequences: &mut HashMap>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_substrings` is never used [INFO] [stdout] --> src/attack/frequency.rs:327:8 [INFO] [stdout] | [INFO] [stdout] 327 | pub fn get_substrings(ciphertext: T, step: usize) -> Vec [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `match_substring` is never used [INFO] [stdout] --> src/attack/frequency.rs:353:4 [INFO] [stdout] | [INFO] [stdout] 353 | fn match_substring(substring: T, reference_histogram: &LetterHistogram) -> u8 [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_most_likely_subkeys` is never used [INFO] [stdout] --> src/attack/frequency.rs:370:4 [INFO] [stdout] | [INFO] [stdout] 370 | fn find_most_likely_subkeys(substring: T, reference_histogram: &LetterHistogram) -> Result> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `MultiplyingKeyBelowZero` and `AddingKeyBelowZero` are never constructed [INFO] [stdout] --> src/cipher/affine.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 16 | enum WrongAffineKeyCauses { [INFO] [stdout] | -------------------- variants in this enum [INFO] [stdout] 17 | MultiplyingKeyBelowZero, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 18 | MultiplyingKeyZero, [INFO] [stdout] 19 | AddingKeyBelowZero, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WrongAffineKeyCauses` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait method `fromStr` should have a snake case name [INFO] [stdout] --> src/lib.rs:85:8 [INFO] [stdout] | [INFO] [stdout] 85 | fn fromStr(s: T) -> Self; [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `from_str` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait method `findFromIndex` should have a snake case name [INFO] [stdout] --> src/lib.rs:106:8 [INFO] [stdout] | [INFO] [stdout] 106 | fn findFromIndex(text: &T, text_to_find: U, index: usize) -> Option; [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `find_from_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/database.rs:129:13 [INFO] [stdout] | [INFO] [stdout] 129 | create_folder_path(database_folder); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 129 | let _ = create_folder_path(database_folder); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:148:10 [INFO] [stdout] | [INFO] [stdout] 148 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^-------- [INFO] [stdout] | | [INFO] [stdout] | `Queryable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_queryable_for_language` [INFO] [stdout] ... [INFO] [stdout] 151 | pub struct Language { [INFO] [stdout] | -------- `Language` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Queryable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Queryable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Queryable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:148:21 [INFO] [stdout] | [INFO] [stdout] 148 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^----------- [INFO] [stdout] | | [INFO] [stdout] | `HasTable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_identifiable_for_language` [INFO] [stdout] ... [INFO] [stdout] 151 | pub struct Language { [INFO] [stdout] | -------- `Language` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:148:21 [INFO] [stdout] | [INFO] [stdout] 148 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Identifiable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_identifiable_for_language` [INFO] [stdout] ... [INFO] [stdout] 151 | pub struct Language { [INFO] [stdout] | -------- `Language` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:156:10 [INFO] [stdout] | [INFO] [stdout] 156 | #[derive(Insertable)] [INFO] [stdout] | ^--------- [INFO] [stdout] | | [INFO] [stdout] | `Insertable` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newlanguage` [INFO] [stdout] 157 | #[table_name="languages"] [INFO] [stdout] 158 | pub struct NewLanguage<'a> { [INFO] [stdout] | ----------- `NewLanguage` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:156:10 [INFO] [stdout] | [INFO] [stdout] 156 | #[derive(Insertable)] [INFO] [stdout] | -^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Insertable` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newlanguage` [INFO] [stdout] 157 | #[table_name="languages"] [INFO] [stdout] 158 | pub struct NewLanguage<'a> { [INFO] [stdout] | ----------- `NewLanguage` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:156:10 [INFO] [stdout] | [INFO] [stdout] 156 | #[derive(Insertable)] [INFO] [stdout] | ^--------- [INFO] [stdout] | | [INFO] [stdout] | `UndecoratedInsertRecord` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newlanguage` [INFO] [stdout] 157 | #[table_name="languages"] [INFO] [stdout] 158 | pub struct NewLanguage<'a> { [INFO] [stdout] | ----------- `NewLanguage` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:164:10 [INFO] [stdout] | [INFO] [stdout] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^-------- [INFO] [stdout] | | [INFO] [stdout] | `Queryable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_queryable_for_word` [INFO] [stdout] ... [INFO] [stdout] 167 | pub struct Word { [INFO] [stdout] | ---- `Word` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Queryable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Queryable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Queryable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:164:21 [INFO] [stdout] | [INFO] [stdout] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^----------- [INFO] [stdout] | | [INFO] [stdout] | `HasTable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_identifiable_for_word` [INFO] [stdout] ... [INFO] [stdout] 167 | pub struct Word { [INFO] [stdout] | ---- `Word` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:164:21 [INFO] [stdout] | [INFO] [stdout] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Identifiable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_identifiable_for_word` [INFO] [stdout] ... [INFO] [stdout] 167 | pub struct Word { [INFO] [stdout] | ---- `Word` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:164:35 [INFO] [stdout] | [INFO] [stdout] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^----------- [INFO] [stdout] | | [INFO] [stdout] | `BelongsTo` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_associations_for_word` [INFO] [stdout] 165 | #[table_name="words"] [INFO] [stdout] 166 | #[belongs_to(Language)] [INFO] [stdout] | -------- `Language` is not local [INFO] [stdout] 167 | pub struct Word { [INFO] [stdout] | ---- `Word` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Associations` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Associations` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Associations` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:174:10 [INFO] [stdout] | [INFO] [stdout] 174 | #[derive(Insertable)] [INFO] [stdout] | ^--------- [INFO] [stdout] | | [INFO] [stdout] | `Insertable` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newword` [INFO] [stdout] 175 | #[table_name="words"] [INFO] [stdout] 176 | pub struct NewWord<'a> { [INFO] [stdout] | ------- `NewWord` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:174:10 [INFO] [stdout] | [INFO] [stdout] 174 | #[derive(Insertable)] [INFO] [stdout] | -^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Insertable` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newword` [INFO] [stdout] 175 | #[table_name="words"] [INFO] [stdout] 176 | pub struct NewWord<'a> { [INFO] [stdout] | ------- `NewWord` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:174:10 [INFO] [stdout] | [INFO] [stdout] 174 | #[derive(Insertable)] [INFO] [stdout] | ^--------- [INFO] [stdout] | | [INFO] [stdout] | `UndecoratedInsertRecord` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newword` [INFO] [stdout] 175 | #[table_name="words"] [INFO] [stdout] 176 | pub struct NewWord<'a> { [INFO] [stdout] | ------- `NewWord` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/attack/dictionaries.rs:164:41 [INFO] [stdout] | [INFO] [stdout] 164 | let _word_clone = _word.as_ref().clone(); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/attack/dictionaries.rs:340:17 [INFO] [stdout] | [INFO] [stdout] 340 | pub fn iter(&self) -> InsertionOrderedSetIterator { [INFO] [stdout] | ^^^^^ ------------------------------ the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 340 | pub fn iter(&self) -> InsertionOrderedSetIterator<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/attack/simple_attacks.rs:165:25 [INFO] [stdout] | [INFO] [stdout] 165 | Err(E) => return None [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `item_A` should have a snake case name [INFO] [stdout] --> src/attack/frequency.rs:122:34 [INFO] [stdout] | [INFO] [stdout] 122 | values_ordered.sort_by(|&item_A, &item_B| item_B.cmp(item_A)); [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `item_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `item_B` should have a snake case name [INFO] [stdout] --> src/attack/frequency.rs:122:43 [INFO] [stdout] | [INFO] [stdout] 122 | values_ordered.sort_by(|&item_A, &item_B| item_B.cmp(item_A)); [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `item_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/frequency.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | ordered_dict_iter.advance_by(self.ordered_dict.len()-width); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 162 | let _ = ordered_dict_iter.advance_by(self.ordered_dict.len()-width); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/attack/frequency.rs:190:16 [INFO] [stdout] | [INFO] [stdout] 190 | fn letters(&self) -> linked_hash_map::Keys { [INFO] [stdout] | ^^^^^ -------------------------------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 190 | fn letters(&self) -> linked_hash_map::Keys<'_, char, u64> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/frequency.rs:334:9 [INFO] [stdout] | [INFO] [stdout] 334 | ciphered_stream_iter.advance_by(i); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 334 | let _ = ciphered_stream_iter.advance_by(i); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `item_A` should have a snake case name [INFO] [stdout] --> src/cipher/common.rs:186:25 [INFO] [stdout] | [INFO] [stdout] 186 | items.sort_by(|&item_A, &item_B| item_B.1.cmp(item_A.1)); [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `item_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `item_B` should have a snake case name [INFO] [stdout] --> src/cipher/common.rs:186:34 [INFO] [stdout] | [INFO] [stdout] 186 | items.sort_by(|&item_A, &item_B| item_B.1.cmp(item_A.1)); [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `item_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / table! { [INFO] [stdout] 2 | | languages (id) { [INFO] [stdout] 3 | | id -> Integer, [INFO] [stdout] 4 | | language -> Text, [INFO] [stdout] 5 | | } [INFO] [stdout] 6 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | | `table` is not local [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_table` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / table! { [INFO] [stdout] 2 | | languages (id) { [INFO] [stdout] 3 | | id -> Integer, [INFO] [stdout] | | -- `id` is not local [INFO] [stdout] 4 | | language -> Text, [INFO] [stdout] 5 | | } [INFO] [stdout] 6 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_id` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / table! { [INFO] [stdout] 2 | | languages (id) { [INFO] [stdout] 3 | | id -> Integer, [INFO] [stdout] 4 | | language -> Text, [INFO] [stdout] | | -------- `language` is not local [INFO] [stdout] 5 | | } [INFO] [stdout] 6 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_language` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] ... | [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | | `table` is not local [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_table` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] | | -- `id` is not local [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] ... | [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_id` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] | | ---- `word` is not local [INFO] [stdout] ... | [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_word` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] 12 | | word_pattern -> Text, [INFO] [stdout] | | ------------ `word_pattern` is not local [INFO] [stdout] ... | [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_word_pattern` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] 12 | | word_pattern -> Text, [INFO] [stdout] 13 | | language_id -> Integer, [INFO] [stdout] | | ----------- `language_id` is not local [INFO] [stdout] 14 | | } [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_language_id` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:634:9 [INFO] [stdout] | [INFO] [stdout] 634 | return bail!("You tried to use attack_file function with a configuration that is not for attack mode.") [INFO] [stdout] | ^^^^^^^------------------------------------------------------------------------------------------------ [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:646:14 [INFO] [stdout] | [INFO] [stdout] 646 | _ => return bail!("Given algorithm does not use integer key and charset.") [INFO] [stdout] | ^^^^^^^-------------------------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:658:14 [INFO] [stdout] | [INFO] [stdout] 658 | _ => return bail!("Given algorithm does not use string key and charset.") [INFO] [stdout] | ^^^^^^^------------------------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:669:14 [INFO] [stdout] | [INFO] [stdout] 669 | _ => return bail!("Given algorithm does not use integer key or includes a charset.") [INFO] [stdout] | ^^^^^^^------------------------------------------------------------------------ [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:681:14 [INFO] [stdout] | [INFO] [stdout] 681 | _ => return bail!("Given algorithm does not use integer key and charset.") [INFO] [stdout] | ^^^^^^^-------------------------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:693:14 [INFO] [stdout] | [INFO] [stdout] 693 | _ => return bail!("Given algorithm does not use string key and charset.") [INFO] [stdout] | ^^^^^^^------------------------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:704:14 [INFO] [stdout] | [INFO] [stdout] 704 | _ => return bail!("Given algorithm does not use integer key or includes a charset.") [INFO] [stdout] | ^^^^^^^------------------------------------------------------------------------ [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:716:14 [INFO] [stdout] | [INFO] [stdout] 716 | _ => return bail!("Given algorithm does not use charset.") [INFO] [stdout] | ^^^^^^^---------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:727:14 [INFO] [stdout] | [INFO] [stdout] 727 | _ => return bail!("Given algorithm do use string key and charset") [INFO] [stdout] | ^^^^^^^------------------------------------------------------ [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:738:14 [INFO] [stdout] | [INFO] [stdout] 738 | _ => return bail!("Given algorithm do use charset.") [INFO] [stdout] | ^^^^^^^---------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:749:14 [INFO] [stdout] | [INFO] [stdout] 749 | _ => return bail!("Given algorithm don't have testing mode.") [INFO] [stdout] | ^^^^^^^------------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ciphered_file` [INFO] [stdout] --> src/bin/main.rs:428:13 [INFO] [stdout] | [INFO] [stdout] 428 | ciphered_file, charset } => { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try ignoring the field: `ciphered_file: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `deciphered_file` [INFO] [stdout] --> src/bin/main.rs:466:32 [INFO] [stdout] | [INFO] [stdout] 466 | file_to_decipher , deciphered_file, charset } => { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try ignoring the field: `deciphered_file: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `algorithm` [INFO] [stdout] --> src/bin/main.rs:521:25 [INFO] [stdout] | [INFO] [stdout] 521 | Modes::Cipher { algorithm, key, file_to_cipher, [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `algorithm: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/bin/main.rs:521:36 [INFO] [stdout] | [INFO] [stdout] 521 | Modes::Cipher { algorithm, key, file_to_cipher, [INFO] [stdout] | ^^^ help: try ignoring the field: `key: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_to_cipher` [INFO] [stdout] --> src/bin/main.rs:521:41 [INFO] [stdout] | [INFO] [stdout] 521 | Modes::Cipher { algorithm, key, file_to_cipher, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try ignoring the field: `file_to_cipher: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `charset` [INFO] [stdout] --> src/bin/main.rs:522:28 [INFO] [stdout] | [INFO] [stdout] 522 | ciphered_file, charset } => { [INFO] [stdout] | ^^^^^^^ help: try ignoring the field: `charset: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `algorithm` [INFO] [stdout] --> src/bin/main.rs:525:27 [INFO] [stdout] | [INFO] [stdout] 525 | Modes::Decipher { algorithm, key, file_to_decipher, [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `algorithm: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/bin/main.rs:525:38 [INFO] [stdout] | [INFO] [stdout] 525 | Modes::Decipher { algorithm, key, file_to_decipher, [INFO] [stdout] | ^^^ help: try ignoring the field: `key: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_to_decipher` [INFO] [stdout] --> src/bin/main.rs:525:43 [INFO] [stdout] | [INFO] [stdout] 525 | Modes::Decipher { algorithm, key, file_to_decipher, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try ignoring the field: `file_to_decipher: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `charset` [INFO] [stdout] --> src/bin/main.rs:526:30 [INFO] [stdout] | [INFO] [stdout] 526 | deciphered_file, charset }=> { [INFO] [stdout] | ^^^^^^^ help: try ignoring the field: `charset: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `algorithm` [INFO] [stdout] --> src/bin/main.rs:529:25 [INFO] [stdout] | [INFO] [stdout] 529 | Modes::Attack { algorithm, file_to_attack, [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `algorithm: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_to_attack` [INFO] [stdout] --> src/bin/main.rs:529:36 [INFO] [stdout] | [INFO] [stdout] 529 | Modes::Attack { algorithm, file_to_attack, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try ignoring the field: `file_to_attack: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `charset` [INFO] [stdout] --> src/bin/main.rs:530:30 [INFO] [stdout] | [INFO] [stdout] 530 | deciphered_file, charset, output_recovered_key [INFO] [stdout] | ^^^^^^^ help: try ignoring the field: `charset: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_recovered_key` [INFO] [stdout] --> src/bin/main.rs:563:26 [INFO] [stdout] | [INFO] [stdout] 563 | deciphered_file, output_recovered_key, charset [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try ignoring the field: `output_recovered_key: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `get_string_key_algorithms`, `get_integer_key_algorithms`, and `get_string_value` are never used [INFO] [stdout] --> src/bin/main.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 43 | impl CipheringAlgorithms { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn get_string_key_algorithms()-> HashSet { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn get_integer_key_algorithms()-> HashSet { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn get_string_value(&self)-> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Str` should have a snake case name [INFO] [stdout] --> src/bin/main.rs:69:19 [INFO] [stdout] | [INFO] [stdout] 69 | .map(|Str| Str.clone()) [INFO] [stdout] | ^^^ help: convert the identifier to snake case (notice the capitalization): `str` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:546:9 [INFO] [stdout] | [INFO] [stdout] 546 | write(output_file_path, output_string.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 546 | let _ = write(output_file_path, output_string.as_str()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:767:17 [INFO] [stdout] | [INFO] [stdout] 767 | new_dictionary.populate(pathname); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 767 | let _ = new_dictionary.populate(pathname); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:781:13 [INFO] [stdout] | [INFO] [stdout] 781 | dictionary.populate(pathname); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 781 | let _ = dictionary.populate(pathname); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Str` should have a snake case name [INFO] [stdout] --> src/bin/main.rs:813:48 [INFO] [stdout] | [INFO] [stdout] 813 | let args_str: Vec<&str> = args.iter().map(|Str| Str.as_str()).collect(); [INFO] [stdout] | ^^^ help: convert the identifier to snake case (notice the capitalization): `str` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 04s [INFO] running `Command { std: "docker" "inspect" "9d9c31c396c0592ef06e4198e760a538b70abe0779f2a3e5830168ddffbb1524", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9d9c31c396c0592ef06e4198e760a538b70abe0779f2a3e5830168ddffbb1524", kill_on_drop: false }` [INFO] [stdout] 9d9c31c396c0592ef06e4198e760a538b70abe0779f2a3e5830168ddffbb1524 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "test" "--frozen" "--no-run" "--message-format=json" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] fcaffc9d8ea2896f3beb5900913ca6782ef5bc3dc84104a54591b83210b0b508 [INFO] running `Command { std: "docker" "start" "-a" "fcaffc9d8ea2896f3beb5900913ca6782ef5bc3dc84104a54591b83210b0b508", kill_on_drop: false }` [INFO] [stderr] Compiling getrandom v0.2.3 [INFO] [stderr] Compiling semver-parser v0.7.0 [INFO] [stderr] Compiling ring v0.14.6 [INFO] [stderr] Compiling num-traits v0.2.14 [INFO] [stderr] Compiling remove_dir_all v0.5.3 [INFO] [stderr] Compiling spin v0.5.2 [INFO] [stderr] Compiling untrusted v0.6.2 [INFO] [stderr] Compiling cfg-if v0.1.10 [INFO] [stdout] warning: unused import: `OsStr` [INFO] [stdout] --> src/attack/database.rs:6:16 [INFO] [stdout] | [INFO] [stdout] 6 | use std::ffi::{OsStr, OsString}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Error` [INFO] [stdout] --> src/attack/database.rs:11:43 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::{ErrorKind, Result, ResultExt, Error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `DATABASE_STANDARD_PATH` should have an upper camel case name [INFO] [stdout] --> src/attack/database.rs:31:8 [INFO] [stdout] | [INFO] [stdout] 31 | struct DATABASE_STANDARD_PATH; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DatabaseStandardPath` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `cipher` [INFO] [stdout] --> src/attack/frequency.rs:5:48 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::cipher::vigenere::{DEFAULT_CHARSET, cipher, decipher}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Error` and `ResultExt` [INFO] [stdout] --> src/cipher/substitution.rs:2:32 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::{ErrorKind, Result, ResultExt, Error}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `has_error_description_deprecated` [INFO] [stdout] --> src/lib.rs:22:1 [INFO] [stdout] | [INFO] [stdout] 22 | / error_chain! { [INFO] [stdout] 23 | | types { [INFO] [stdout] 24 | | Error, ErrorKind, ResultExt, Result; [INFO] [stdout] ... | [INFO] [stdout] 80 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `docsrs`, `feature`, and `test` and 31 more [INFO] [stdout] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `impl_error_chain_processed` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the macro `impl_error_chain_processed` may come from an old version of the `error_chain` crate, try updating your dependency with `cargo update -p error_chain` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `E` [INFO] [stdout] --> src/attack/simple_attacks.rs:165:25 [INFO] [stdout] | [INFO] [stdout] 165 | Err(E) => return None [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_E` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/attack/frequency.rs:126:28 [INFO] [stdout] | [INFO] [stdout] 126 | .filter(|(&key, &_value)| _value == *value) [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/attack/frequency.rs:157:25 [INFO] [stdout] | [INFO] [stdout] 157 | .map(|(key, value)| key) [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/attack/frequency.rs:164:25 [INFO] [stdout] | [INFO] [stdout] 164 | .map(|(key, value)| key) [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `char` [INFO] [stdout] --> src/attack/frequency.rs:256:13 [INFO] [stdout] | [INFO] [stdout] 256 | for (i, char) in char_string.chars().enumerate() { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_char` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/frequency.rs:269:28 [INFO] [stdout] | [INFO] [stdout] 269 | let mut values = sequences.get_mut(sequence_to_find).unwrap(); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/attack/frequency.rs:383:21 [INFO] [stdout] | [INFO] [stdout] 383 | .map(|(key, value)| key) [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ciphered_text` [INFO] [stdout] --> src/attack/vigenere.rs:36:26 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn brute_force(ciphered_text: T, charset: U, testing: bool)-> Result [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ciphered_text` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `charset` [INFO] [stdout] --> src/attack/vigenere.rs:36:44 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn brute_force(ciphered_text: T, charset: U, testing: bool)-> Result [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_charset` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `testing` [INFO] [stdout] --> src/attack/vigenere.rs:36:56 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn brute_force(ciphered_text: T, charset: U, testing: bool)-> Result [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_testing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ciphered_text` [INFO] [stdout] --> src/attack/vigenere.rs:47:23 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn brute_force_mp(ciphered_text: &str, charset: &str, testing: bool)-> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ciphered_text` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `charset` [INFO] [stdout] --> src/attack/vigenere.rs:47:44 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn brute_force_mp(ciphered_text: &str, charset: &str, testing: bool)-> Result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_charset` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `testing` [INFO] [stdout] --> src/attack/vigenere.rs:47:59 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn brute_force_mp(ciphered_text: &str, charset: &str, testing: bool)-> Result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_testing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset_char` is never read [INFO] [stdout] --> src/cipher/vigenere.rs:101:17 [INFO] [stdout] | [INFO] [stdout] 101 | let mut offset_char = String::new(); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_best_result` is never used [INFO] [stdout] --> src/attack/caesar.rs:114:4 [INFO] [stdout] | [INFO] [stdout] 114 | fn get_best_result(identified_languages: &Vec<(usize, IdentifiedLanguage)>)-> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `database_path` is never read [INFO] [stdout] --> src/attack/database.rs:98:5 [INFO] [stdout] | [INFO] [stdout] 96 | pub struct Database { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 97 | pub session: DatabaseSession, [INFO] [stdout] 98 | database_path: String [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `candidates` is never read [INFO] [stdout] --> src/attack/dictionaries.rs:410:5 [INFO] [stdout] | [INFO] [stdout] 407 | pub struct IdentifiedLanguage { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 410 | candidates: HashMap [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IntegerKeyIterator` is never constructed [INFO] [stdout] --> src/attack/simple_attacks.rs:88:8 [INFO] [stdout] | [INFO] [stdout] 88 | struct IntegerKeyIterator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/attack/simple_attacks.rs:95:8 [INFO] [stdout] | [INFO] [stdout] 94 | impl IntegerKeyIterator { [INFO] [stdout] | ----------------------- associated function in this implementation [INFO] [stdout] 95 | fn new(start: usize, end: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DictionaryWordKeyIterator` is never constructed [INFO] [stdout] --> src/attack/simple_attacks.rs:119:8 [INFO] [stdout] | [INFO] [stdout] 119 | struct DictionaryWordKeyIterator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `get_next_word` are never used [INFO] [stdout] --> src/attack/simple_attacks.rs:129:12 [INFO] [stdout] | [INFO] [stdout] 128 | impl DictionaryWordKeyIterator { [INFO] [stdout] | ------------------------------ associated items in this implementation [INFO] [stdout] 129 | pub fn new() -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | fn get_next_word(&mut self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `create_new_single_entry` is never used [INFO] [stdout] --> src/attack/substitution.rs:723:8 [INFO] [stdout] | [INFO] [stdout] 386 | impl Mapping { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 723 | fn create_new_single_entry(&mut self, key: char, value: char) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LetterHistogram` is never constructed [INFO] [stdout] --> src/attack/frequency.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | struct LetterHistogram { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/attack/frequency.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 22 | impl LetterHistogram { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 37 | fn from_text(text: T, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | fn from_dict(letters: HashMap, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | fn setup_for_matching(self, letter_counter: Counter, width: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | fn create_ordered_dict(mut self, letter_counter: Counter) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | fn set_matching_width(mut self, width: usize) -> Self{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | fn frequency(&self, key: T) -> Result [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 190 | fn letters(&self) -> linked_hash_map::Keys { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 208 | fn match_score(one: &LetterHistogram, other: &LetterHistogram) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_repeated_sequences` is never used [INFO] [stdout] --> src/attack/frequency.rs:230:8 [INFO] [stdout] | [INFO] [stdout] 230 | pub fn find_repeated_sequences(text: T, length: usize) -> HashMap> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_adjacent_separations` is never used [INFO] [stdout] --> src/attack/frequency.rs:247:4 [INFO] [stdout] | [INFO] [stdout] 247 | fn find_adjacent_separations(text: T, length: usize) -> HashMap> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_not_adjacent_separations` is never used [INFO] [stdout] --> src/attack/frequency.rs:292:4 [INFO] [stdout] | [INFO] [stdout] 292 | fn find_not_adjacent_separations(sequences: &mut HashMap>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_substrings` is never used [INFO] [stdout] --> src/attack/frequency.rs:327:8 [INFO] [stdout] | [INFO] [stdout] 327 | pub fn get_substrings(ciphertext: T, step: usize) -> Vec [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `match_substring` is never used [INFO] [stdout] --> src/attack/frequency.rs:353:4 [INFO] [stdout] | [INFO] [stdout] 353 | fn match_substring(substring: T, reference_histogram: &LetterHistogram) -> u8 [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_most_likely_subkeys` is never used [INFO] [stdout] --> src/attack/frequency.rs:370:4 [INFO] [stdout] | [INFO] [stdout] 370 | fn find_most_likely_subkeys(substring: T, reference_histogram: &LetterHistogram) -> Result> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `MultiplyingKeyBelowZero` and `AddingKeyBelowZero` are never constructed [INFO] [stdout] --> src/cipher/affine.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 16 | enum WrongAffineKeyCauses { [INFO] [stdout] | -------------------- variants in this enum [INFO] [stdout] 17 | MultiplyingKeyBelowZero, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 18 | MultiplyingKeyZero, [INFO] [stdout] 19 | AddingKeyBelowZero, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WrongAffineKeyCauses` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait method `fromStr` should have a snake case name [INFO] [stdout] --> src/lib.rs:85:8 [INFO] [stdout] | [INFO] [stdout] 85 | fn fromStr(s: T) -> Self; [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `from_str` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait method `findFromIndex` should have a snake case name [INFO] [stdout] --> src/lib.rs:106:8 [INFO] [stdout] | [INFO] [stdout] 106 | fn findFromIndex(text: &T, text_to_find: U, index: usize) -> Option; [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `find_from_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/database.rs:129:13 [INFO] [stdout] | [INFO] [stdout] 129 | create_folder_path(database_folder); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 129 | let _ = create_folder_path(database_folder); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:148:10 [INFO] [stdout] | [INFO] [stdout] 148 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^-------- [INFO] [stdout] | | [INFO] [stdout] | `Queryable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_queryable_for_language` [INFO] [stdout] ... [INFO] [stdout] 151 | pub struct Language { [INFO] [stdout] | -------- `Language` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Queryable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Queryable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Queryable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:148:21 [INFO] [stdout] | [INFO] [stdout] 148 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^----------- [INFO] [stdout] | | [INFO] [stdout] | `HasTable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_identifiable_for_language` [INFO] [stdout] ... [INFO] [stdout] 151 | pub struct Language { [INFO] [stdout] | -------- `Language` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:148:21 [INFO] [stdout] | [INFO] [stdout] 148 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Identifiable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_identifiable_for_language` [INFO] [stdout] ... [INFO] [stdout] 151 | pub struct Language { [INFO] [stdout] | -------- `Language` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:156:10 [INFO] [stdout] | [INFO] [stdout] 156 | #[derive(Insertable)] [INFO] [stdout] | ^--------- [INFO] [stdout] | | [INFO] [stdout] | `Insertable` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newlanguage` [INFO] [stdout] 157 | #[table_name="languages"] [INFO] [stdout] 158 | pub struct NewLanguage<'a> { [INFO] [stdout] | ----------- `NewLanguage` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:156:10 [INFO] [stdout] | [INFO] [stdout] 156 | #[derive(Insertable)] [INFO] [stdout] | -^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Insertable` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newlanguage` [INFO] [stdout] 157 | #[table_name="languages"] [INFO] [stdout] 158 | pub struct NewLanguage<'a> { [INFO] [stdout] | ----------- `NewLanguage` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:156:10 [INFO] [stdout] | [INFO] [stdout] 156 | #[derive(Insertable)] [INFO] [stdout] | ^--------- [INFO] [stdout] | | [INFO] [stdout] | `UndecoratedInsertRecord` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newlanguage` [INFO] [stdout] 157 | #[table_name="languages"] [INFO] [stdout] 158 | pub struct NewLanguage<'a> { [INFO] [stdout] | ----------- `NewLanguage` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:164:10 [INFO] [stdout] | [INFO] [stdout] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^-------- [INFO] [stdout] | | [INFO] [stdout] | `Queryable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_queryable_for_word` [INFO] [stdout] ... [INFO] [stdout] 167 | pub struct Word { [INFO] [stdout] | ---- `Word` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Queryable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Queryable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Queryable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:164:21 [INFO] [stdout] | [INFO] [stdout] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^----------- [INFO] [stdout] | | [INFO] [stdout] | `HasTable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_identifiable_for_word` [INFO] [stdout] ... [INFO] [stdout] 167 | pub struct Word { [INFO] [stdout] | ---- `Word` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:164:21 [INFO] [stdout] | [INFO] [stdout] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Identifiable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_identifiable_for_word` [INFO] [stdout] ... [INFO] [stdout] 167 | pub struct Word { [INFO] [stdout] | ---- `Word` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:164:35 [INFO] [stdout] | [INFO] [stdout] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^----------- [INFO] [stdout] | | [INFO] [stdout] | `BelongsTo` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_associations_for_word` [INFO] [stdout] 165 | #[table_name="words"] [INFO] [stdout] 166 | #[belongs_to(Language)] [INFO] [stdout] | -------- `Language` is not local [INFO] [stdout] 167 | pub struct Word { [INFO] [stdout] | ---- `Word` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Associations` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Associations` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Associations` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:174:10 [INFO] [stdout] | [INFO] [stdout] 174 | #[derive(Insertable)] [INFO] [stdout] | ^--------- [INFO] [stdout] | | [INFO] [stdout] | `Insertable` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newword` [INFO] [stdout] 175 | #[table_name="words"] [INFO] [stdout] 176 | pub struct NewWord<'a> { [INFO] [stdout] | ------- `NewWord` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:174:10 [INFO] [stdout] | [INFO] [stdout] 174 | #[derive(Insertable)] [INFO] [stdout] | -^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Insertable` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newword` [INFO] [stdout] 175 | #[table_name="words"] [INFO] [stdout] 176 | pub struct NewWord<'a> { [INFO] [stdout] | ------- `NewWord` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:174:10 [INFO] [stdout] | [INFO] [stdout] 174 | #[derive(Insertable)] [INFO] [stdout] | ^--------- [INFO] [stdout] | | [INFO] [stdout] | `UndecoratedInsertRecord` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newword` [INFO] [stdout] 175 | #[table_name="words"] [INFO] [stdout] 176 | pub struct NewWord<'a> { [INFO] [stdout] | ------- `NewWord` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/attack/dictionaries.rs:164:41 [INFO] [stdout] | [INFO] [stdout] 164 | let _word_clone = _word.as_ref().clone(); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/attack/dictionaries.rs:340:17 [INFO] [stdout] | [INFO] [stdout] 340 | pub fn iter(&self) -> InsertionOrderedSetIterator { [INFO] [stdout] | ^^^^^ ------------------------------ the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 340 | pub fn iter(&self) -> InsertionOrderedSetIterator<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/attack/simple_attacks.rs:165:25 [INFO] [stdout] | [INFO] [stdout] 165 | Err(E) => return None [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `item_A` should have a snake case name [INFO] [stdout] --> src/attack/frequency.rs:122:34 [INFO] [stdout] | [INFO] [stdout] 122 | values_ordered.sort_by(|&item_A, &item_B| item_B.cmp(item_A)); [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `item_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `item_B` should have a snake case name [INFO] [stdout] --> src/attack/frequency.rs:122:43 [INFO] [stdout] | [INFO] [stdout] 122 | values_ordered.sort_by(|&item_A, &item_B| item_B.cmp(item_A)); [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `item_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/frequency.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | ordered_dict_iter.advance_by(self.ordered_dict.len()-width); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 162 | let _ = ordered_dict_iter.advance_by(self.ordered_dict.len()-width); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/attack/frequency.rs:190:16 [INFO] [stdout] | [INFO] [stdout] 190 | fn letters(&self) -> linked_hash_map::Keys { [INFO] [stdout] | ^^^^^ -------------------------------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 190 | fn letters(&self) -> linked_hash_map::Keys<'_, char, u64> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/frequency.rs:334:9 [INFO] [stdout] | [INFO] [stdout] 334 | ciphered_stream_iter.advance_by(i); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 334 | let _ = ciphered_stream_iter.advance_by(i); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `item_A` should have a snake case name [INFO] [stdout] --> src/cipher/common.rs:186:25 [INFO] [stdout] | [INFO] [stdout] 186 | items.sort_by(|&item_A, &item_B| item_B.1.cmp(item_A.1)); [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `item_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `item_B` should have a snake case name [INFO] [stdout] --> src/cipher/common.rs:186:34 [INFO] [stdout] | [INFO] [stdout] 186 | items.sort_by(|&item_A, &item_B| item_B.1.cmp(item_A.1)); [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `item_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / table! { [INFO] [stdout] 2 | | languages (id) { [INFO] [stdout] 3 | | id -> Integer, [INFO] [stdout] 4 | | language -> Text, [INFO] [stdout] 5 | | } [INFO] [stdout] 6 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | | `table` is not local [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_table` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / table! { [INFO] [stdout] 2 | | languages (id) { [INFO] [stdout] 3 | | id -> Integer, [INFO] [stdout] | | -- `id` is not local [INFO] [stdout] 4 | | language -> Text, [INFO] [stdout] 5 | | } [INFO] [stdout] 6 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_id` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / table! { [INFO] [stdout] 2 | | languages (id) { [INFO] [stdout] 3 | | id -> Integer, [INFO] [stdout] 4 | | language -> Text, [INFO] [stdout] | | -------- `language` is not local [INFO] [stdout] 5 | | } [INFO] [stdout] 6 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_language` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] ... | [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | | `table` is not local [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_table` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] | | -- `id` is not local [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] ... | [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_id` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] | | ---- `word` is not local [INFO] [stdout] ... | [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_word` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] 12 | | word_pattern -> Text, [INFO] [stdout] | | ------------ `word_pattern` is not local [INFO] [stdout] ... | [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_word_pattern` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] 12 | | word_pattern -> Text, [INFO] [stdout] 13 | | language_id -> Integer, [INFO] [stdout] | | ----------- `language_id` is not local [INFO] [stdout] 14 | | } [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_language_id` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling rand_core v0.6.3 [INFO] [stderr] Compiling semver v0.9.0 [INFO] [stderr] Compiling rustc_version v0.2.3 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling rstest v0.6.4 [INFO] [stderr] Compiling float-cmp v0.8.0 [INFO] [stderr] Compiling rand v0.8.4 [INFO] [stderr] Compiling tempfile v3.2.0 [INFO] [stderr] Compiling test_common v1.4.0 [INFO] [stderr] Compiling cifra v0.9.3+post3 (/opt/rustwide/workdir) [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:634:9 [INFO] [stdout] | [INFO] [stdout] 634 | return bail!("You tried to use attack_file function with a configuration that is not for attack mode.") [INFO] [stdout] | ^^^^^^^------------------------------------------------------------------------------------------------ [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:646:14 [INFO] [stdout] | [INFO] [stdout] 646 | _ => return bail!("Given algorithm does not use integer key and charset.") [INFO] [stdout] | ^^^^^^^-------------------------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:658:14 [INFO] [stdout] | [INFO] [stdout] 658 | _ => return bail!("Given algorithm does not use string key and charset.") [INFO] [stdout] | ^^^^^^^------------------------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:669:14 [INFO] [stdout] | [INFO] [stdout] 669 | _ => return bail!("Given algorithm does not use integer key or includes a charset.") [INFO] [stdout] | ^^^^^^^------------------------------------------------------------------------ [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:681:14 [INFO] [stdout] | [INFO] [stdout] 681 | _ => return bail!("Given algorithm does not use integer key and charset.") [INFO] [stdout] | ^^^^^^^-------------------------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:693:14 [INFO] [stdout] | [INFO] [stdout] 693 | _ => return bail!("Given algorithm does not use string key and charset.") [INFO] [stdout] | ^^^^^^^------------------------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:704:14 [INFO] [stdout] | [INFO] [stdout] 704 | _ => return bail!("Given algorithm does not use integer key or includes a charset.") [INFO] [stdout] | ^^^^^^^------------------------------------------------------------------------ [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:716:14 [INFO] [stdout] | [INFO] [stdout] 716 | _ => return bail!("Given algorithm does not use charset.") [INFO] [stdout] | ^^^^^^^---------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:727:14 [INFO] [stdout] | [INFO] [stdout] 727 | _ => return bail!("Given algorithm do use string key and charset") [INFO] [stdout] | ^^^^^^^------------------------------------------------------ [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:738:14 [INFO] [stdout] | [INFO] [stdout] 738 | _ => return bail!("Given algorithm do use charset.") [INFO] [stdout] | ^^^^^^^---------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/bin/main.rs:749:14 [INFO] [stdout] | [INFO] [stdout] 749 | _ => return bail!("Given algorithm don't have testing mode.") [INFO] [stdout] | ^^^^^^^------------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | any code following this expression is unreachable [INFO] [stdout] | unreachable expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `diesel::result::Error::DatabaseError` [INFO] [stdout] --> src/attack/caesar.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 140 | use diesel::result::Error::DatabaseError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OsStr` [INFO] [stdout] --> src/attack/database.rs:6:16 [INFO] [stdout] | [INFO] [stdout] 6 | use std::ffi::{OsStr, OsString}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Error` [INFO] [stdout] --> src/attack/database.rs:11:43 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::{ErrorKind, Result, ResultExt, Error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `DATABASE_STANDARD_PATH` should have an upper camel case name [INFO] [stdout] --> src/attack/database.rs:31:8 [INFO] [stdout] | [INFO] [stdout] 31 | struct DATABASE_STANDARD_PATH; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DatabaseStandardPath` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::OsStr` [INFO] [stdout] --> src/attack/database.rs:185:9 [INFO] [stdout] | [INFO] [stdout] 185 | use std::ffi::OsStr; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `read_to_string` [INFO] [stdout] --> src/attack/dictionaries.rs:542:50 [INFO] [stdout] | [INFO] [stdout] 542 | use std::fs::{create_dir, File, OpenOptions, read_to_string}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::OsString` [INFO] [stdout] --> src/attack/dictionaries.rs:548:9 [INFO] [stdout] | [INFO] [stdout] 548 | use std::ffi::OsString; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufReader` and `Read` [INFO] [stdout] --> src/attack/dictionaries.rs:550:26 [INFO] [stdout] | [INFO] [stdout] 550 | use std::io::{Write, BufReader, Read}; [INFO] [stdout] | ^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::env::temp_dir` [INFO] [stdout] --> src/attack/dictionaries.rs:552:9 [INFO] [stdout] | [INFO] [stdout] 552 | use std::env::temp_dir; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `cipher` [INFO] [stdout] --> src/attack/frequency.rs:5:48 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::cipher::vigenere::{DEFAULT_CHARSET, cipher, decipher}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::attack::dictionaries::tests::ENGLISH_TEXT_WITH_PUNCTUATIONS_MARKS` [INFO] [stdout] --> src/attack/frequency.rs:394:9 [INFO] [stdout] | [INFO] [stdout] 394 | use crate::attack::dictionaries::tests::ENGLISH_TEXT_WITH_PUNCTUATIONS_MARKS; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `F64Margin` [INFO] [stdout] --> src/attack/frequency.rs:399:31 [INFO] [stdout] | [INFO] [stdout] 399 | use float_cmp::{ApproxEq, F64Margin}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ResultExt` [INFO] [stdout] --> src/cipher/substitution.rs:2:32 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::{ErrorKind, Result, ResultExt, Error}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `has_error_description_deprecated` [INFO] [stdout] --> src/lib.rs:22:1 [INFO] [stdout] | [INFO] [stdout] 22 | / error_chain! { [INFO] [stdout] 23 | | types { [INFO] [stdout] 24 | | Error, ErrorKind, ResultExt, Result; [INFO] [stdout] ... | [INFO] [stdout] 80 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `docsrs`, `feature`, and `test` and 31 more [INFO] [stdout] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `impl_error_chain_processed` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the macro `impl_error_chain_processed` may come from an old version of the `error_chain` crate, try updating your dependency with `cargo update -p error_chain` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ciphered_file` [INFO] [stdout] --> src/bin/main.rs:428:13 [INFO] [stdout] | [INFO] [stdout] 428 | ciphered_file, charset } => { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try ignoring the field: `ciphered_file: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `deciphered_file` [INFO] [stdout] --> src/bin/main.rs:466:32 [INFO] [stdout] | [INFO] [stdout] 466 | file_to_decipher , deciphered_file, charset } => { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try ignoring the field: `deciphered_file: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `algorithm` [INFO] [stdout] --> src/bin/main.rs:521:25 [INFO] [stdout] | [INFO] [stdout] 521 | Modes::Cipher { algorithm, key, file_to_cipher, [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `algorithm: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/bin/main.rs:521:36 [INFO] [stdout] | [INFO] [stdout] 521 | Modes::Cipher { algorithm, key, file_to_cipher, [INFO] [stdout] | ^^^ help: try ignoring the field: `key: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_to_cipher` [INFO] [stdout] --> src/bin/main.rs:521:41 [INFO] [stdout] | [INFO] [stdout] 521 | Modes::Cipher { algorithm, key, file_to_cipher, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try ignoring the field: `file_to_cipher: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `charset` [INFO] [stdout] --> src/bin/main.rs:522:28 [INFO] [stdout] | [INFO] [stdout] 522 | ciphered_file, charset } => { [INFO] [stdout] | ^^^^^^^ help: try ignoring the field: `charset: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `algorithm` [INFO] [stdout] --> src/bin/main.rs:525:27 [INFO] [stdout] | [INFO] [stdout] 525 | Modes::Decipher { algorithm, key, file_to_decipher, [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `algorithm: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/bin/main.rs:525:38 [INFO] [stdout] | [INFO] [stdout] 525 | Modes::Decipher { algorithm, key, file_to_decipher, [INFO] [stdout] | ^^^ help: try ignoring the field: `key: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_to_decipher` [INFO] [stdout] --> src/bin/main.rs:525:43 [INFO] [stdout] | [INFO] [stdout] 525 | Modes::Decipher { algorithm, key, file_to_decipher, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try ignoring the field: `file_to_decipher: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `charset` [INFO] [stdout] --> src/bin/main.rs:526:30 [INFO] [stdout] | [INFO] [stdout] 526 | deciphered_file, charset }=> { [INFO] [stdout] | ^^^^^^^ help: try ignoring the field: `charset: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `algorithm` [INFO] [stdout] --> src/bin/main.rs:529:25 [INFO] [stdout] | [INFO] [stdout] 529 | Modes::Attack { algorithm, file_to_attack, [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `algorithm: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_to_attack` [INFO] [stdout] --> src/bin/main.rs:529:36 [INFO] [stdout] | [INFO] [stdout] 529 | Modes::Attack { algorithm, file_to_attack, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try ignoring the field: `file_to_attack: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `charset` [INFO] [stdout] --> src/bin/main.rs:530:30 [INFO] [stdout] | [INFO] [stdout] 530 | deciphered_file, charset, output_recovered_key [INFO] [stdout] | ^^^^^^^ help: try ignoring the field: `charset: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_recovered_key` [INFO] [stdout] --> src/bin/main.rs:563:26 [INFO] [stdout] | [INFO] [stdout] 563 | deciphered_file, output_recovered_key, charset [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try ignoring the field: `output_recovered_key: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stdout] --> src/bin/main.rs:1101:54 [INFO] [stdout] | [INFO] [stdout] 1101 | fn test_cipher_caesar(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stdout] --> src/bin/main.rs:1119:56 [INFO] [stdout] | [INFO] [stdout] 1119 | fn test_decipher_caesar(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stdout] --> src/bin/main.rs:1137:60 [INFO] [stdout] | [INFO] [stdout] 1137 | fn test_cipher_substitution(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stdout] --> src/bin/main.rs:1156:62 [INFO] [stdout] | [INFO] [stdout] 1156 | fn test_decipher_substitution(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stdout] --> src/bin/main.rs:1175:54 [INFO] [stdout] | [INFO] [stdout] 1175 | fn test_attack_caesar(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stdout] --> src/bin/main.rs:1192:73 [INFO] [stdout] | [INFO] [stdout] 1192 | fn test_attack_caesar_with_recovered_key(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stdout] --> src/bin/main.rs:1211:60 [INFO] [stdout] | [INFO] [stdout] 1211 | fn test_attack_substitution(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `get_string_key_algorithms`, `get_integer_key_algorithms`, and `get_string_value` are never used [INFO] [stdout] --> src/bin/main.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 43 | impl CipheringAlgorithms { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn get_string_key_algorithms()-> HashSet { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn get_integer_key_algorithms()-> HashSet { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn get_string_value(&self)-> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `temp_dir`, `languages`, `temp_env`, and `temp_env_var` are never read [INFO] [stdout] --> src/bin/main.rs:860:13 [INFO] [stdout] | [INFO] [stdout] 859 | pub struct LoadedDictionaries { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 860 | pub temp_dir: PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 861 | pub languages: Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 862 | temp_env: TestEnvironment, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 863 | temp_env_var: TemporalEnvironmentVariable [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Str` should have a snake case name [INFO] [stdout] --> src/bin/main.rs:69:19 [INFO] [stdout] | [INFO] [stdout] 69 | .map(|Str| Str.clone()) [INFO] [stdout] | ^^^ help: convert the identifier to snake case (notice the capitalization): `str` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:546:9 [INFO] [stdout] | [INFO] [stdout] 546 | write(output_file_path, output_string.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 546 | let _ = write(output_file_path, output_string.as_str()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:767:17 [INFO] [stdout] | [INFO] [stdout] 767 | new_dictionary.populate(pathname); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 767 | let _ = new_dictionary.populate(pathname); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:781:13 [INFO] [stdout] | [INFO] [stdout] 781 | dictionary.populate(pathname); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 781 | let _ = dictionary.populate(pathname); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Str` should have a snake case name [INFO] [stdout] --> src/bin/main.rs:813:48 [INFO] [stdout] | [INFO] [stdout] 813 | let args_str: Vec<&str> = args.iter().map(|Str| Str.as_str()).collect(); [INFO] [stdout] | ^^^ help: convert the identifier to snake case (notice the capitalization): `str` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:869:13 [INFO] [stdout] | [INFO] [stdout] 869 | database::create_database(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 869 | let _ = database::create_database(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:873:13 [INFO] [stdout] | [INFO] [stdout] 873 | create_dir(&resources_path); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 873 | let _ = create_dir(&resources_path); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:888:17 [INFO] [stdout] | [INFO] [stdout] 888 | dictionary.populate(language_book); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 888 | let _ = dictionary.populate(language_book); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `collect` that must be used [INFO] [stdout] --> src/bin/main.rs:891:13 [INFO] [stdout] | [INFO] [stdout] 891 | LANGUAGES.iter().map(|x| _languages.push(x.to_string())).collect::>(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 891 | let _ = LANGUAGES.iter().map(|x| _languages.push(x.to_string())).collect::>(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:1103:9 [INFO] [stdout] | [INFO] [stdout] 1103 | write(message_file.path(), CAESAR_ORIGINAL_MESSAGE); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 1103 | let _ = write(message_file.path(), CAESAR_ORIGINAL_MESSAGE); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:1121:9 [INFO] [stdout] | [INFO] [stdout] 1121 | write(message_file.path(), CAESAR_CIPHERED_MESSAGE_KEY_13); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 1121 | let _ = write(message_file.path(), CAESAR_CIPHERED_MESSAGE_KEY_13); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:1139:9 [INFO] [stdout] | [INFO] [stdout] 1139 | write(message_file.path(), SUBSTITUTION_ORIGINAL_MESSAGE); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 1139 | let _ = write(message_file.path(), SUBSTITUTION_ORIGINAL_MESSAGE); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:1158:9 [INFO] [stdout] | [INFO] [stdout] 1158 | write(message_file.path(), SUBSTITUTION_CIPHERED_MESSAGE); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 1158 | let _ = write(message_file.path(), SUBSTITUTION_CIPHERED_MESSAGE); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:1177:9 [INFO] [stdout] | [INFO] [stdout] 1177 | write(message_file.path(), CAESAR_CIPHERED_MESSAGE_KEY_13); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 1177 | let _ = write(message_file.path(), CAESAR_CIPHERED_MESSAGE_KEY_13); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:1194:9 [INFO] [stdout] | [INFO] [stdout] 1194 | write(message_file.path(), CAESAR_CIPHERED_MESSAGE_KEY_13); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 1194 | let _ = write(message_file.path(), CAESAR_CIPHERED_MESSAGE_KEY_13); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/main.rs:1221:9 [INFO] [stdout] | [INFO] [stdout] 1221 | write(message_file.path(), ciphered_text); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 1221 | let _ = write(message_file.path(), ciphered_text); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `loaded_dictionaries` [INFO] [stdout] --> src/attack/affine.rs:144:13 [INFO] [stdout] | [INFO] [stdout] 144 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `loaded_dictionaries` [INFO] [stdout] --> src/attack/affine.rs:153:13 [INFO] [stdout] | [INFO] [stdout] 153 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `loaded_dictionaries` [INFO] [stdout] --> src/attack/caesar.rs:148:13 [INFO] [stdout] | [INFO] [stdout] 148 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `loaded_dictionaries` [INFO] [stdout] --> src/attack/caesar.rs:157:13 [INFO] [stdout] | [INFO] [stdout] 157 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `test_env` [INFO] [stdout] --> src/attack/database.rs:201:13 [INFO] [stdout] | [INFO] [stdout] 201 | let test_env = TemporalEnvironmentVariable::new("DATABASE_URL", absolute_pathname_to_database); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_test_env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_dir` [INFO] [stdout] --> src/attack/dictionaries.rs:809:14 [INFO] [stdout] | [INFO] [stdout] 809 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_env_database_path` [INFO] [stdout] --> src/attack/dictionaries.rs:809:24 [INFO] [stdout] | [INFO] [stdout] 809 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_dir` [INFO] [stdout] --> src/attack/dictionaries.rs:818:14 [INFO] [stdout] | [INFO] [stdout] 818 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_env_database_path` [INFO] [stdout] --> src/attack/dictionaries.rs:818:24 [INFO] [stdout] | [INFO] [stdout] 818 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_dir` [INFO] [stdout] --> src/attack/dictionaries.rs:835:14 [INFO] [stdout] | [INFO] [stdout] 835 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_env_database_path` [INFO] [stdout] --> src/attack/dictionaries.rs:835:24 [INFO] [stdout] | [INFO] [stdout] 835 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_dir` [INFO] [stdout] --> src/attack/dictionaries.rs:850:14 [INFO] [stdout] | [INFO] [stdout] 850 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_env_database_path` [INFO] [stdout] --> src/attack/dictionaries.rs:850:24 [INFO] [stdout] | [INFO] [stdout] 850 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_dir` [INFO] [stdout] --> src/attack/dictionaries.rs:865:14 [INFO] [stdout] | [INFO] [stdout] 865 | let (temp_dir, temp_env_database_path) = loaded_micro_dictionary_temp_dir(); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_env_database_path` [INFO] [stdout] --> src/attack/dictionaries.rs:865:24 [INFO] [stdout] | [INFO] [stdout] 865 | let (temp_dir, temp_env_database_path) = loaded_micro_dictionary_temp_dir(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/dictionaries.rs:864:13 [INFO] [stdout] | [INFO] [stdout] 864 | let mut micro_dictionaries = get_micro_dictionaries_content(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_env_database_path` [INFO] [stdout] --> src/attack/dictionaries.rs:902:24 [INFO] [stdout] | [INFO] [stdout] 902 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_dir` [INFO] [stdout] --> src/attack/dictionaries.rs:944:14 [INFO] [stdout] | [INFO] [stdout] 944 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_env_database_path` [INFO] [stdout] --> src/attack/dictionaries.rs:944:24 [INFO] [stdout] | [INFO] [stdout] 944 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `loaded_dictionaries` [INFO] [stdout] --> src/attack/dictionaries.rs:959:13 [INFO] [stdout] | [INFO] [stdout] 959 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_dir` [INFO] [stdout] --> src/attack/dictionaries.rs:990:14 [INFO] [stdout] | [INFO] [stdout] 990 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_env_database_path` [INFO] [stdout] --> src/attack/dictionaries.rs:990:24 [INFO] [stdout] | [INFO] [stdout] 990 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `loaded_micro_dictionary_temp_dir` [INFO] [stdout] --> src/attack/dictionaries.rs:1020:27 [INFO] [stdout] | [INFO] [stdout] 1020 | fn test_get_all_words(loaded_micro_dictionary_temp_dir: (TestEnvironment, TemporalEnvironmentVariable)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_micro_dictionary_temp_dir` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `E` [INFO] [stdout] --> src/attack/simple_attacks.rs:165:25 [INFO] [stdout] | [INFO] [stdout] 165 | Err(E) => return None [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_E` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `loaded_micro_dictionary_temp_dir` [INFO] [stdout] --> src/attack/simple_attacks.rs:281:43 [INFO] [stdout] | [INFO] [stdout] 281 | fn test_dictionary_word_key_generator(loaded_micro_dictionary_temp_dir: (TestEnvironment, TemporalEnvironmentVariable)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_micro_dictionary_temp_dir` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `loaded_dictionaries` [INFO] [stdout] --> src/attack/substitution.rs:872:13 [INFO] [stdout] | [INFO] [stdout] 872 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `loaded_dictionaries` [INFO] [stdout] --> src/attack/substitution.rs:894:13 [INFO] [stdout] | [INFO] [stdout] 894 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `missing` [INFO] [stdout] --> src/attack/substitution.rs:1125:13 [INFO] [stdout] | [INFO] [stdout] 1125 | let missing: Vec = expected_list.iter().cloned().filter(|_mapping| !recovered_mappings.contains(&_mapping)).collect(); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_missing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/substitution.rs:1073:13 [INFO] [stdout] | [INFO] [stdout] 1073 | let mut expected_mapping_1 = mapping!(THIS_TEST_CHARSET, {"1": {"a"}, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/substitution.rs:1078:13 [INFO] [stdout] | [INFO] [stdout] 1078 | let mut expected_mapping_2 = mapping!(THIS_TEST_CHARSET, {"1": {"a"}, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/substitution.rs:1083:13 [INFO] [stdout] | [INFO] [stdout] 1083 | let mut expected_mapping_3 = mapping!(THIS_TEST_CHARSET, {"1": {"b"}, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/substitution.rs:1088:13 [INFO] [stdout] | [INFO] [stdout] 1088 | let mut expected_mapping_4 = mapping!(THIS_TEST_CHARSET, {"1": {"b"}, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/substitution.rs:1093:13 [INFO] [stdout] | [INFO] [stdout] 1093 | let mut expected_mapping_5 = mapping!(THIS_TEST_CHARSET, {"1": {"a"}, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/substitution.rs:1098:13 [INFO] [stdout] | [INFO] [stdout] 1098 | let mut expected_mapping_6 = mapping!(THIS_TEST_CHARSET, {"1": {"a"}, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/substitution.rs:1103:13 [INFO] [stdout] | [INFO] [stdout] 1103 | let mut expected_mapping_7 = mapping!(THIS_TEST_CHARSET, {"1": {"b"}, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/substitution.rs:1108:13 [INFO] [stdout] | [INFO] [stdout] 1108 | let mut expected_mapping_8 = mapping!(THIS_TEST_CHARSET, {"1": {"b"}, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/substitution.rs:1113:13 [INFO] [stdout] | [INFO] [stdout] 1113 | let mut expected_list = vec![ [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/substitution.rs:1155:13 [INFO] [stdout] | [INFO] [stdout] 1155 | let mut mapping = mapping!(TEST_CHARSET, [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `extracted_candidates` [INFO] [stdout] --> src/attack/substitution.rs:1210:38 [INFO] [stdout] | [INFO] [stdout] 1210 | let (extracted_cipherletter, extracted_candidates) = mapping.pop_item() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_extracted_candidates` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `loaded_dictionaries` [INFO] [stdout] --> src/attack/transposition.rs:100:13 [INFO] [stdout] | [INFO] [stdout] 100 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `loaded_dictionaries` [INFO] [stdout] --> src/attack/transposition.rs:109:13 [INFO] [stdout] | [INFO] [stdout] 109 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/attack/frequency.rs:126:28 [INFO] [stdout] | [INFO] [stdout] 126 | .filter(|(&key, &_value)| _value == *value) [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/attack/frequency.rs:157:25 [INFO] [stdout] | [INFO] [stdout] 157 | .map(|(key, value)| key) [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/attack/frequency.rs:164:25 [INFO] [stdout] | [INFO] [stdout] 164 | .map(|(key, value)| key) [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `char` [INFO] [stdout] --> src/attack/frequency.rs:256:13 [INFO] [stdout] | [INFO] [stdout] 256 | for (i, char) in char_string.chars().enumerate() { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_char` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/attack/frequency.rs:269:28 [INFO] [stdout] | [INFO] [stdout] 269 | let mut values = sequences.get_mut(sequence_to_find).unwrap(); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/attack/frequency.rs:383:21 [INFO] [stdout] | [INFO] [stdout] 383 | .map(|(key, value)| key) [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ciphered_text` [INFO] [stdout] --> src/attack/vigenere.rs:36:26 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn brute_force(ciphered_text: T, charset: U, testing: bool)-> Result [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ciphered_text` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `charset` [INFO] [stdout] --> src/attack/vigenere.rs:36:44 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn brute_force(ciphered_text: T, charset: U, testing: bool)-> Result [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_charset` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `testing` [INFO] [stdout] --> src/attack/vigenere.rs:36:56 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn brute_force(ciphered_text: T, charset: U, testing: bool)-> Result [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_testing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ciphered_text` [INFO] [stdout] --> src/attack/vigenere.rs:47:23 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn brute_force_mp(ciphered_text: &str, charset: &str, testing: bool)-> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ciphered_text` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `charset` [INFO] [stdout] --> src/attack/vigenere.rs:47:44 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn brute_force_mp(ciphered_text: &str, charset: &str, testing: bool)-> Result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_charset` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `testing` [INFO] [stdout] --> src/attack/vigenere.rs:47:59 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn brute_force_mp(ciphered_text: &str, charset: &str, testing: bool)-> Result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_testing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/cipher/transposition.rs:324:13 [INFO] [stdout] | [INFO] [stdout] 324 | let mut transposition_matrix = vec![ [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset_char` is never read [INFO] [stdout] --> src/cipher/vigenere.rs:101:17 [INFO] [stdout] | [INFO] [stdout] 101 | let mut offset_char = String::new(); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_best_result` is never used [INFO] [stdout] --> src/attack/caesar.rs:114:4 [INFO] [stdout] | [INFO] [stdout] 114 | fn get_best_result(identified_languages: &Vec<(usize, IdentifiedLanguage)>)-> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `database_path` is never read [INFO] [stdout] --> src/attack/database.rs:98:5 [INFO] [stdout] | [INFO] [stdout] 96 | pub struct Database { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 97 | pub session: DatabaseSession, [INFO] [stdout] 98 | database_path: String [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `candidates` is never read [INFO] [stdout] --> src/attack/dictionaries.rs:410:5 [INFO] [stdout] | [INFO] [stdout] 407 | pub struct IdentifiedLanguage { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 410 | candidates: HashMap [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `temp_env` and `temp_env_var` are never read [INFO] [stdout] --> src/attack/dictionaries.rs:659:9 [INFO] [stdout] | [INFO] [stdout] 656 | pub struct LoadedDictionaries { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 659 | temp_env: TestEnvironment, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 660 | temp_env_var: TemporalEnvironmentVariable [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `text_file` is never read [INFO] [stdout] --> src/attack/dictionaries.rs:752:13 [INFO] [stdout] | [INFO] [stdout] 751 | struct TemporaryTextFile { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] 752 | pub text_file: File, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `start` is never read [INFO] [stdout] --> src/attack/simple_attacks.rs:89:5 [INFO] [stdout] | [INFO] [stdout] 88 | struct IntegerKeyIterator { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] 89 | start: usize, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `create_new_single_entry` is never used [INFO] [stdout] --> src/attack/substitution.rs:723:8 [INFO] [stdout] | [INFO] [stdout] 386 | impl Mapping { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 723 | fn create_new_single_entry(&mut self, key: char, value: char) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `language` is never read [INFO] [stdout] --> src/attack/substitution.rs:817:9 [INFO] [stdout] | [INFO] [stdout] 815 | struct TestSet { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 816 | text_file: &'static str, [INFO] [stdout] 817 | language: &'static str, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_dict` is never used [INFO] [stdout] --> src/attack/frequency.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 22 | impl LetterHistogram { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 67 | fn from_dict(letters: HashMap, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `MultiplyingKeyBelowZero` and `AddingKeyBelowZero` are never constructed [INFO] [stdout] --> src/cipher/affine.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 16 | enum WrongAffineKeyCauses { [INFO] [stdout] | -------------------- variants in this enum [INFO] [stdout] 17 | MultiplyingKeyBelowZero, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 18 | MultiplyingKeyZero, [INFO] [stdout] 19 | AddingKeyBelowZero, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WrongAffineKeyCauses` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait method `fromStr` should have a snake case name [INFO] [stdout] --> src/lib.rs:85:8 [INFO] [stdout] | [INFO] [stdout] 85 | fn fromStr(s: T) -> Self; [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `from_str` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait method `findFromIndex` should have a snake case name [INFO] [stdout] --> src/lib.rs:106:8 [INFO] [stdout] | [INFO] [stdout] 106 | fn findFromIndex(text: &T, text_to_find: U, index: usize) -> Option; [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `find_from_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/database.rs:129:13 [INFO] [stdout] | [INFO] [stdout] 129 | create_folder_path(database_folder); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 129 | let _ = create_folder_path(database_folder); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:148:10 [INFO] [stdout] | [INFO] [stdout] 148 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^-------- [INFO] [stdout] | | [INFO] [stdout] | `Queryable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_queryable_for_language` [INFO] [stdout] ... [INFO] [stdout] 151 | pub struct Language { [INFO] [stdout] | -------- `Language` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Queryable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Queryable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Queryable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:148:21 [INFO] [stdout] | [INFO] [stdout] 148 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^----------- [INFO] [stdout] | | [INFO] [stdout] | `HasTable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_identifiable_for_language` [INFO] [stdout] ... [INFO] [stdout] 151 | pub struct Language { [INFO] [stdout] | -------- `Language` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:148:21 [INFO] [stdout] | [INFO] [stdout] 148 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Identifiable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_identifiable_for_language` [INFO] [stdout] ... [INFO] [stdout] 151 | pub struct Language { [INFO] [stdout] | -------- `Language` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:156:10 [INFO] [stdout] | [INFO] [stdout] 156 | #[derive(Insertable)] [INFO] [stdout] | ^--------- [INFO] [stdout] | | [INFO] [stdout] | `Insertable` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newlanguage` [INFO] [stdout] 157 | #[table_name="languages"] [INFO] [stdout] 158 | pub struct NewLanguage<'a> { [INFO] [stdout] | ----------- `NewLanguage` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:156:10 [INFO] [stdout] | [INFO] [stdout] 156 | #[derive(Insertable)] [INFO] [stdout] | -^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Insertable` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newlanguage` [INFO] [stdout] 157 | #[table_name="languages"] [INFO] [stdout] 158 | pub struct NewLanguage<'a> { [INFO] [stdout] | ----------- `NewLanguage` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:156:10 [INFO] [stdout] | [INFO] [stdout] 156 | #[derive(Insertable)] [INFO] [stdout] | ^--------- [INFO] [stdout] | | [INFO] [stdout] | `UndecoratedInsertRecord` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newlanguage` [INFO] [stdout] 157 | #[table_name="languages"] [INFO] [stdout] 158 | pub struct NewLanguage<'a> { [INFO] [stdout] | ----------- `NewLanguage` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:164:10 [INFO] [stdout] | [INFO] [stdout] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^-------- [INFO] [stdout] | | [INFO] [stdout] | `Queryable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_queryable_for_word` [INFO] [stdout] ... [INFO] [stdout] 167 | pub struct Word { [INFO] [stdout] | ---- `Word` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Queryable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Queryable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Queryable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:164:21 [INFO] [stdout] | [INFO] [stdout] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^----------- [INFO] [stdout] | | [INFO] [stdout] | `HasTable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_identifiable_for_word` [INFO] [stdout] ... [INFO] [stdout] 167 | pub struct Word { [INFO] [stdout] | ---- `Word` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:164:21 [INFO] [stdout] | [INFO] [stdout] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Identifiable` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_identifiable_for_word` [INFO] [stdout] ... [INFO] [stdout] 167 | pub struct Word { [INFO] [stdout] | ---- `Word` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:164:35 [INFO] [stdout] | [INFO] [stdout] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stdout] | ^----------- [INFO] [stdout] | | [INFO] [stdout] | `BelongsTo` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_associations_for_word` [INFO] [stdout] 165 | #[table_name="words"] [INFO] [stdout] 166 | #[belongs_to(Language)] [INFO] [stdout] | -------- `Language` is not local [INFO] [stdout] 167 | pub struct Word { [INFO] [stdout] | ---- `Word` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Associations` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Associations` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Associations` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:174:10 [INFO] [stdout] | [INFO] [stdout] 174 | #[derive(Insertable)] [INFO] [stdout] | ^--------- [INFO] [stdout] | | [INFO] [stdout] | `Insertable` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newword` [INFO] [stdout] 175 | #[table_name="words"] [INFO] [stdout] 176 | pub struct NewWord<'a> { [INFO] [stdout] | ------- `NewWord` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:174:10 [INFO] [stdout] | [INFO] [stdout] 174 | #[derive(Insertable)] [INFO] [stdout] | -^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Insertable` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newword` [INFO] [stdout] 175 | #[table_name="words"] [INFO] [stdout] 176 | pub struct NewWord<'a> { [INFO] [stdout] | ------- `NewWord` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/attack/database.rs:174:10 [INFO] [stdout] | [INFO] [stdout] 174 | #[derive(Insertable)] [INFO] [stdout] | ^--------- [INFO] [stdout] | | [INFO] [stdout] | `UndecoratedInsertRecord` is not local [INFO] [stdout] | `table` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_insertable_for_newword` [INFO] [stdout] 175 | #[table_name="words"] [INFO] [stdout] 176 | pub struct NewWord<'a> { [INFO] [stdout] | ------- `NewWord` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/database.rs:202:9 [INFO] [stdout] | [INFO] [stdout] 202 | create_database(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 202 | let _ = create_database(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/database.rs:213:9 [INFO] [stdout] | [INFO] [stdout] 213 | create_folder_path(database_folder); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 213 | let _ = create_folder_path(database_folder); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/attack/dictionaries.rs:164:41 [INFO] [stdout] | [INFO] [stdout] 164 | let _word_clone = _word.as_ref().clone(); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/attack/dictionaries.rs:340:17 [INFO] [stdout] | [INFO] [stdout] 340 | pub fn iter(&self) -> InsertionOrderedSetIterator { [INFO] [stdout] | ^^^^^ ------------------------------ the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 340 | pub fn iter(&self) -> InsertionOrderedSetIterator<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:666:13 [INFO] [stdout] | [INFO] [stdout] 666 | database::create_database(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 666 | let _ = database::create_database(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:670:13 [INFO] [stdout] | [INFO] [stdout] 670 | create_dir(&resources_path); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 670 | let _ = create_dir(&resources_path); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:685:17 [INFO] [stdout] | [INFO] [stdout] 685 | dictionary.populate(language_book); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 685 | let _ = dictionary.populate(language_book); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:688:13 [INFO] [stdout] | [INFO] [stdout] 688 | LANGUAGES.iter().map(|x| _languages.push(x.to_string())).collect::>(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 688 | let _ = LANGUAGES.iter().map(|x| _languages.push(x.to_string())).collect::>(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:731:9 [INFO] [stdout] | [INFO] [stdout] 731 | database::create_database(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 731 | let _ = database::create_database(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:737:13 [INFO] [stdout] | [INFO] [stdout] 737 | _words.iter().map(|_word| language_dictionary.add_word(_word)).collect::>(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 737 | let _ = _words.iter().map(|_word| language_dictionary.add_word(_word)).collect::>(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:772:13 [INFO] [stdout] | [INFO] [stdout] 772 | text_file.write_all(text.as_ref().as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 772 | let _ = text_file.write_all(text.as_ref().as_bytes()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:819:9 [INFO] [stdout] | [INFO] [stdout] 819 | database::create_database(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 819 | let _ = database::create_database(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:822:13 [INFO] [stdout] | [INFO] [stdout] 822 | Dictionary::new("english", true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 822 | let _ = Dictionary::new("english", true); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:836:9 [INFO] [stdout] | [INFO] [stdout] 836 | database::create_database(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 836 | let _ = database::create_database(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:867:9 [INFO] [stdout] | [INFO] [stdout] 867 | Dictionary::remove_dictionary(language_to_remove); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 867 | let _ = Dictionary::remove_dictionary(language_to_remove); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:889:13 [INFO] [stdout] | [INFO] [stdout] 889 | ... temporary_text.normalized_text.to_lowercase().split_ascii_whitespace().map(|_word| expected_set.insert(_word.to_string())).collect::>(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 889 | let _ = temporary_text.normalized_text.to_lowercase().split_ascii_whitespace().map(|_word| expected_set.insert(_word.to_string())).collect::>(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:903:9 [INFO] [stdout] | [INFO] [stdout] 903 | database::create_database(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 903 | let _ = database::create_database(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:911:9 [INFO] [stdout] | [INFO] [stdout] 911 | expected_lowercase_content.split_ascii_whitespace().map(|x| expected_set.insert(x)).collect::>(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 911 | let _ = expected_lowercase_content.split_ascii_whitespace().map(|x| expected_set.insert(x)).collect::>(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:915:13 [INFO] [stdout] | [INFO] [stdout] 915 | dictionary.populate(temporary_text_file.temp_filename.as_path()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 915 | let _ = dictionary.populate(temporary_text_file.temp_filename.as_path()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:929:13 [INFO] [stdout] | [INFO] [stdout] 929 | test_tuple.2.to_lowercase().split_ascii_whitespace().map(|_word| expected_set.insert(_word.to_string())).collect::>(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 929 | let _ = test_tuple.2.to_lowercase().split_ascii_whitespace().map(|_word| expected_set.insert(_word.to_string())).collect::>(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:945:9 [INFO] [stdout] | [INFO] [stdout] 945 | database::create_database(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 945 | let _ = database::create_database(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:949:9 [INFO] [stdout] | [INFO] [stdout] 949 | micro_dictionaries[_language].iter().map(|_word| words_to_add.insert(_word.clone())).collect::>(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 949 | let _ = micro_dictionaries[_language].iter().map(|_word| words_to_add.insert(_word.clone())).collect::>(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/dictionaries.rs:991:9 [INFO] [stdout] | [INFO] [stdout] 991 | database::create_database(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 991 | let _ = database::create_database(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/attack/simple_attacks.rs:165:25 [INFO] [stdout] | [INFO] [stdout] 165 | Err(E) => return None [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/attack/substitution.rs:877:21 [INFO] [stdout] | [INFO] [stdout] 877 | Err(E) => {assert!(false, E); String::new()} [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/attack/substitution.rs:877:43 [INFO] [stdout] | [INFO] [stdout] 877 | Err(E) => {assert!(false, E); String::new()} [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(non_fmt_panics)]` on by default [INFO] [stdout] help: add a "{}" format string to `Display` the message [INFO] [stdout] | [INFO] [stdout] 877 | Err(E) => {assert!(false, "{}", E); String::new()} [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/attack/substitution.rs:899:21 [INFO] [stdout] | [INFO] [stdout] 899 | Err(E) => {assert!(false, E); String::new()} [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/attack/substitution.rs:899:43 [INFO] [stdout] | [INFO] [stdout] 899 | Err(E) => {assert!(false, E); String::new()} [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: add a "{}" format string to `Display` the message [INFO] [stdout] | [INFO] [stdout] 899 | Err(E) => {assert!(false, "{}", E); String::new()} [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/attack/substitution.rs:913:17 [INFO] [stdout] | [INFO] [stdout] 913 | Err(E) => {assert!(false, E); PathBuf::new()} [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/attack/substitution.rs:913:39 [INFO] [stdout] | [INFO] [stdout] 913 | Err(E) => {assert!(false, E); PathBuf::new()} [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: add a "{}" format string to `Display` the message [INFO] [stdout] | [INFO] [stdout] 913 | Err(E) => {assert!(false, "{}", E); PathBuf::new()} [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/attack/substitution.rs:918:17 [INFO] [stdout] | [INFO] [stdout] 918 | Err(E) => {assert!(false, E); File::create("/tmp").unwrap()} [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/attack/substitution.rs:918:39 [INFO] [stdout] | [INFO] [stdout] 918 | Err(E) => {assert!(false, E); File::create("/tmp").unwrap()} [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: add a "{}" format string to `Display` the message [INFO] [stdout] | [INFO] [stdout] 918 | Err(E) => {assert!(false, "{}", E); File::create("/tmp").unwrap()} [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/attack/substitution.rs:923:17 [INFO] [stdout] | [INFO] [stdout] 923 | Err(E) => {assert!(false, E); ()} [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/attack/substitution.rs:923:39 [INFO] [stdout] | [INFO] [stdout] 923 | Err(E) => {assert!(false, E); ()} [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: add a "{}" format string to `Display` the message [INFO] [stdout] | [INFO] [stdout] 923 | Err(E) => {assert!(false, "{}", E); ()} [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/attack/substitution.rs:939:17 [INFO] [stdout] | [INFO] [stdout] 939 | Err(E) => {assert!(false, E); String::new()} [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/attack/substitution.rs:939:39 [INFO] [stdout] | [INFO] [stdout] 939 | Err(E) => {assert!(false, E); String::new()} [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: add a "{}" format string to `Display` the message [INFO] [stdout] | [INFO] [stdout] 939 | Err(E) => {assert!(false, "{}", E); String::new()} [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `THIS_TEST_CHARSET` should have a snake case name [INFO] [stdout] --> src/attack/substitution.rs:1065:13 [INFO] [stdout] | [INFO] [stdout] 1065 | let THIS_TEST_CHARSET = "12345"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `this_test_charset` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/attack/substitution.rs:1213:17 [INFO] [stdout] | [INFO] [stdout] 1213 | format!("Extracted key {} was not among original ones.", &extracted_cipherletter)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] help: remove the `format!(..)` macro call [INFO] [stdout] | [INFO] [stdout] 1213 - format!("Extracted key {} was not among original ones.", &extracted_cipherletter)); [INFO] [stdout] 1213 + "Extracted key {} was not among original ones.", &extracted_cipherletter); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/attack/substitution.rs:1223:17 [INFO] [stdout] | [INFO] [stdout] 1223 | format!("Extracted cipherletter {} was not removed from mapping", &extracted_cipherletter)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] help: remove the `format!(..)` macro call [INFO] [stdout] | [INFO] [stdout] 1223 - format!("Extracted cipherletter {} was not removed from mapping", &extracted_cipherletter)); [INFO] [stdout] 1223 + "Extracted cipherletter {} was not removed from mapping", &extracted_cipherletter); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/attack/substitution.rs:1229:20 [INFO] [stdout] | [INFO] [stdout] 1229 | if let Err(E) = mapping.pop_item() { [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/attack/substitution.rs:1232:41 [INFO] [stdout] | [INFO] [stdout] 1232 | error => assert!(false, format!("Raised error was not the one \ [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 1233 | | we were expecting but {} instead", error)) [INFO] [stdout] | |___________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] help: remove the `format!(..)` macro call [INFO] [stdout] | [INFO] [stdout] 1232 ~ error => assert!(false, "Raised error was not the one \ [INFO] [stdout] 1233 ~ we were expecting but {} instead", error) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `item_A` should have a snake case name [INFO] [stdout] --> src/attack/frequency.rs:122:34 [INFO] [stdout] | [INFO] [stdout] 122 | values_ordered.sort_by(|&item_A, &item_B| item_B.cmp(item_A)); [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `item_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `item_B` should have a snake case name [INFO] [stdout] --> src/attack/frequency.rs:122:43 [INFO] [stdout] | [INFO] [stdout] 122 | values_ordered.sort_by(|&item_A, &item_B| item_B.cmp(item_A)); [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `item_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/frequency.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | ordered_dict_iter.advance_by(self.ordered_dict.len()-width); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 162 | let _ = ordered_dict_iter.advance_by(self.ordered_dict.len()-width); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/attack/frequency.rs:190:16 [INFO] [stdout] | [INFO] [stdout] 190 | fn letters(&self) -> linked_hash_map::Keys { [INFO] [stdout] | ^^^^^ -------------------------------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 190 | fn letters(&self) -> linked_hash_map::Keys<'_, char, u64> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/attack/frequency.rs:334:9 [INFO] [stdout] | [INFO] [stdout] 334 | ciphered_stream_iter.advance_by(i); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 334 | let _ = ciphered_stream_iter.advance_by(i); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `item_A` should have a snake case name [INFO] [stdout] --> src/cipher/common.rs:186:25 [INFO] [stdout] | [INFO] [stdout] 186 | items.sort_by(|&item_A, &item_B| item_B.1.cmp(item_A.1)); [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `item_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `item_B` should have a snake case name [INFO] [stdout] --> src/cipher/common.rs:186:34 [INFO] [stdout] | [INFO] [stdout] 186 | items.sort_by(|&item_A, &item_B| item_B.1.cmp(item_A.1)); [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `item_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/cipher/substitution.rs:170:17 [INFO] [stdout] | [INFO] [stdout] 170 | Err(E) => { [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/cipher/substitution.rs:171:32 [INFO] [stdout] | [INFO] [stdout] 171 | assert!(false, format!("Error happened: {}", E)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] help: remove the `format!(..)` macro call [INFO] [stdout] | [INFO] [stdout] 171 - assert!(false, format!("Error happened: {}", E)) [INFO] [stdout] 171 + assert!(false, "Error happened: {}", E) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/cipher/substitution.rs:182:17 [INFO] [stdout] | [INFO] [stdout] 182 | Err(E) => { [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/cipher/substitution.rs:183:32 [INFO] [stdout] | [INFO] [stdout] 183 | assert!(false, format!("Error happened: {}", E)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] help: remove the `format!(..)` macro call [INFO] [stdout] | [INFO] [stdout] 183 - assert!(false, format!("Error happened: {}", E)) [INFO] [stdout] 183 + assert!(false, "Error happened: {}", E) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/cipher/substitution.rs:192:20 [INFO] [stdout] | [INFO] [stdout] 192 | if let Err(E) = cipher("", wrong_key, test_charset) { [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/cipher/substitution.rs:195:41 [INFO] [stdout] | [INFO] [stdout] 195 | error => assert!(false, format!("Raised error was not the one \ [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 196 | | we were expecting but {} instead", error)) [INFO] [stdout] | |___________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] help: remove the `format!(..)` macro call [INFO] [stdout] | [INFO] [stdout] 195 ~ error => assert!(false, "Raised error was not the one \ [INFO] [stdout] 196 ~ we were expecting but {} instead", error) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `E` should have a snake case name [INFO] [stdout] --> src/cipher/substitution.rs:205:20 [INFO] [stdout] | [INFO] [stdout] 205 | if let Err(E) = cipher("", wrong_key, test_charset) { [INFO] [stdout] | ^ help: convert the identifier to snake case: `e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/cipher/substitution.rs:208:41 [INFO] [stdout] | [INFO] [stdout] 208 | error => assert!(false, format!("Raised error was not the one \ [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 209 | | we were expecting but {} instead", error)) [INFO] [stdout] | |___________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] help: remove the `format!(..)` macro call [INFO] [stdout] | [INFO] [stdout] 208 ~ error => assert!(false, "Raised error was not the one \ [INFO] [stdout] 209 ~ we were expecting but {} instead", error) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / table! { [INFO] [stdout] 2 | | languages (id) { [INFO] [stdout] 3 | | id -> Integer, [INFO] [stdout] 4 | | language -> Text, [INFO] [stdout] 5 | | } [INFO] [stdout] 6 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | | `table` is not local [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_table` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / table! { [INFO] [stdout] 2 | | languages (id) { [INFO] [stdout] 3 | | id -> Integer, [INFO] [stdout] | | -- `id` is not local [INFO] [stdout] 4 | | language -> Text, [INFO] [stdout] 5 | | } [INFO] [stdout] 6 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_id` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / table! { [INFO] [stdout] 2 | | languages (id) { [INFO] [stdout] 3 | | id -> Integer, [INFO] [stdout] 4 | | language -> Text, [INFO] [stdout] | | -------- `language` is not local [INFO] [stdout] 5 | | } [INFO] [stdout] 6 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_language` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] ... | [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | | `table` is not local [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_table` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] | | -- `id` is not local [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] ... | [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_id` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] | | ---- `word` is not local [INFO] [stdout] ... | [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_word` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] 12 | | word_pattern -> Text, [INFO] [stdout] | | ------------ `word_pattern` is not local [INFO] [stdout] ... | [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_word_pattern` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/schema.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / table! { [INFO] [stdout] 9 | | words (id) { [INFO] [stdout] 10 | | id -> Integer, [INFO] [stdout] 11 | | word -> Text, [INFO] [stdout] 12 | | word_pattern -> Text, [INFO] [stdout] 13 | | language_id -> Integer, [INFO] [stdout] | | ----------- `language_id` is not local [INFO] [stdout] 14 | | } [INFO] [stdout] 15 | | } [INFO] [stdout] | | ^ [INFO] [stdout] | | | [INFO] [stdout] | |_`QueryId` is not local [INFO] [stdout] | move the `impl` block outside of this function `_impl_query_id_for_language_id` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 15.26s [INFO] running `Command { std: "docker" "inspect" "fcaffc9d8ea2896f3beb5900913ca6782ef5bc3dc84104a54591b83210b0b508", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fcaffc9d8ea2896f3beb5900913ca6782ef5bc3dc84104a54591b83210b0b508", kill_on_drop: false }` [INFO] [stdout] fcaffc9d8ea2896f3beb5900913ca6782ef5bc3dc84104a54591b83210b0b508 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "test" "--frozen" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] 2da8ea586aba9289481b6be8d9ddba49c2c73a3083aa8cb14108612219416f49 [INFO] running `Command { std: "docker" "start" "-a" "2da8ea586aba9289481b6be8d9ddba49c2c73a3083aa8cb14108612219416f49", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `OsStr` [INFO] [stderr] --> src/attack/database.rs:6:16 [INFO] [stderr] | [INFO] [stderr] 6 | use std::ffi::{OsStr, OsString}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Error` [INFO] [stderr] --> src/attack/database.rs:11:43 [INFO] [stderr] | [INFO] [stderr] 11 | use crate::{ErrorKind, Result, ResultExt, Error}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `DATABASE_STANDARD_PATH` should have an upper camel case name [INFO] [stderr] --> src/attack/database.rs:31:8 [INFO] [stderr] | [INFO] [stderr] 31 | struct DATABASE_STANDARD_PATH; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DatabaseStandardPath` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `cipher` [INFO] [stderr] --> src/attack/frequency.rs:5:48 [INFO] [stderr] | [INFO] [stderr] 5 | use crate::cipher::vigenere::{DEFAULT_CHARSET, cipher, decipher}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Error` and `ResultExt` [INFO] [stderr] --> src/cipher/substitution.rs:2:32 [INFO] [stderr] | [INFO] [stderr] 2 | use crate::{ErrorKind, Result, ResultExt, Error}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unexpected `cfg` condition name: `has_error_description_deprecated` [INFO] [stderr] --> src/lib.rs:22:1 [INFO] [stderr] | [INFO] [stderr] 22 | / error_chain! { [INFO] [stderr] 23 | | types { [INFO] [stderr] 24 | | Error, ErrorKind, ResultExt, Result; [INFO] [stderr] ... | [INFO] [stderr] 80 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: expected names are: `docsrs`, `feature`, and `test` and 31 more [INFO] [stderr] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stderr] = help: try referring to `impl_error_chain_processed` crate for guidance on how handle this unexpected cfg [INFO] [stderr] = help: the macro `impl_error_chain_processed` may come from an old version of the `error_chain` crate, try updating your dependency with `cargo update -p error_chain` [INFO] [stderr] = note: see for more information about checking conditional configuration [INFO] [stderr] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stderr] = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused variable: `E` [INFO] [stderr] --> src/attack/simple_attacks.rs:165:25 [INFO] [stderr] | [INFO] [stderr] 165 | Err(E) => return None [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_E` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `key` [INFO] [stderr] --> src/attack/frequency.rs:126:28 [INFO] [stderr] | [INFO] [stderr] 126 | .filter(|(&key, &_value)| _value == *value) [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/attack/frequency.rs:157:25 [INFO] [stderr] | [INFO] [stderr] 157 | .map(|(key, value)| key) [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/attack/frequency.rs:164:25 [INFO] [stderr] | [INFO] [stderr] 164 | .map(|(key, value)| key) [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `char` [INFO] [stderr] --> src/attack/frequency.rs:256:13 [INFO] [stderr] | [INFO] [stderr] 256 | for (i, char) in char_string.chars().enumerate() { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_char` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/attack/frequency.rs:269:28 [INFO] [stderr] | [INFO] [stderr] 269 | let mut values = sequences.get_mut(sequence_to_find).unwrap(); [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: unused variable: `value` [INFO] [stderr] --> src/attack/frequency.rs:383:21 [INFO] [stderr] | [INFO] [stderr] 383 | .map(|(key, value)| key) [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ciphered_text` [INFO] [stderr] --> src/attack/vigenere.rs:36:26 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn brute_force(ciphered_text: T, charset: U, testing: bool)-> Result [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ciphered_text` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `charset` [INFO] [stderr] --> src/attack/vigenere.rs:36:44 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn brute_force(ciphered_text: T, charset: U, testing: bool)-> Result [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_charset` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `testing` [INFO] [stderr] --> src/attack/vigenere.rs:36:56 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn brute_force(ciphered_text: T, charset: U, testing: bool)-> Result [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_testing` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ciphered_text` [INFO] [stderr] --> src/attack/vigenere.rs:47:23 [INFO] [stderr] | [INFO] [stderr] 47 | pub fn brute_force_mp(ciphered_text: &str, charset: &str, testing: bool)-> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ciphered_text` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `charset` [INFO] [stderr] --> src/attack/vigenere.rs:47:44 [INFO] [stderr] | [INFO] [stderr] 47 | pub fn brute_force_mp(ciphered_text: &str, charset: &str, testing: bool)-> Result { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_charset` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `testing` [INFO] [stderr] --> src/attack/vigenere.rs:47:59 [INFO] [stderr] | [INFO] [stderr] 47 | pub fn brute_force_mp(ciphered_text: &str, charset: &str, testing: bool)-> Result { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_testing` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `offset_char` is never read [INFO] [stderr] --> src/cipher/vigenere.rs:101:17 [INFO] [stderr] | [INFO] [stderr] 101 | let mut offset_char = String::new(); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] = note: `#[warn(unused_assignments)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function `get_best_result` is never used [INFO] [stderr] --> src/attack/caesar.rs:114:4 [INFO] [stderr] | [INFO] [stderr] 114 | fn get_best_result(identified_languages: &Vec<(usize, IdentifiedLanguage)>)-> usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: field `database_path` is never read [INFO] [stderr] --> src/attack/database.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 96 | pub struct Database { [INFO] [stderr] | -------- field in this struct [INFO] [stderr] 97 | pub session: DatabaseSession, [INFO] [stderr] 98 | database_path: String [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `candidates` is never read [INFO] [stderr] --> src/attack/dictionaries.rs:410:5 [INFO] [stderr] | [INFO] [stderr] 407 | pub struct IdentifiedLanguage { [INFO] [stderr] | ------------------ field in this struct [INFO] [stderr] ... [INFO] [stderr] 410 | candidates: HashMap [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `IntegerKeyIterator` is never constructed [INFO] [stderr] --> src/attack/simple_attacks.rs:88:8 [INFO] [stderr] | [INFO] [stderr] 88 | struct IntegerKeyIterator { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `new` is never used [INFO] [stderr] --> src/attack/simple_attacks.rs:95:8 [INFO] [stderr] | [INFO] [stderr] 94 | impl IntegerKeyIterator { [INFO] [stderr] | ----------------------- associated function in this implementation [INFO] [stderr] 95 | fn new(start: usize, end: usize) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `DictionaryWordKeyIterator` is never constructed [INFO] [stderr] --> src/attack/simple_attacks.rs:119:8 [INFO] [stderr] | [INFO] [stderr] 119 | struct DictionaryWordKeyIterator { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `new` and `get_next_word` are never used [INFO] [stderr] --> src/attack/simple_attacks.rs:129:12 [INFO] [stderr] | [INFO] [stderr] 128 | impl DictionaryWordKeyIterator { [INFO] [stderr] | ------------------------------ associated items in this implementation [INFO] [stderr] 129 | pub fn new() -> Result { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 146 | fn get_next_word(&mut self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `create_new_single_entry` is never used [INFO] [stderr] --> src/attack/substitution.rs:723:8 [INFO] [stderr] | [INFO] [stderr] 386 | impl Mapping { [INFO] [stderr] | ------------ method in this implementation [INFO] [stderr] ... [INFO] [stderr] 723 | fn create_new_single_entry(&mut self, key: char, value: char) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `LetterHistogram` is never constructed [INFO] [stderr] --> src/attack/frequency.rs:14:8 [INFO] [stderr] | [INFO] [stderr] 14 | struct LetterHistogram { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> src/attack/frequency.rs:37:8 [INFO] [stderr] | [INFO] [stderr] 22 | impl LetterHistogram { [INFO] [stderr] | -------------------- associated items in this implementation [INFO] [stderr] ... [INFO] [stderr] 37 | fn from_text(text: T, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 67 | fn from_dict(letters: HashMap, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 89 | fn setup_for_matching(self, letter_counter: Counter, width: usize) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 103 | fn create_ordered_dict(mut self, letter_counter: Counter) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 155 | fn set_matching_width(mut self, width: usize) -> Self{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 181 | fn frequency(&self, key: T) -> Result [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 190 | fn letters(&self) -> linked_hash_map::Keys { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 208 | fn match_score(one: &LetterHistogram, other: &LetterHistogram) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `find_repeated_sequences` is never used [INFO] [stderr] --> src/attack/frequency.rs:230:8 [INFO] [stderr] | [INFO] [stderr] 230 | pub fn find_repeated_sequences(text: T, length: usize) -> HashMap> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `find_adjacent_separations` is never used [INFO] [stderr] --> src/attack/frequency.rs:247:4 [INFO] [stderr] | [INFO] [stderr] 247 | fn find_adjacent_separations(text: T, length: usize) -> HashMap> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `find_not_adjacent_separations` is never used [INFO] [stderr] --> src/attack/frequency.rs:292:4 [INFO] [stderr] | [INFO] [stderr] 292 | fn find_not_adjacent_separations(sequences: &mut HashMap>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `get_substrings` is never used [INFO] [stderr] --> src/attack/frequency.rs:327:8 [INFO] [stderr] | [INFO] [stderr] 327 | pub fn get_substrings(ciphertext: T, step: usize) -> Vec [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `match_substring` is never used [INFO] [stderr] --> src/attack/frequency.rs:353:4 [INFO] [stderr] | [INFO] [stderr] 353 | fn match_substring(substring: T, reference_histogram: &LetterHistogram) -> u8 [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `find_most_likely_subkeys` is never used [INFO] [stderr] --> src/attack/frequency.rs:370:4 [INFO] [stderr] | [INFO] [stderr] 370 | fn find_most_likely_subkeys(substring: T, reference_histogram: &LetterHistogram) -> Result> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `MultiplyingKeyBelowZero` and `AddingKeyBelowZero` are never constructed [INFO] [stderr] --> src/cipher/affine.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 16 | enum WrongAffineKeyCauses { [INFO] [stderr] | -------------------- variants in this enum [INFO] [stderr] 17 | MultiplyingKeyBelowZero, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 18 | MultiplyingKeyZero, [INFO] [stderr] 19 | AddingKeyBelowZero, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `WrongAffineKeyCauses` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: trait method `fromStr` should have a snake case name [INFO] [stderr] --> src/lib.rs:85:8 [INFO] [stderr] | [INFO] [stderr] 85 | fn fromStr(s: T) -> Self; [INFO] [stderr] | ^^^^^^^ help: convert the identifier to snake case: `from_str` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait method `findFromIndex` should have a snake case name [INFO] [stderr] --> src/lib.rs:106:8 [INFO] [stderr] | [INFO] [stderr] 106 | fn findFromIndex(text: &T, text_to_find: U, index: usize) -> Option; [INFO] [stderr] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `find_from_index` [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/database.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | create_folder_path(database_folder); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 129 | let _ = create_folder_path(database_folder); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/attack/database.rs:148:10 [INFO] [stderr] | [INFO] [stderr] 148 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stderr] | ^-------- [INFO] [stderr] | | [INFO] [stderr] | `Queryable` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_queryable_for_language` [INFO] [stderr] ... [INFO] [stderr] 151 | pub struct Language { [INFO] [stderr] | -------- `Language` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Queryable` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Queryable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stderr] = note: this warning originates in the derive macro `Queryable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/attack/database.rs:148:21 [INFO] [stderr] | [INFO] [stderr] 148 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stderr] | ^----------- [INFO] [stderr] | | [INFO] [stderr] | `HasTable` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_identifiable_for_language` [INFO] [stderr] ... [INFO] [stderr] 151 | pub struct Language { [INFO] [stderr] | -------- `Language` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/attack/database.rs:148:21 [INFO] [stderr] | [INFO] [stderr] 148 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | `Identifiable` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_identifiable_for_language` [INFO] [stderr] ... [INFO] [stderr] 151 | pub struct Language { [INFO] [stderr] | -------- `Language` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/attack/database.rs:156:10 [INFO] [stderr] | [INFO] [stderr] 156 | #[derive(Insertable)] [INFO] [stderr] | ^--------- [INFO] [stderr] | | [INFO] [stderr] | `Insertable` is not local [INFO] [stderr] | `table` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_insertable_for_newlanguage` [INFO] [stderr] 157 | #[table_name="languages"] [INFO] [stderr] 158 | pub struct NewLanguage<'a> { [INFO] [stderr] | ----------- `NewLanguage` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/attack/database.rs:156:10 [INFO] [stderr] | [INFO] [stderr] 156 | #[derive(Insertable)] [INFO] [stderr] | -^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | `Insertable` is not local [INFO] [stderr] | `table` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_insertable_for_newlanguage` [INFO] [stderr] 157 | #[table_name="languages"] [INFO] [stderr] 158 | pub struct NewLanguage<'a> { [INFO] [stderr] | ----------- `NewLanguage` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/attack/database.rs:156:10 [INFO] [stderr] | [INFO] [stderr] 156 | #[derive(Insertable)] [INFO] [stderr] | ^--------- [INFO] [stderr] | | [INFO] [stderr] | `UndecoratedInsertRecord` is not local [INFO] [stderr] | `table` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_insertable_for_newlanguage` [INFO] [stderr] 157 | #[table_name="languages"] [INFO] [stderr] 158 | pub struct NewLanguage<'a> { [INFO] [stderr] | ----------- `NewLanguage` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/attack/database.rs:164:10 [INFO] [stderr] | [INFO] [stderr] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stderr] | ^-------- [INFO] [stderr] | | [INFO] [stderr] | `Queryable` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_queryable_for_word` [INFO] [stderr] ... [INFO] [stderr] 167 | pub struct Word { [INFO] [stderr] | ---- `Word` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Queryable` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Queryable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `Queryable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/attack/database.rs:164:21 [INFO] [stderr] | [INFO] [stderr] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stderr] | ^----------- [INFO] [stderr] | | [INFO] [stderr] | `HasTable` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_identifiable_for_word` [INFO] [stderr] ... [INFO] [stderr] 167 | pub struct Word { [INFO] [stderr] | ---- `Word` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/attack/database.rs:164:21 [INFO] [stderr] | [INFO] [stderr] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | `Identifiable` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_identifiable_for_word` [INFO] [stderr] ... [INFO] [stderr] 167 | pub struct Word { [INFO] [stderr] | ---- `Word` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Identifiable` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Identifiable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `Identifiable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/attack/database.rs:164:35 [INFO] [stderr] | [INFO] [stderr] 164 | #[derive(Queryable, Identifiable, Associations, Debug, PartialEq)] [INFO] [stderr] | ^----------- [INFO] [stderr] | | [INFO] [stderr] | `BelongsTo` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_associations_for_word` [INFO] [stderr] 165 | #[table_name="words"] [INFO] [stderr] 166 | #[belongs_to(Language)] [INFO] [stderr] | -------- `Language` is not local [INFO] [stderr] 167 | pub struct Word { [INFO] [stderr] | ---- `Word` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Associations` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Associations` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `Associations` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/attack/database.rs:174:10 [INFO] [stderr] | [INFO] [stderr] 174 | #[derive(Insertable)] [INFO] [stderr] | ^--------- [INFO] [stderr] | | [INFO] [stderr] | `Insertable` is not local [INFO] [stderr] | `table` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_insertable_for_newword` [INFO] [stderr] 175 | #[table_name="words"] [INFO] [stderr] 176 | pub struct NewWord<'a> { [INFO] [stderr] | ------- `NewWord` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/attack/database.rs:174:10 [INFO] [stderr] | [INFO] [stderr] 174 | #[derive(Insertable)] [INFO] [stderr] | -^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | `Insertable` is not local [INFO] [stderr] | `table` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_insertable_for_newword` [INFO] [stderr] 175 | #[table_name="words"] [INFO] [stderr] 176 | pub struct NewWord<'a> { [INFO] [stderr] | ------- `NewWord` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/attack/database.rs:174:10 [INFO] [stderr] | [INFO] [stderr] 174 | #[derive(Insertable)] [INFO] [stderr] | ^--------- [INFO] [stderr] | | [INFO] [stderr] | `UndecoratedInsertRecord` is not local [INFO] [stderr] | `table` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_insertable_for_newword` [INFO] [stderr] 175 | #[table_name="words"] [INFO] [stderr] 176 | pub struct NewWord<'a> { [INFO] [stderr] | ------- `NewWord` is not local [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Insertable` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Insertable` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `Insertable` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stderr] --> src/attack/dictionaries.rs:164:41 [INFO] [stderr] | [INFO] [stderr] 164 | let _word_clone = _word.as_ref().clone(); [INFO] [stderr] | ^^^^^^^^ help: remove this redundant call [INFO] [stderr] | [INFO] [stderr] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stderr] = note: `#[warn(noop_method_call)]` on by default [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/attack/dictionaries.rs:340:17 [INFO] [stderr] | [INFO] [stderr] 340 | pub fn iter(&self) -> InsertionOrderedSetIterator { [INFO] [stderr] | ^^^^^ ------------------------------ the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 340 | pub fn iter(&self) -> InsertionOrderedSetIterator<'_, T> { [INFO] [stderr] | +++ [INFO] [stderr] [INFO] [stderr] warning: variable `E` should have a snake case name [INFO] [stderr] --> src/attack/simple_attacks.rs:165:25 [INFO] [stderr] | [INFO] [stderr] 165 | Err(E) => return None [INFO] [stderr] | ^ help: convert the identifier to snake case: `e` [INFO] [stderr] [INFO] [stderr] warning: variable `item_A` should have a snake case name [INFO] [stderr] --> src/attack/frequency.rs:122:34 [INFO] [stderr] | [INFO] [stderr] 122 | values_ordered.sort_by(|&item_A, &item_B| item_B.cmp(item_A)); [INFO] [stderr] | ^^^^^^ help: convert the identifier to snake case: `item_a` [INFO] [stderr] [INFO] [stderr] warning: variable `item_B` should have a snake case name [INFO] [stderr] --> src/attack/frequency.rs:122:43 [INFO] [stderr] | [INFO] [stderr] 122 | values_ordered.sort_by(|&item_A, &item_B| item_B.cmp(item_A)); [INFO] [stderr] | ^^^^^^ help: convert the identifier to snake case: `item_b` [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/frequency.rs:162:9 [INFO] [stderr] | [INFO] [stderr] 162 | ordered_dict_iter.advance_by(self.ordered_dict.len()-width); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 162 | let _ = ordered_dict_iter.advance_by(self.ordered_dict.len()-width); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/attack/frequency.rs:190:16 [INFO] [stderr] | [INFO] [stderr] 190 | fn letters(&self) -> linked_hash_map::Keys { [INFO] [stderr] | ^^^^^ -------------------------------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 190 | fn letters(&self) -> linked_hash_map::Keys<'_, char, u64> { [INFO] [stderr] | +++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/frequency.rs:334:9 [INFO] [stderr] | [INFO] [stderr] 334 | ciphered_stream_iter.advance_by(i); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 334 | let _ = ciphered_stream_iter.advance_by(i); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: variable `item_A` should have a snake case name [INFO] [stderr] --> src/cipher/common.rs:186:25 [INFO] [stderr] | [INFO] [stderr] 186 | items.sort_by(|&item_A, &item_B| item_B.1.cmp(item_A.1)); [INFO] [stderr] | ^^^^^^ help: convert the identifier to snake case: `item_a` [INFO] [stderr] [INFO] [stderr] warning: variable `item_B` should have a snake case name [INFO] [stderr] --> src/cipher/common.rs:186:34 [INFO] [stderr] | [INFO] [stderr] 186 | items.sort_by(|&item_A, &item_B| item_B.1.cmp(item_A.1)); [INFO] [stderr] | ^^^^^^ help: convert the identifier to snake case: `item_b` [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/schema.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | / table! { [INFO] [stderr] 2 | | languages (id) { [INFO] [stderr] 3 | | id -> Integer, [INFO] [stderr] 4 | | language -> Text, [INFO] [stderr] 5 | | } [INFO] [stderr] 6 | | } [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | | `table` is not local [INFO] [stderr] | |_`QueryId` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_query_id_for_table` [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/schema.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | / table! { [INFO] [stderr] 2 | | languages (id) { [INFO] [stderr] 3 | | id -> Integer, [INFO] [stderr] | | -- `id` is not local [INFO] [stderr] 4 | | language -> Text, [INFO] [stderr] 5 | | } [INFO] [stderr] 6 | | } [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |_`QueryId` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_query_id_for_id` [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/schema.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | / table! { [INFO] [stderr] 2 | | languages (id) { [INFO] [stderr] 3 | | id -> Integer, [INFO] [stderr] 4 | | language -> Text, [INFO] [stderr] | | -------- `language` is not local [INFO] [stderr] 5 | | } [INFO] [stderr] 6 | | } [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |_`QueryId` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_query_id_for_language` [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/schema.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / table! { [INFO] [stderr] 9 | | words (id) { [INFO] [stderr] 10 | | id -> Integer, [INFO] [stderr] 11 | | word -> Text, [INFO] [stderr] ... | [INFO] [stderr] 15 | | } [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | | `table` is not local [INFO] [stderr] | |_`QueryId` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_query_id_for_table` [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/schema.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / table! { [INFO] [stderr] 9 | | words (id) { [INFO] [stderr] 10 | | id -> Integer, [INFO] [stderr] | | -- `id` is not local [INFO] [stderr] 11 | | word -> Text, [INFO] [stderr] ... | [INFO] [stderr] 15 | | } [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |_`QueryId` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_query_id_for_id` [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/schema.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / table! { [INFO] [stderr] 9 | | words (id) { [INFO] [stderr] 10 | | id -> Integer, [INFO] [stderr] 11 | | word -> Text, [INFO] [stderr] | | ---- `word` is not local [INFO] [stderr] ... | [INFO] [stderr] 15 | | } [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |_`QueryId` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_query_id_for_word` [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/schema.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / table! { [INFO] [stderr] 9 | | words (id) { [INFO] [stderr] 10 | | id -> Integer, [INFO] [stderr] 11 | | word -> Text, [INFO] [stderr] 12 | | word_pattern -> Text, [INFO] [stderr] | | ------------ `word_pattern` is not local [INFO] [stderr] ... | [INFO] [stderr] 15 | | } [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |_`QueryId` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_query_id_for_word_pattern` [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/schema.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / table! { [INFO] [stderr] 9 | | words (id) { [INFO] [stderr] 10 | | id -> Integer, [INFO] [stderr] 11 | | word -> Text, [INFO] [stderr] 12 | | word_pattern -> Text, [INFO] [stderr] 13 | | language_id -> Integer, [INFO] [stderr] | | ----------- `language_id` is not local [INFO] [stderr] 14 | | } [INFO] [stderr] 15 | | } [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |_`QueryId` is not local [INFO] [stderr] | move the `impl` block outside of this function `_impl_query_id_for_language_id` [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `QueryId` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `QueryId` may come from an old version of the `diesel_derives` crate, try updating your dependency with `cargo update -p diesel_derives` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: this warning originates in the derive macro `QueryId` which comes from the expansion of the macro `table` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: `cifra` (lib) generated 71 warnings (run `cargo fix --lib -p cifra` to apply 8 suggestions) [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/bin/main.rs:634:9 [INFO] [stderr] | [INFO] [stderr] 634 | return bail!("You tried to use attack_file function with a configuration that is not for attack mode.") [INFO] [stderr] | ^^^^^^^------------------------------------------------------------------------------------------------ [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unreachable_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/bin/main.rs:646:14 [INFO] [stderr] | [INFO] [stderr] 646 | _ => return bail!("Given algorithm does not use integer key and charset.") [INFO] [stderr] | ^^^^^^^-------------------------------------------------------------- [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/bin/main.rs:658:14 [INFO] [stderr] | [INFO] [stderr] 658 | _ => return bail!("Given algorithm does not use string key and charset.") [INFO] [stderr] | ^^^^^^^------------------------------------------------------------- [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/bin/main.rs:669:14 [INFO] [stderr] | [INFO] [stderr] 669 | _ => return bail!("Given algorithm does not use integer key or includes a charset.") [INFO] [stderr] | ^^^^^^^------------------------------------------------------------------------ [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/bin/main.rs:681:14 [INFO] [stderr] | [INFO] [stderr] 681 | _ => return bail!("Given algorithm does not use integer key and charset.") [INFO] [stderr] | ^^^^^^^-------------------------------------------------------------- [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/bin/main.rs:693:14 [INFO] [stderr] | [INFO] [stderr] 693 | _ => return bail!("Given algorithm does not use string key and charset.") [INFO] [stderr] | ^^^^^^^------------------------------------------------------------- [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/bin/main.rs:704:14 [INFO] [stderr] | [INFO] [stderr] 704 | _ => return bail!("Given algorithm does not use integer key or includes a charset.") [INFO] [stderr] | ^^^^^^^------------------------------------------------------------------------ [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/bin/main.rs:716:14 [INFO] [stderr] | [INFO] [stderr] 716 | _ => return bail!("Given algorithm does not use charset.") [INFO] [stderr] | ^^^^^^^---------------------------------------------- [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/bin/main.rs:727:14 [INFO] [stderr] | [INFO] [stderr] 727 | _ => return bail!("Given algorithm do use string key and charset") [INFO] [stderr] | ^^^^^^^------------------------------------------------------ [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/bin/main.rs:738:14 [INFO] [stderr] | [INFO] [stderr] 738 | _ => return bail!("Given algorithm do use charset.") [INFO] [stderr] | ^^^^^^^---------------------------------------- [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/bin/main.rs:749:14 [INFO] [stderr] | [INFO] [stderr] 749 | _ => return bail!("Given algorithm don't have testing mode.") [INFO] [stderr] | ^^^^^^^------------------------------------------------- [INFO] [stderr] | | | [INFO] [stderr] | | any code following this expression is unreachable [INFO] [stderr] | unreachable expression [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ciphered_file` [INFO] [stderr] --> src/bin/main.rs:428:13 [INFO] [stderr] | [INFO] [stderr] 428 | ciphered_file, charset } => { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try ignoring the field: `ciphered_file: _` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `deciphered_file` [INFO] [stderr] --> src/bin/main.rs:466:32 [INFO] [stderr] | [INFO] [stderr] 466 | file_to_decipher , deciphered_file, charset } => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try ignoring the field: `deciphered_file: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `algorithm` [INFO] [stderr] --> src/bin/main.rs:521:25 [INFO] [stderr] | [INFO] [stderr] 521 | Modes::Cipher { algorithm, key, file_to_cipher, [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `algorithm: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `key` [INFO] [stderr] --> src/bin/main.rs:521:36 [INFO] [stderr] | [INFO] [stderr] 521 | Modes::Cipher { algorithm, key, file_to_cipher, [INFO] [stderr] | ^^^ help: try ignoring the field: `key: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `file_to_cipher` [INFO] [stderr] --> src/bin/main.rs:521:41 [INFO] [stderr] | [INFO] [stderr] 521 | Modes::Cipher { algorithm, key, file_to_cipher, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try ignoring the field: `file_to_cipher: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `charset` [INFO] [stderr] --> src/bin/main.rs:522:28 [INFO] [stderr] | [INFO] [stderr] 522 | ciphered_file, charset } => { [INFO] [stderr] | ^^^^^^^ help: try ignoring the field: `charset: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `algorithm` [INFO] [stderr] --> src/bin/main.rs:525:27 [INFO] [stderr] | [INFO] [stderr] 525 | Modes::Decipher { algorithm, key, file_to_decipher, [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `algorithm: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `key` [INFO] [stderr] --> src/bin/main.rs:525:38 [INFO] [stderr] | [INFO] [stderr] 525 | Modes::Decipher { algorithm, key, file_to_decipher, [INFO] [stderr] | ^^^ help: try ignoring the field: `key: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `file_to_decipher` [INFO] [stderr] --> src/bin/main.rs:525:43 [INFO] [stderr] | [INFO] [stderr] 525 | Modes::Decipher { algorithm, key, file_to_decipher, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try ignoring the field: `file_to_decipher: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `charset` [INFO] [stderr] --> src/bin/main.rs:526:30 [INFO] [stderr] | [INFO] [stderr] 526 | deciphered_file, charset }=> { [INFO] [stderr] | ^^^^^^^ help: try ignoring the field: `charset: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `algorithm` [INFO] [stderr] --> src/bin/main.rs:529:25 [INFO] [stderr] | [INFO] [stderr] 529 | Modes::Attack { algorithm, file_to_attack, [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `algorithm: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `file_to_attack` [INFO] [stderr] --> src/bin/main.rs:529:36 [INFO] [stderr] | [INFO] [stderr] 529 | Modes::Attack { algorithm, file_to_attack, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try ignoring the field: `file_to_attack: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `charset` [INFO] [stderr] --> src/bin/main.rs:530:30 [INFO] [stderr] | [INFO] [stderr] 530 | deciphered_file, charset, output_recovered_key [INFO] [stderr] | ^^^^^^^ help: try ignoring the field: `charset: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_recovered_key` [INFO] [stderr] --> src/bin/main.rs:563:26 [INFO] [stderr] | [INFO] [stderr] 563 | deciphered_file, output_recovered_key, charset [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try ignoring the field: `output_recovered_key: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stderr] --> src/bin/main.rs:1101:54 [INFO] [stderr] | [INFO] [stderr] 1101 | fn test_cipher_caesar(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stderr] --> src/bin/main.rs:1119:56 [INFO] [stderr] | [INFO] [stderr] 1119 | fn test_decipher_caesar(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stderr] --> src/bin/main.rs:1137:60 [INFO] [stderr] | [INFO] [stderr] 1137 | fn test_cipher_substitution(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stderr] --> src/bin/main.rs:1156:62 [INFO] [stderr] | [INFO] [stderr] 1156 | fn test_decipher_substitution(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stderr] --> src/bin/main.rs:1175:54 [INFO] [stderr] | [INFO] [stderr] 1175 | fn test_attack_caesar(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stderr] --> src/bin/main.rs:1192:73 [INFO] [stderr] | [INFO] [stderr] 1192 | fn test_attack_caesar_with_recovered_key(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `full_loaded_temp_dictionaries` [INFO] [stderr] --> src/bin/main.rs:1211:60 [INFO] [stderr] | [INFO] [stderr] 1211 | fn test_attack_substitution(temp_dir: TestEnvironment, full_loaded_temp_dictionaries: LoadedDictionaries){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_loaded_temp_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: associated items `get_string_key_algorithms`, `get_integer_key_algorithms`, and `get_string_value` are never used [INFO] [stderr] --> src/bin/main.rs:56:12 [INFO] [stderr] | [INFO] [stderr] 43 | impl CipheringAlgorithms { [INFO] [stderr] | ------------------------ associated items in this implementation [INFO] [stderr] ... [INFO] [stderr] 56 | pub fn get_string_key_algorithms()-> HashSet { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 64 | pub fn get_integer_key_algorithms()-> HashSet { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 75 | pub fn get_string_value(&self)-> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: fields `temp_dir`, `languages`, `temp_env`, and `temp_env_var` are never read [INFO] [stderr] --> src/bin/main.rs:860:13 [INFO] [stderr] | [INFO] [stderr] 859 | pub struct LoadedDictionaries { [INFO] [stderr] | ------------------ fields in this struct [INFO] [stderr] 860 | pub temp_dir: PathBuf, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 861 | pub languages: Vec, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] 862 | temp_env: TestEnvironment, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 863 | temp_env_var: TemporalEnvironmentVariable [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `Str` should have a snake case name [INFO] [stderr] --> src/bin/main.rs:69:19 [INFO] [stderr] | [INFO] [stderr] 69 | .map(|Str| Str.clone()) [INFO] [stderr] | ^^^ help: convert the identifier to snake case (notice the capitalization): `str` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/bin/main.rs:546:9 [INFO] [stderr] | [INFO] [stderr] 546 | write(output_file_path, output_string.as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 546 | let _ = write(output_file_path, output_string.as_str()); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/bin/main.rs:767:17 [INFO] [stderr] | [INFO] [stderr] 767 | new_dictionary.populate(pathname); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 767 | let _ = new_dictionary.populate(pathname); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/bin/main.rs:781:13 [INFO] [stderr] | [INFO] [stderr] 781 | dictionary.populate(pathname); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 781 | let _ = dictionary.populate(pathname); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: variable `Str` should have a snake case name [INFO] [stderr] --> src/bin/main.rs:813:48 [INFO] [stderr] | [INFO] [stderr] 813 | let args_str: Vec<&str> = args.iter().map(|Str| Str.as_str()).collect(); [INFO] [stderr] | ^^^ help: convert the identifier to snake case (notice the capitalization): `str` [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/bin/main.rs:869:13 [INFO] [stderr] | [INFO] [stderr] 869 | database::create_database(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 869 | let _ = database::create_database(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/bin/main.rs:873:13 [INFO] [stderr] | [INFO] [stderr] 873 | create_dir(&resources_path); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 873 | let _ = create_dir(&resources_path); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/bin/main.rs:888:17 [INFO] [stderr] | [INFO] [stderr] 888 | dictionary.populate(language_book); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 888 | let _ = dictionary.populate(language_book); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused return value of `collect` that must be used [INFO] [stderr] --> src/bin/main.rs:891:13 [INFO] [stderr] | [INFO] [stderr] 891 | LANGUAGES.iter().map(|x| _languages.push(x.to_string())).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 891 | let _ = LANGUAGES.iter().map(|x| _languages.push(x.to_string())).collect::>(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/bin/main.rs:1103:9 [INFO] [stderr] | [INFO] [stderr] 1103 | write(message_file.path(), CAESAR_ORIGINAL_MESSAGE); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 1103 | let _ = write(message_file.path(), CAESAR_ORIGINAL_MESSAGE); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/bin/main.rs:1121:9 [INFO] [stderr] | [INFO] [stderr] 1121 | write(message_file.path(), CAESAR_CIPHERED_MESSAGE_KEY_13); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 1121 | let _ = write(message_file.path(), CAESAR_CIPHERED_MESSAGE_KEY_13); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/bin/main.rs:1139:9 [INFO] [stderr] | [INFO] [stderr] 1139 | write(message_file.path(), SUBSTITUTION_ORIGINAL_MESSAGE); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 1139 | let _ = write(message_file.path(), SUBSTITUTION_ORIGINAL_MESSAGE); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/bin/main.rs:1158:9 [INFO] [stderr] | [INFO] [stderr] 1158 | write(message_file.path(), SUBSTITUTION_CIPHERED_MESSAGE); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 1158 | let _ = write(message_file.path(), SUBSTITUTION_CIPHERED_MESSAGE); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/bin/main.rs:1177:9 [INFO] [stderr] | [INFO] [stderr] 1177 | write(message_file.path(), CAESAR_CIPHERED_MESSAGE_KEY_13); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stdout] [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] running 78 tests [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] test attack::database::tests::test_create_database_path ... ok [INFO] [stderr] | [INFO] [stdout] test attack::database::tests::test_database_standard_path ... ok [INFO] [stderr] 1177 | let _ = write(message_file.path(), CAESAR_CIPHERED_MESSAGE_KEY_13); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/bin/main.rs:1194:9 [INFO] [stderr] | [INFO] [stderr] 1194 | write(message_file.path(), CAESAR_CIPHERED_MESSAGE_KEY_13); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 1194 | let _ = write(message_file.path(), CAESAR_CIPHERED_MESSAGE_KEY_13); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/bin/main.rs:1221:9 [INFO] [stderr] | [INFO] [stderr] 1221 | write(message_file.path(), ciphered_text); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 1221 | let _ = write(message_file.path(), ciphered_text); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused import: `diesel::result::Error::DatabaseError` [INFO] [stderr] --> src/attack/caesar.rs:140:9 [INFO] [stderr] | [INFO] [stderr] 140 | use diesel::result::Error::DatabaseError; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `OsStr` [INFO] [stderr] --> src/attack/database.rs:6:16 [INFO] [stderr] | [INFO] [stderr] 6 | use std::ffi::{OsStr, OsString}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ffi::OsStr` [INFO] [stderr] --> src/attack/database.rs:185:9 [INFO] [stderr] | [INFO] [stderr] 185 | use std::ffi::OsStr; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `read_to_string` [INFO] [stderr] --> src/attack/dictionaries.rs:542:50 [INFO] [stderr] | [INFO] [stderr] 542 | use std::fs::{create_dir, File, OpenOptions, read_to_string}; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ffi::OsString` [INFO] [stderr] --> src/attack/dictionaries.rs:548:9 [INFO] [stderr] | [INFO] [stderr] 548 | use std::ffi::OsString; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufReader` and `Read` [INFO] [stderr] --> src/attack/dictionaries.rs:550:26 [INFO] [stderr] | [INFO] [stderr] 550 | use std::io::{Write, BufReader, Read}; [INFO] [stderr] | ^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::env::temp_dir` [INFO] [stderr] --> src/attack/dictionaries.rs:552:9 [INFO] [stderr] | [INFO] [stderr] 552 | use std::env::temp_dir; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::attack::dictionaries::tests::ENGLISH_TEXT_WITH_PUNCTUATIONS_MARKS` [INFO] [stderr] --> src/attack/frequency.rs:394:9 [INFO] [stderr] | [INFO] [stderr] 394 | use crate::attack::dictionaries::tests::ENGLISH_TEXT_WITH_PUNCTUATIONS_MARKS; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `F64Margin` [INFO] [stderr] --> src/attack/frequency.rs:399:31 [INFO] [stderr] | [INFO] [stderr] 399 | use float_cmp::{ApproxEq, F64Margin}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ResultExt` [INFO] [stderr] --> src/cipher/substitution.rs:2:32 [INFO] [stderr] | [INFO] [stderr] 2 | use crate::{ErrorKind, Result, ResultExt, Error}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `loaded_dictionaries` [INFO] [stderr] --> src/attack/affine.rs:144:13 [INFO] [stderr] | [INFO] [stderr] 144 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `loaded_dictionaries` [INFO] [stderr] --> src/attack/affine.rs:153:13 [INFO] [stderr] | [INFO] [stderr] 153 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `loaded_dictionaries` [INFO] [stderr] --> src/attack/caesar.rs:148:13 [INFO] [stderr] | [INFO] [stderr] 148 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `loaded_dictionaries` [INFO] [stderr] --> src/attack/caesar.rs:157:13 [INFO] [stderr] | [INFO] [stderr] 157 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `test_env` [INFO] [stderr] --> src/attack/database.rs:201:13 [INFO] [stderr] | [INFO] [stderr] 201 | let test_env = TemporalEnvironmentVariable::new("DATABASE_URL", absolute_pathname_to_database); [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_test_env` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_dir` [INFO] [stderr] --> src/attack/dictionaries.rs:809:14 [INFO] [stderr] | [INFO] [stderr] 809 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_env_database_path` [INFO] [stderr] --> src/attack/dictionaries.rs:809:24 [INFO] [stderr] | [INFO] [stderr] 809 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_dir` [INFO] [stderr] --> src/attack/dictionaries.rs:818:14 [INFO] [stderr] | [INFO] [stderr] 818 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_env_database_path` [INFO] [stderr] --> src/attack/dictionaries.rs:818:24 [INFO] [stderr] | [INFO] [stderr] 818 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_dir` [INFO] [stderr] --> src/attack/dictionaries.rs:835:14 [INFO] [stderr] | [INFO] [stderr] 835 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_env_database_path` [INFO] [stderr] --> src/attack/dictionaries.rs:835:24 [INFO] [stderr] | [INFO] [stderr] 835 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_dir` [INFO] [stderr] --> src/attack/dictionaries.rs:850:14 [INFO] [stderr] | [INFO] [stderr] 850 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_env_database_path` [INFO] [stderr] --> src/attack/dictionaries.rs:850:24 [INFO] [stderr] | [INFO] [stderr] 850 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_dir` [INFO] [stderr] --> src/attack/dictionaries.rs:865:14 [INFO] [stderr] | [INFO] [stderr] 865 | let (temp_dir, temp_env_database_path) = loaded_micro_dictionary_temp_dir(); [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_env_database_path` [INFO] [stderr] --> src/attack/dictionaries.rs:865:24 [INFO] [stderr] | [INFO] [stderr] 865 | let (temp_dir, temp_env_database_path) = loaded_micro_dictionary_temp_dir(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/attack/dictionaries.rs:864:13 [INFO] [stderr] | [INFO] [stderr] 864 | let mut micro_dictionaries = get_micro_dictionaries_content(); [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: unused variable: `temp_env_database_path` [INFO] [stderr] --> src/attack/dictionaries.rs:902:24 [INFO] [stderr] | [INFO] [stderr] 902 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_dir` [INFO] [stderr] --> src/attack/dictionaries.rs:944:14 [INFO] [stderr] | [INFO] [stderr] 944 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_env_database_path` [INFO] [stderr] --> src/attack/dictionaries.rs:944:24 [INFO] [stderr] | [INFO] [stderr] 944 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `loaded_dictionaries` [INFO] [stderr] --> src/attack/dictionaries.rs:959:13 [INFO] [stderr] | [INFO] [stderr] 959 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_dir` [INFO] [stderr] --> src/attack/dictionaries.rs:990:14 [INFO] [stderr] | [INFO] [stderr] 990 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_dir` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_env_database_path` [INFO] [stderr] --> src/attack/dictionaries.rs:990:24 [INFO] [stderr] | [INFO] [stderr] 990 | let (temp_dir, temp_env_database_path) = temporary_database_folder(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_env_database_path` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `loaded_micro_dictionary_temp_dir` [INFO] [stderr] --> src/attack/dictionaries.rs:1020:27 [INFO] [stderr] | [INFO] [stderr] 1020 | fn test_get_all_words(loaded_micro_dictionary_temp_dir: (TestEnvironment, TemporalEnvironmentVariable)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_micro_dictionary_temp_dir` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `E` [INFO] [stderr] --> src/attack/simple_attacks.rs:165:25 [INFO] [stderr] | [INFO] [stderr] 165 | Err(E) => return None [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_E` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `loaded_micro_dictionary_temp_dir` [INFO] [stderr] --> src/attack/simple_attacks.rs:281:43 [INFO] [stderr] | [INFO] [stderr] 281 | fn test_dictionary_word_key_generator(loaded_micro_dictionary_temp_dir: (TestEnvironment, TemporalEnvironmentVariable)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_micro_dictionary_temp_dir` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `loaded_dictionaries` [INFO] [stderr] --> src/attack/substitution.rs:872:13 [INFO] [stderr] | [INFO] [stderr] 872 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `loaded_dictionaries` [INFO] [stderr] --> src/attack/substitution.rs:894:13 [INFO] [stderr] | [INFO] [stderr] 894 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `missing` [INFO] [stderr] --> src/attack/substitution.rs:1125:13 [INFO] [stderr] | [INFO] [stderr] 1125 | let missing: Vec = expected_list.iter().cloned().filter(|_mapping| !recovered_mappings.contains(&_mapping)).collect(); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_missing` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/attack/substitution.rs:1073:13 [INFO] [stderr] | [INFO] [stderr] 1073 | let mut expected_mapping_1 = mapping!(THIS_TEST_CHARSET, {"1": {"a"}, [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/attack/substitution.rs:1078:13 [INFO] [stderr] | [INFO] [stderr] 1078 | let mut expected_mapping_2 = mapping!(THIS_TEST_CHARSET, {"1": {"a"}, [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/attack/substitution.rs:1083:13 [INFO] [stderr] | [INFO] [stderr] 1083 | let mut expected_mapping_3 = mapping!(THIS_TEST_CHARSET, {"1": {"b"}, [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/attack/substitution.rs:1088:13 [INFO] [stderr] | [INFO] [stderr] 1088 | let mut expected_mapping_4 = mapping!(THIS_TEST_CHARSET, {"1": {"b"}, [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/attack/substitution.rs:1093:13 [INFO] [stderr] | [INFO] [stderr] 1093 | let mut expected_mapping_5 = mapping!(THIS_TEST_CHARSET, {"1": {"a"}, [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/attack/substitution.rs:1098:13 [INFO] [stderr] | [INFO] [stderr] 1098 | let mut expected_mapping_6 = mapping!(THIS_TEST_CHARSET, {"1": {"a"}, [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/attack/substitution.rs:1103:13 [INFO] [stderr] | [INFO] [stderr] 1103 | let mut expected_mapping_7 = mapping!(THIS_TEST_CHARSET, {"1": {"b"}, [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/attack/substitution.rs:1108:13 [INFO] [stderr] | [INFO] [stderr] 1108 | let mut expected_mapping_8 = mapping!(THIS_TEST_CHARSET, {"1": {"b"}, [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/attack/substitution.rs:1113:13 [INFO] [stderr] | [INFO] [stderr] 1113 | let mut expected_list = vec![ [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/attack/substitution.rs:1155:13 [INFO] [stderr] | [INFO] [stderr] 1155 | let mut mapping = mapping!(TEST_CHARSET, [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `extracted_candidates` [INFO] [stderr] --> src/attack/substitution.rs:1210:38 [INFO] [stderr] | [INFO] [stderr] 1210 | let (extracted_cipherletter, extracted_candidates) = mapping.pop_item() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_extracted_candidates` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `loaded_dictionaries` [INFO] [stderr] --> src/attack/transposition.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `loaded_dictionaries` [INFO] [stderr] --> src/attack/transposition.rs:109:13 [INFO] [stderr] | [INFO] [stderr] 109 | let loaded_dictionaries = LoadedDictionaries::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_loaded_dictionaries` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/attack/frequency.rs:269:28 [INFO] [stderr] | [INFO] [stderr] 269 | let mut values = sequences.get_mut(sequence_to_find).unwrap(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/cipher/transposition.rs:324:13 [INFO] [stderr] | [INFO] [stderr] 324 | let mut transposition_matrix = vec![ [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: fields `temp_env` and `temp_env_var` are never read [INFO] [stderr] --> src/attack/dictionaries.rs:659:9 [INFO] [stderr] | [INFO] [stderr] 656 | pub struct LoadedDictionaries { [INFO] [stderr] | ------------------ fields in this struct [INFO] [stderr] ... [INFO] [stderr] 659 | temp_env: TestEnvironment, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 660 | temp_env_var: TemporalEnvironmentVariable [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `text_file` is never read [INFO] [stderr] --> src/attack/dictionaries.rs:752:13 [INFO] [stderr] | [INFO] [stderr] 751 | struct TemporaryTextFile { [INFO] [stderr] | ----------------- field in this struct [INFO] [stderr] 752 | pub text_file: File, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `start` is never read [INFO] [stderr] --> src/attack/simple_attacks.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 88 | struct IntegerKeyIterator { [INFO] [stderr] | ------------------ field in this struct [INFO] [stderr] 89 | start: usize, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `language` is never read [INFO] [stderr] --> src/attack/substitution.rs:817:9 [INFO] [stderr] | [INFO] [stderr] 815 | struct TestSet { [INFO] [stderr] | ------- field in this struct [INFO] [stderr] 816 | text_file: &'static str, [INFO] [stderr] 817 | language: &'static str, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `from_dict` is never used [INFO] [stderr] --> src/attack/frequency.rs:67:8 [INFO] [stderr] | [INFO] [stderr] 22 | impl LetterHistogram { [INFO] [stderr] | -------------------- associated function in this implementation [INFO] [stderr] ... [INFO] [stderr] 67 | fn from_dict(letters: HashMap, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/database.rs:202:9 [INFO] [stderr] | [INFO] [stderr] 202 | create_database(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 202 | let _ = create_database(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/database.rs:213:9 [INFO] [stderr] | [INFO] [stderr] 213 | create_folder_path(database_folder); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 213 | let _ = create_folder_path(database_folder); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:666:13 [INFO] [stderr] | [INFO] [stderr] 666 | database::create_database(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 666 | let _ = database::create_database(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:670:13 [INFO] [stderr] | [INFO] [stderr] 670 | create_dir(&resources_path); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 670 | let _ = create_dir(&resources_path); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:685:17 [INFO] [stderr] | [INFO] [stderr] 685 | dictionary.populate(language_book); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 685 | let _ = dictionary.populate(language_book); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:688:13 [INFO] [stderr] | [INFO] [stderr] 688 | LANGUAGES.iter().map(|x| _languages.push(x.to_string())).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 688 | let _ = LANGUAGES.iter().map(|x| _languages.push(x.to_string())).collect::>(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:731:9 [INFO] [stderr] | [INFO] [stderr] 731 | database::create_database(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 731 | let _ = database::create_database(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:737:13 [INFO] [stderr] | [INFO] [stderr] 737 | _words.iter().map(|_word| language_dictionary.add_word(_word)).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 737 | let _ = _words.iter().map(|_word| language_dictionary.add_word(_word)).collect::>(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:772:13 [INFO] [stderr] | [INFO] [stderr] 772 | text_file.write_all(text.as_ref().as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 772 | let _ = text_file.write_all(text.as_ref().as_bytes()); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:819:9 [INFO] [stderr] | [INFO] [stderr] 819 | database::create_database(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 819 | let _ = database::create_database(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:822:13 [INFO] [stderr] | [INFO] [stderr] 822 | Dictionary::new("english", true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 822 | let _ = Dictionary::new("english", true); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:836:9 [INFO] [stderr] | [INFO] [stderr] 836 | database::create_database(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 836 | let _ = database::create_database(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:867:9 [INFO] [stderr] | [INFO] [stderr] 867 | Dictionary::remove_dictionary(language_to_remove); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 867 | let _ = Dictionary::remove_dictionary(language_to_remove); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:889:13 [INFO] [stderr] | [INFO] [stderr] 889 | ... temporary_text.normalized_text.to_lowercase().split_ascii_whitespace().map(|_word| expected_set.insert(_word.to_string())).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 889 | let _ = temporary_text.normalized_text.to_lowercase().split_ascii_whitespace().map(|_word| expected_set.insert(_word.to_string())).collect::>(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:903:9 [INFO] [stderr] | [INFO] [stderr] 903 | database::create_database(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 903 | let _ = database::create_database(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:911:9 [INFO] [stderr] | [INFO] [stderr] 911 | expected_lowercase_content.split_ascii_whitespace().map(|x| expected_set.insert(x)).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 911 | let _ = expected_lowercase_content.split_ascii_whitespace().map(|x| expected_set.insert(x)).collect::>(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:915:13 [INFO] [stderr] | [INFO] [stderr] 915 | dictionary.populate(temporary_text_file.temp_filename.as_path()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 915 | let _ = dictionary.populate(temporary_text_file.temp_filename.as_path()); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:929:13 [INFO] [stderr] | [INFO] [stderr] 929 | test_tuple.2.to_lowercase().split_ascii_whitespace().map(|_word| expected_set.insert(_word.to_string())).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 929 | let _ = test_tuple.2.to_lowercase().split_ascii_whitespace().map(|_word| expected_set.insert(_word.to_string())).collect::>(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:945:9 [INFO] [stderr] | [INFO] [stderr] 945 | database::create_database(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 945 | let _ = database::create_database(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:949:9 [INFO] [stderr] | [INFO] [stderr] 949 | micro_dictionaries[_language].iter().map(|_word| words_to_add.insert(_word.clone())).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 949 | let _ = micro_dictionaries[_language].iter().map(|_word| words_to_add.insert(_word.clone())).collect::>(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/attack/dictionaries.rs:991:9 [INFO] [stderr] | [INFO] [stderr] 991 | database::create_database(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 991 | let _ = database::create_database(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: variable `E` should have a snake case name [INFO] [stderr] --> src/attack/substitution.rs:877:21 [INFO] [stderr] | [INFO] [stderr] 877 | Err(E) => {assert!(false, E); String::new()} [INFO] [stderr] | ^ help: convert the identifier to snake case: `e` [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/attack/substitution.rs:877:43 [INFO] [stderr] | [INFO] [stderr] 877 | Err(E) => {assert!(false, E); String::new()} [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: `#[warn(non_fmt_panics)]` on by default [INFO] [stderr] help: add a "{}" format string to `Display` the message [INFO] [stderr] | [INFO] [stderr] 877 | Err(E) => {assert!(false, "{}", E); String::new()} [INFO] [stderr] | +++++ [INFO] [stderr] [INFO] [stderr] warning: variable `E` should have a snake case name [INFO] [stderr] --> src/attack/substitution.rs:899:21 [INFO] [stderr] | [INFO] [stderr] 899 | Err(E) => {assert!(false, E); String::new()} [INFO] [stderr] | ^ help: convert the identifier to snake case: `e` [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/attack/substitution.rs:899:43 [INFO] [stderr] | [INFO] [stderr] 899 | Err(E) => {assert!(false, E); String::new()} [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] help: add a "{}" format string to `Display` the message [INFO] [stderr] | [INFO] [stderr] 899 | Err(E) => {assert!(false, "{}", E); String::new()} [INFO] [stderr] | +++++ [INFO] [stderr] [INFO] [stderr] warning: variable `E` should have a snake case name [INFO] [stderr] --> src/attack/substitution.rs:913:17 [INFO] [stderr] | [INFO] [stderr] 913 | Err(E) => {assert!(false, E); PathBuf::new()} [INFO] [stderr] | ^ help: convert the identifier to snake case: `e` [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/attack/substitution.rs:913:39 [INFO] [stderr] | [INFO] [stderr] 913 | Err(E) => {assert!(false, E); PathBuf::new()} [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] help: add a "{}" format string to `Display` the message [INFO] [stderr] | [INFO] [stderr] 913 | Err(E) => {assert!(false, "{}", E); PathBuf::new()} [INFO] [stderr] | +++++ [INFO] [stderr] [INFO] [stderr] warning: variable `E` should have a snake case name [INFO] [stderr] --> src/attack/substitution.rs:918:17 [INFO] [stderr] | [INFO] [stderr] 918 | Err(E) => {assert!(false, E); File::create("/tmp").unwrap()} [INFO] [stderr] | ^ help: convert the identifier to snake case: `e` [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/attack/substitution.rs:918:39 [INFO] [stderr] | [INFO] [stderr] 918 | Err(E) => {assert!(false, E); File::create("/tmp").unwrap()} [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] help: add a "{}" format string to `Display` the message [INFO] [stderr] | [INFO] [stderr] 918 | Err(E) => {assert!(false, "{}", E); File::create("/tmp").unwrap()} [INFO] [stderr] | +++++ [INFO] [stderr] [INFO] [stderr] warning: variable `E` should have a snake case name [INFO] [stderr] --> src/attack/substitution.rs:923:17 [INFO] [stderr] | [INFO] [stderr] 923 | Err(E) => {assert!(false, E); ()} [INFO] [stderr] | ^ help: convert the identifier to snake case: `e` [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/attack/substitution.rs:923:39 [INFO] [stderr] | [INFO] [stderr] 923 | Err(E) => {assert!(false, E); ()} [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] help: add a "{}" format string to `Display` the message [INFO] [stderr] | [INFO] [stderr] 923 | Err(E) => {assert!(false, "{}", E); ()} [INFO] [stderr] | +++++ [INFO] [stderr] [INFO] [stderr] warning: variable `E` should have a snake case name [INFO] [stderr] --> src/attack/substitution.rs:939:17 [INFO] [stderr] | [INFO] [stderr] 939 | Err(E) => {assert!(false, E); String::new()} [INFO] [stderr] | ^ help: convert the identifier to snake case: `e` [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/attack/substitution.rs:939:39 [INFO] [stderr] | [INFO] [stderr] 939 | Err(E) => {assert!(false, E); String::new()} [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] help: add a "{}" format string to `Display` the message [INFO] [stderr] | [INFO] [stderr] 939 | Err(E) => {assert!(false, "{}", E); String::new()} [INFO] [stderr] | +++++ [INFO] [stderr] [INFO] [stderr] warning: variable `THIS_TEST_CHARSET` should have a snake case name [INFO] [stderr] --> src/attack/substitution.rs:1065:13 [INFO] [stderr] | [INFO] [stderr] 1065 | let THIS_TEST_CHARSET = "12345"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `this_test_charset` [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/attack/substitution.rs:1213:17 [INFO] [stderr] | [INFO] [stderr] 1213 | format!("Extracted key {} was not among original ones.", &extracted_cipherletter)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stderr] help: remove the `format!(..)` macro call [INFO] [stderr] | [INFO] [stderr] 1213 - format!("Extracted key {} was not among original ones.", &extracted_cipherletter)); [INFO] [stderr] 1213 + "Extracted key {} was not among original ones.", &extracted_cipherletter); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/attack/substitution.rs:1223:17 [INFO] [stderr] | [INFO] [stderr] 1223 | format!("Extracted cipherletter {} was not removed from mapping", &extracted_cipherletter)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stderr] help: remove the `format!(..)` macro call [INFO] [stderr] | [INFO] [stderr] 1223 - format!("Extracted cipherletter {} was not removed from mapping", &extracted_cipherletter)); [INFO] [stderr] 1223 + "Extracted cipherletter {} was not removed from mapping", &extracted_cipherletter); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `E` should have a snake case name [INFO] [stderr] --> src/attack/substitution.rs:1229:20 [INFO] [stderr] | [INFO] [stderr] 1229 | if let Err(E) = mapping.pop_item() { [INFO] [stderr] | ^ help: convert the identifier to snake case: `e` [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/attack/substitution.rs:1232:41 [INFO] [stderr] | [INFO] [stderr] 1232 | error => assert!(false, format!("Raised error was not the one \ [INFO] [stderr] | _________________________________________^ [INFO] [stderr] 1233 | | we were expecting but {} instead", error)) [INFO] [stderr] | |___________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stderr] help: remove the `format!(..)` macro call [INFO] [stderr] | [INFO] [stderr] 1232 ~ error => assert!(false, "Raised error was not the one \ [INFO] [stderr] 1233 ~ we were expecting but {} instead", error) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `E` should have a snake case name [INFO] [stderr] --> src/cipher/substitution.rs:170:17 [INFO] [stderr] | [INFO] [stderr] 170 | Err(E) => { [INFO] [stderr] | ^ help: convert the identifier to snake case: `e` [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/cipher/substitution.rs:171:32 [INFO] [stderr] | [INFO] [stderr] 171 | assert!(false, format!("Error happened: {}", E)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stderr] help: remove the `format!(..)` macro call [INFO] [stderr] | [INFO] [stderr] 171 - assert!(false, format!("Error happened: {}", E)) [INFO] [stderr] 171 + assert!(false, "Error happened: {}", E) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `E` should have a snake case name [INFO] [stderr] --> src/cipher/substitution.rs:182:17 [INFO] [stderr] | [INFO] [stderr] 182 | Err(E) => { [INFO] [stderr] | ^ help: convert the identifier to snake case: `e` [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/cipher/substitution.rs:183:32 [INFO] [stderr] | [INFO] [stderr] 183 | assert!(false, format!("Error happened: {}", E)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stderr] help: remove the `format!(..)` macro call [INFO] [stderr] | [INFO] [stderr] 183 - assert!(false, format!("Error happened: {}", E)) [INFO] [stderr] 183 + assert!(false, "Error happened: {}", E) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `E` should have a snake case name [INFO] [stderr] --> src/cipher/substitution.rs:192:20 [INFO] [stderr] | [INFO] [stderr] 192 | if let Err(E) = cipher("", wrong_key, test_charset) { [INFO] [stderr] | ^ help: convert the identifier to snake case: `e` [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/cipher/substitution.rs:195:41 [INFO] [stderr] | [INFO] [stderr] 195 | error => assert!(false, format!("Raised error was not the one \ [INFO] [stderr] | _________________________________________^ [INFO] [stderr] 196 | | we were expecting but {} instead", error)) [INFO] [stderr] | |___________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stderr] help: remove the `format!(..)` macro call [INFO] [stderr] | [INFO] [stderr] 195 ~ error => assert!(false, "Raised error was not the one \ [INFO] [stderr] 196 ~ we were expecting but {} instead", error) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `E` should have a snake case name [INFO] [stderr] --> src/cipher/substitution.rs:205:20 [INFO] [stderr] | [INFO] [stderr] 205 | if let Err(E) = cipher("", wrong_key, test_charset) { [INFO] [stderr] | ^ help: convert the identifier to snake case: `e` [INFO] [stderr] [INFO] [stderr] warning: panic message is not a string literal [INFO] [stderr] --> src/cipher/substitution.rs:208:41 [INFO] [stderr] | [INFO] [stderr] 208 | error => assert!(false, format!("Raised error was not the one \ [INFO] [stderr] | _________________________________________^ [INFO] [stderr] 209 | | we were expecting but {} instead", error)) [INFO] [stderr] | |___________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stderr] help: remove the `format!(..)` macro call [INFO] [stderr] | [INFO] [stderr] 208 ~ error => assert!(false, "Raised error was not the one \ [INFO] [stderr] 209 ~ we were expecting but {} instead", error) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `cifra` (bin "cifra" test) generated 50 warnings [INFO] [stderr] warning: `cifra` (lib test) generated 159 warnings (55 duplicates) (run `cargo fix --lib -p cifra --tests` to apply 36 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.17s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/x86_64-unknown-linux-musl/debug/deps/cifra-7afe1793095da891) [INFO] [stderr] error: test failed, to rerun pass `--lib` [INFO] [stderr] [INFO] [stderr] Caused by: [INFO] [stderr] process didn't exit successfully: `/opt/rustwide/target/x86_64-unknown-linux-musl/debug/deps/cifra-7afe1793095da891` (signal: 11, SIGSEGV: invalid memory reference) [INFO] running `Command { std: "docker" "inspect" "2da8ea586aba9289481b6be8d9ddba49c2c73a3083aa8cb14108612219416f49", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2da8ea586aba9289481b6be8d9ddba49c2c73a3083aa8cb14108612219416f49", kill_on_drop: false }` [INFO] [stdout] 2da8ea586aba9289481b6be8d9ddba49c2c73a3083aa8cb14108612219416f49