[INFO] fetching crate cifra 0.9.3+post3...
[INFO] checking cifra-0.9.3+post3 against try#012cd62c9add58ab3910e44c137d87db3ab70f61 for pr-155915
[INFO] extracting crate cifra 0.9.3+post3 into /workspace/builds/worker-3-tc2/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-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate cifra 0.9.3+post3 on toolchain 012cd62c9add58ab3910e44c137d87db3ab70f61
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "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" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 208cc5038c89ea04a7a083eebbabd2dc2cc1ef4eeb9f64271135ff500d4ff8e6
[INFO] running `Command { std: "docker" "start" "-a" "208cc5038c89ea04a7a083eebbabd2dc2cc1ef4eeb9f64271135ff500d4ff8e6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "208cc5038c89ea04a7a083eebbabd2dc2cc1ef4eeb9f64271135ff500d4ff8e6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "208cc5038c89ea04a7a083eebbabd2dc2cc1ef4eeb9f64271135ff500d4ff8e6", kill_on_drop: false }`
[INFO] [stdout] 208cc5038c89ea04a7a083eebbabd2dc2cc1ef4eeb9f64271135ff500d4ff8e6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 412630e3c10cdd511c6b586ddbbb922e74cca24ab1b5ec38901745e9b212010e
[INFO] running `Command { std: "docker" "start" "-a" "412630e3c10cdd511c6b586ddbbb922e74cca24ab1b5ec38901745e9b212010e", 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 unicode-xid v0.2.2
[INFO] [stderr]    Compiling syn v1.0.82
[INFO] [stderr]    Compiling pkg-config v0.3.24
[INFO] [stderr]    Compiling memchr v2.4.1
[INFO] [stderr]    Compiling cc v1.0.72
[INFO] [stderr]    Compiling crossbeam-utils v0.8.5
[INFO] [stderr]    Compiling getrandom v0.1.16
[INFO] [stderr]     Checking ppv-lite86 v0.2.15
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.5
[INFO] [stderr]    Compiling miniz_oxide v0.4.4
[INFO] [stderr]     Checking scopeguard v1.1.0
[INFO] [stderr]    Compiling rayon-core v1.9.1
[INFO] [stderr]    Compiling byteorder v1.4.3
[INFO] [stderr]    Compiling indexmap v1.7.0
[INFO] [stderr]    Compiling quote v1.0.10
[INFO] [stderr]    Compiling semver-parser v0.7.0
[INFO] [stderr]    Compiling libsqlite3-sys v0.22.2
[INFO] [stderr]    Compiling version_check v0.9.3
[INFO] [stderr]     Checking getrandom v0.2.3
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking adler v1.0.2
[INFO] [stderr]     Checking gimli v0.26.1
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]    Compiling error-chain v0.12.4
[INFO] [stderr]    Compiling semver v0.9.0
[INFO] [stderr]     Checking rand_core v0.6.3
[INFO] [stderr]     Checking crossbeam-deque v0.8.1
[INFO] [stderr]     Checking num_cpus v1.13.0
[INFO] [stderr]     Checking object v0.27.1
[INFO] [stderr]     Checking crossbeam-channel v0.5.1
[INFO] [stderr]    Compiling rayon v1.5.1
[INFO] [stderr]    Compiling backtrace v0.3.63
[INFO] [stderr]     Checking hashbrown v0.11.2
[INFO] [stderr]     Checking rustc-demangle v0.1.21
[INFO] [stderr]    Compiling unicode-segmentation v1.8.0
[INFO] [stderr]    Compiling ring v0.14.6
[INFO] [stderr]    Compiling rustc_version v0.2.3
[INFO] [stderr]    Compiling heck v0.3.3
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking dirs-sys v0.3.6
[INFO] [stderr]     Checking aho-corasick v0.7.18
[INFO] [stderr]     Checking os_str_bytes v6.0.0
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]     Checking textwrap v0.14.2
[INFO] [stderr]     Checking termcolor v1.1.2
[INFO] [stderr]     Checking either v1.6.1
[INFO] [stderr]     Checking regex-syntax v0.6.25
[INFO] [stderr]     Checking clap v3.0.0-rc.5
[INFO] [stderr]     Checking dirs v4.0.0
[INFO] [stderr]     Checking rand v0.8.4
[INFO] [stderr]     Checking addr2line v0.17.0
[INFO] [stderr]    Compiling rstest v0.6.4
[INFO] [stderr]     Checking untrusted v0.6.2
[INFO] [stderr]     Checking strum v0.21.0
[INFO] [stderr]     Checking dotenv v0.15.0
[INFO] [stderr]     Checking linked-hash-map v0.5.4
[INFO] [stderr]     Checking tempfile v3.2.0
[INFO] [stderr]    Compiling cfg-if v0.1.10
[INFO] [stderr]     Checking regex v1.5.4
[INFO] [stderr]     Checking float-cmp v0.8.0
[INFO] [stderr]     Checking test_common v1.4.0
[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]     Checking migrations_internals v1.4.1
[INFO] [stderr]    Compiling migrations_macros v1.4.2
[INFO] [stderr]     Checking diesel_migrations v1.4.0
[INFO] [stderr]     Checking 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(nonstandard_style)]`) 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 32 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]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> 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 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(nonstandard_style)]`) 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 32 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]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> 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)]` (part of `#[warn(unused)]`) 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: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: `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: 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)]` (part of `#[warn(unused)]`) on by default
[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: 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<T, U>(ciphered_text: T, charset: U, testing: bool)-> Result<String>
[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<T, U>(ciphered_text: T, charset: U, testing: bool)-> Result<String>
[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<T, U>(ciphered_text: T, charset: U, testing: bool)-> Result<String>
[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<String> {
[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<String> {
[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<String> {
[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:31
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let mut offset_char = String::new();
[INFO] [stdout]     |                               ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 106 |             offset_char = offset_char.to_uppercase();
[INFO] [stdout]     |             ----------- `offset_char` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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<String, f64>
[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<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     fn get_next_word(&mut self) -> Option<String> {
[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<T>(text: T,
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     fn from_dict(letters: HashMap<char, u64>,
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     fn setup_for_matching(self, letter_counter: Counter<char>, width: usize) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     fn create_ordered_dict(mut self, letter_counter: Counter<char>) -> 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<T>(&self, key: T) -> Result<f64>
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     fn letters(&self) -> linked_hash_map::Keys<char, u64> {
[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<T>(text: T, length: usize) -> HashMap<String, Vec<usize>>
[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<T>(text: T, length: usize) -> HashMap<String, Vec<usize>>
[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<String, Vec<usize>>) {
[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<T>(ciphertext: T, step: usize) -> Vec<String>
[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<T>(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<T>(substring: T, reference_histogram: &LetterHistogram) -> Result<Vec<String>>
[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 `Clone` and `Debug`, 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)]` (part of `#[warn(nonstandard_style)]`) 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<usize>;
[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)]` (part of `#[warn(unused)]`) 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: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/attack/dictionaries.rs:340:17
[INFO] [stdout]     |
[INFO] [stdout] 340 |     pub fn iter(&self) -> InsertionOrderedSetIterator<T> {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type 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: 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)]` (part of `#[warn(unused)]`) on by default
[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: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/attack/frequency.rs:190:16
[INFO] [stdout]     |
[INFO] [stdout] 190 |     fn letters(&self) -> linked_hash_map::Keys<char, u64> {
[INFO] [stdout]     |                ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type 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: 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: 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: 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: 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: feature `trace_macros` is declared but not used
[INFO] [stdout]  --> src/lib.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(trace_macros)]
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_features)]` (part of `#[warn(unused)]`) on by default
[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: 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)]` (part of `#[warn(unused)]`) on by default
[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: 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: 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: unused variable: `missing`
[INFO] [stdout]     --> src/attack/substitution.rs:1125:13
[INFO] [stdout]      |
[INFO] [stdout] 1125 | ...   let missing: Vec<Mapping> = 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: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: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: `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: 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: `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: 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<T, U>(ciphered_text: T, charset: U, testing: bool)-> Result<String>
[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<T, U>(ciphered_text: T, charset: U, testing: bool)-> Result<String>
[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<T, U>(ciphered_text: T, charset: U, testing: bool)-> Result<String>
[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<String> {
[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<String> {
[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<String> {
[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:31
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let mut offset_char = String::new();
[INFO] [stdout]     |                               ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 106 |             offset_char = offset_char.to_uppercase();
[INFO] [stdout]     |             ----------- `offset_char` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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<String, f64>
[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<char, u64>,
[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 `Clone` and `Debug`, 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)]` (part of `#[warn(nonstandard_style)]`) 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<usize>;
[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)]` (part of `#[warn(unused)]`) 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: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/attack/dictionaries.rs:340:17
[INFO] [stdout]     |
[INFO] [stdout] 340 |     pub fn iter(&self) -> InsertionOrderedSetIterator<T> {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type 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::<Vec<_>>();
[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::<Vec<_>>();
[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::<Vec<_>>();
[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::<Vec<_>>();
[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::<Vec<_>>();
[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::<Vec<_>>();
[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::<Vec<_>>();
[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::<Vec<_>>();
[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::<Vec<_>>();
[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::<Vec<_>>();
[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::<Vec<_>>();
[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::<Vec<_>>();
[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 <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) 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 <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[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: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/attack/frequency.rs:190:16
[INFO] [stdout]     |
[INFO] [stdout] 190 |     fn letters(&self) -> linked_hash_map::Keys<char, u64> {
[INFO] [stdout]     |                ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type 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 <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[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] [stdout] warning: feature `trace_macros` is declared but not used
[INFO] [stdout]  --> src/lib.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(trace_macros)]
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_features)]` (part of `#[warn(unused)]`) on by default
[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)]` (part of `#[warn(unused)]`) 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: 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn get_integer_key_algorithms()-> HashSet<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn get_string_value(&self)-> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(nonstandard_style)]`) 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)]` (part of `#[warn(unused)]`) 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 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)]` (part of `#[warn(unused)]`) 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<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn get_integer_key_algorithms()-> HashSet<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn get_string_value(&self)-> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) 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<String>,
[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)]` (part of `#[warn(nonstandard_style)]`) 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)]` (part of `#[warn(unused)]`) 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::<Vec<_>>();
[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::<Vec<_>>();
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 50.36s
[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] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: migrations_internals v1.4.1
[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] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[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] running `Command { std: "docker" "inspect" "412630e3c10cdd511c6b586ddbbb922e74cca24ab1b5ec38901745e9b212010e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "412630e3c10cdd511c6b586ddbbb922e74cca24ab1b5ec38901745e9b212010e", kill_on_drop: false }`
[INFO] [stdout] 412630e3c10cdd511c6b586ddbbb922e74cca24ab1b5ec38901745e9b212010e
