[INFO] cloning repository https://github.com/moons03/rust_tls_layer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/moons03/rust_tls_layer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmoons03%2Frust_tls_layer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmoons03%2Frust_tls_layer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 259592b6868651f6fa8bc12d7367d305ae877ac5
[INFO] checking moons03/rust_tls_layer against master#642c19bfc3a5c1de985bf5d0cc8207ac9d22708a for pr-148577
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmoons03%2Frust_tls_layer" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/moons03/rust_tls_layer
[INFO] finished tweaking git repo https://github.com/moons03/rust_tls_layer
[INFO] tweaked toml for git repo https://github.com/moons03/rust_tls_layer written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/moons03/rust_tls_layer on toolchain 642c19bfc3a5c1de985bf5d0cc8207ac9d22708a
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/moons03/rust_tls_layer 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" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 6dc49dffa2a7d34851018a7b7dce46d8d2f50480b24364c409e19c80fa524ccd
[INFO] running `Command { std: "docker" "start" "-a" "6dc49dffa2a7d34851018a7b7dce46d8d2f50480b24364c409e19c80fa524ccd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6dc49dffa2a7d34851018a7b7dce46d8d2f50480b24364c409e19c80fa524ccd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6dc49dffa2a7d34851018a7b7dce46d8d2f50480b24364c409e19c80fa524ccd", kill_on_drop: false }`
[INFO] [stdout] 6dc49dffa2a7d34851018a7b7dce46d8d2f50480b24364c409e19c80fa524ccd
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e7f670648efde4a8e310337db8d889249721555cffe3833fbe997f93b9aee225
[INFO] running `Command { std: "docker" "start" "-a" "e7f670648efde4a8e310337db8d889249721555cffe3833fbe997f93b9aee225", kill_on_drop: false }`
[INFO] [stderr]     Checking types v0.1.0 (/opt/rustwide/workdir/src/types)
[INFO] [stdout] warning: unused variable: `iv`
[INFO] [stdout]  --> src/types/src/block_cipher.rs:1:92
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn ECB_MODE(cipher_func: fn([u8; 16], &[u8]) -> [u8; 16], data: Vec<u8>, key: Vec<u8>, iv: Vec<u8>, mode: bool) -> Vec<u8> {
[INFO] [stdout]   |                                                                                            ^^ help: if this is intentional, prefix it with an underscore: `_iv`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/types/src/block_cipher.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let mut pad_len = block_size - data.len() % block_size;
[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: trait `VecStructU32` is never used
[INFO] [stdout]   --> src/types/src/lib.rs:43:7
[INFO] [stdout]    |
[INFO] [stdout] 43 | trait VecStructU32 {
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ECB_MODE` should have a snake case name
[INFO] [stdout]  --> src/types/src/block_cipher.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn ECB_MODE(cipher_func: fn([u8; 16], &[u8]) -> [u8; 16], data: Vec<u8>, key: Vec<u8>, iv: Vec<u8>, mode: bool) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^ help: convert the identifier to snake case: `ecb_mode`
[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 variable: `iv`
[INFO] [stdout]  --> src/types/src/block_cipher.rs:1:92
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn ECB_MODE(cipher_func: fn([u8; 16], &[u8]) -> [u8; 16], data: Vec<u8>, key: Vec<u8>, iv: Vec<u8>, mode: bool) -> Vec<u8> {
[INFO] [stdout]   |                                                                                            ^^ help: if this is intentional, prefix it with an underscore: `_iv`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/types/src/block_cipher.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let mut pad_len = block_size - data.len() % block_size;
[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: trait `VecStructU32` is never used
[INFO] [stdout]   --> src/types/src/lib.rs:43:7
[INFO] [stdout]    |
[INFO] [stdout] 43 | trait VecStructU32 {
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ECB_MODE` should have a snake case name
[INFO] [stdout]  --> src/types/src/block_cipher.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn ECB_MODE(cipher_func: fn([u8; 16], &[u8]) -> [u8; 16], data: Vec<u8>, key: Vec<u8>, iv: Vec<u8>, mode: bool) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^ help: convert the identifier to snake case: `ecb_mode`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking aes v0.1.0 (/opt/rustwide/workdir/src/aes)
[INFO] [stdout] warning: unused import: `types::block_cipher`
[INFO] [stdout]  --> src/aes/src/core.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use types::block_cipher;
[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: `types::block_cipher`
[INFO] [stdout]  --> src/aes/src/core.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use types::block_cipher;
[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 variable: `nr`
[INFO] [stdout]   --> src/aes/src/core.rs:95:14
[INFO] [stdout]    |
[INFO] [stdout] 95 |     let (nk, nr, nwords) = get_aes_params(key.len());
[INFO] [stdout]    |              ^^ help: if this is intentional, prefix it with an underscore: `_nr`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking tls_layer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `nr`
[INFO] [stdout]   --> src/aes/src/core.rs:95:14
[INFO] [stdout]    |
[INFO] [stdout] 95 |     let (nk, nr, nwords) = get_aes_params(key.len());
[INFO] [stdout]    |              ^^ help: if this is intentional, prefix it with an underscore: `_nr`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/aes/src/crypto.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let mut aes = core::AES::new(self.key.clone(), block_cipher::ECB_MODE);
[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: constant `INV_S_BOX` is never used
[INFO] [stdout]   --> src/aes/src/core.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const INV_S_BOX: [u8; 256] = [
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inv_shift_rows` is never used
[INFO] [stdout]    --> src/aes/src/core.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn inv_shift_rows(state: [u8; 16]) -> [u8; 16] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mult` is never used
[INFO] [stdout]    --> src/aes/src/core.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub fn mult(a: u8, b: u8) -> u8 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inv_mix_columns` is never used
[INFO] [stdout]    --> src/aes/src/core.rs:167:8
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub fn inv_mix_columns(state: [u8; 16]) -> [u8; 16] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_decrypt_block` is never used
[INFO] [stdout]    --> src/aes/src/core.rs:182:8
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub fn aes_decrypt_block(plaintext: [u8; 16], key: &[u8]) -> [u8; 16] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `decrypt` is never used
[INFO] [stdout]    --> src/aes/src/core.rs:215:12
[INFO] [stdout]     |
[INFO] [stdout] 206 | impl AES {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn decrypt(&self, plaintext: Vec<u8>) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `H` should have a snake case name
[INFO] [stdout]   --> src/aes/src/crypto.rs:30:13
[INFO] [stdout]    |
[INFO] [stdout] 30 |         let H = aes.encrypt([0; 16].to_vec());
[INFO] [stdout]    |             ^ help: convert the identifier to snake case: `h`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/aes/src/crypto.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let mut aes = core::AES::new(self.key.clone(), block_cipher::ECB_MODE);
[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: variable `J0` should have a snake case name
[INFO] [stdout]   --> src/aes/src/crypto.rs:31:17
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let mut J0 = params.iv.clone();
[INFO] [stdout]    |                 ^^ help: convert the identifier to snake case: `j0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `S` should have a snake case name
[INFO] [stdout]   --> src/aes/src/crypto.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let S = core::ghash(H, params.aad.clone(), ciphertext.clone());
[INFO] [stdout]    |             ^ help: convert the identifier to snake case (notice the capitalization): `s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `J0` should have a snake case name
[INFO] [stdout]   --> src/aes/src/crypto.rs:61:17
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut J0 = params.iv.clone();
[INFO] [stdout]    |                 ^^ help: convert the identifier to snake case: `j0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `S` should have a snake case name
[INFO] [stdout]   --> src/aes/src/crypto.rs:79:13
[INFO] [stdout]    |
[INFO] [stdout] 79 |         let S = core::ghash(h, params.aad.clone(), ciphertext.clone());
[INFO] [stdout]    |             ^ help: convert the identifier to snake case (notice the capitalization): `s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INV_S_BOX` is never used
[INFO] [stdout]   --> src/aes/src/core.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const INV_S_BOX: [u8; 256] = [
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inv_shift_rows` is never used
[INFO] [stdout]    --> src/aes/src/core.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn inv_shift_rows(state: [u8; 16]) -> [u8; 16] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mult` is never used
[INFO] [stdout]    --> src/aes/src/core.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub fn mult(a: u8, b: u8) -> u8 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inv_mix_columns` is never used
[INFO] [stdout]    --> src/aes/src/core.rs:167:8
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub fn inv_mix_columns(state: [u8; 16]) -> [u8; 16] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_decrypt_block` is never used
[INFO] [stdout]    --> src/aes/src/core.rs:182:8
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub fn aes_decrypt_block(plaintext: [u8; 16], key: &[u8]) -> [u8; 16] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `decrypt` is never used
[INFO] [stdout]    --> src/aes/src/core.rs:215:12
[INFO] [stdout]     |
[INFO] [stdout] 206 | impl AES {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn decrypt(&self, plaintext: Vec<u8>) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `H` should have a snake case name
[INFO] [stdout]   --> src/aes/src/crypto.rs:30:13
[INFO] [stdout]    |
[INFO] [stdout] 30 |         let H = aes.encrypt([0; 16].to_vec());
[INFO] [stdout]    |             ^ help: convert the identifier to snake case: `h`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `J0` should have a snake case name
[INFO] [stdout]   --> src/aes/src/crypto.rs:31:17
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let mut J0 = params.iv.clone();
[INFO] [stdout]    |                 ^^ help: convert the identifier to snake case: `j0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `S` should have a snake case name
[INFO] [stdout]   --> src/aes/src/crypto.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let S = core::ghash(H, params.aad.clone(), ciphertext.clone());
[INFO] [stdout]    |             ^ help: convert the identifier to snake case (notice the capitalization): `s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `J0` should have a snake case name
[INFO] [stdout]   --> src/aes/src/crypto.rs:61:17
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut J0 = params.iv.clone();
[INFO] [stdout]    |                 ^^ help: convert the identifier to snake case: `j0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `S` should have a snake case name
[INFO] [stdout]   --> src/aes/src/crypto.rs:79:13
[INFO] [stdout]    |
[INFO] [stdout] 79 |         let S = core::ghash(h, params.aad.clone(), ciphertext.clone());
[INFO] [stdout]    |             ^ help: convert the identifier to snake case (notice the capitalization): `s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::TcpStream`
[INFO] [stdout]  --> src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::TcpStream;
[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: `std::io::Error`
[INFO] [stdout]  --> src/x509.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `types::VecStructU8`
[INFO] [stdout]  --> src/x509.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use types::VecStructU8;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `oid_struct` should have an upper camel case name
[INFO] [stdout]   --> src/x509.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct oid_struct {
[INFO] [stdout]    |            ^^^^^^^^^^ help: convert the identifier to upper camel case: `OidStruct`
[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: type `name_struct` should have an upper camel case name
[INFO] [stdout]   --> src/x509.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct name_struct {
[INFO] [stdout]    |            ^^^^^^^^^^^ help: convert the identifier to upper camel case: `NameStruct`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `time_struct` should have an upper camel case name
[INFO] [stdout]    --> src/x509.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct time_struct {
[INFO] [stdout]     |            ^^^^^^^^^^^ help: convert the identifier to upper camel case: `TimeStruct`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `self` and `write`
[INFO] [stdout]  --> src/db.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{self, write};
[INFO] [stdout]   |                ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::net`
[INFO] [stdout]  --> src/db.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::net;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HandshakeType`
[INFO] [stdout]  --> src/db.rs:5:24
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::handshake::{HandshakeType, Handshake, ClientKeyExchange, HandshakeFragment, Finished};
[INFO] [stdout]   |                        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ErrorKind`
[INFO] [stdout]   --> src/db.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::io::{Error, ErrorKind};
[INFO] [stdout]    |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `change_cipher_spec` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |         change_cipher_spec = 20,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ChangeCipherSpec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `alert` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:103:9
[INFO] [stdout]     |
[INFO] [stdout] 103 |         alert = 21,
[INFO] [stdout]     |         ^^^^^ help: convert the identifier to upper camel case: `Alert`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `handshake` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout] 104 |         handshake = 22,
[INFO] [stdout]     |         ^^^^^^^^^ help: convert the identifier to upper camel case: `Handshake`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `application_data` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |         application_data = 23,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ApplicationData`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `TLS_RSA_WITH_AES_256_GCM_SHA384` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:124:9
[INFO] [stdout]     |
[INFO] [stdout] 124 |         TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x9d,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `TlsRsaWithAes256GcmSha384`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `null` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:146:9
[INFO] [stdout]     |
[INFO] [stdout] 146 |         null = 0,
[INFO] [stdout]     |         ^^^^ help: convert the identifier to upper camel case: `Null`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Handshake_type` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:335:10
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub enum Handshake_type {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `HandshakeType`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `types::VecStructU8`
[INFO] [stdout]  --> src/net.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use types::VecStructU8;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TLSPlaintext`
[INFO] [stdout]  --> src/handshake.rs:1:32
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{define_enum_macro, TLSPlaintext, ProtocolVersion, CipherSuite, CompressionMethod, UsizeToVec};
[INFO] [stdout]   |                                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `types::VecStructU8`
[INFO] [stdout]  --> src/handshake.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use types::VecStructU8;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `hello_request` should have an upper camel case name
[INFO] [stdout]  --> src/handshake.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 |         hello_request = 0,
[INFO] [stdout]   |         ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `HelloRequest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `client_hello` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |         client_hello = 1,
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ClientHello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `server_hello` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |         server_hello = 2,
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerHello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `certificate` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |         certificate = 11,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Certificate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `server_key_exchange` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |         server_key_exchange = 12,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerKeyExchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `certificate_request` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |         certificate_request = 13,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CertificateRequest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `server_hello_done` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |         server_hello_done = 14,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerHelloDone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `certificate_verify` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |         certificate_verify = 15,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CertificateVerify`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `client_key_exchange` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |         client_key_exchange = 16,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ClientKeyExchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `finished` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |         finished = 20,
[INFO] [stdout]    |         ^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Finished`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `unknown` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         unknown = 255
[INFO] [stdout]    |         ^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Unknown`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `types::block_cipher`
[INFO] [stdout]  --> src/crypto.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use types::block_cipher;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `aes`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use aes;
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::TcpStream`
[INFO] [stdout]  --> src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::TcpStream;
[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: `std::io::Error`
[INFO] [stdout]  --> src/x509.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `types::VecStructU8`
[INFO] [stdout]  --> src/x509.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use types::VecStructU8;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `oid_struct` should have an upper camel case name
[INFO] [stdout]   --> src/x509.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct oid_struct {
[INFO] [stdout]    |            ^^^^^^^^^^ help: convert the identifier to upper camel case: `OidStruct`
[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: type `name_struct` should have an upper camel case name
[INFO] [stdout]   --> src/x509.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct name_struct {
[INFO] [stdout]    |            ^^^^^^^^^^^ help: convert the identifier to upper camel case: `NameStruct`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `time_struct` should have an upper camel case name
[INFO] [stdout]    --> src/x509.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct time_struct {
[INFO] [stdout]     |            ^^^^^^^^^^^ help: convert the identifier to upper camel case: `TimeStruct`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `self` and `write`
[INFO] [stdout]  --> src/db.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{self, write};
[INFO] [stdout]   |                ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::net`
[INFO] [stdout]  --> src/db.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::net;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HandshakeType`
[INFO] [stdout]  --> src/db.rs:5:24
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::handshake::{HandshakeType, Handshake, ClientKeyExchange, HandshakeFragment, Finished};
[INFO] [stdout]   |                        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ErrorKind`
[INFO] [stdout]   --> src/db.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::io::{Error, ErrorKind};
[INFO] [stdout]    |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `change_cipher_spec` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |         change_cipher_spec = 20,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ChangeCipherSpec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `alert` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:103:9
[INFO] [stdout]     |
[INFO] [stdout] 103 |         alert = 21,
[INFO] [stdout]     |         ^^^^^ help: convert the identifier to upper camel case: `Alert`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `handshake` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout] 104 |         handshake = 22,
[INFO] [stdout]     |         ^^^^^^^^^ help: convert the identifier to upper camel case: `Handshake`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `application_data` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |         application_data = 23,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ApplicationData`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `TLS_RSA_WITH_AES_256_GCM_SHA384` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:124:9
[INFO] [stdout]     |
[INFO] [stdout] 124 |         TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x9d,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `TlsRsaWithAes256GcmSha384`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `null` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:146:9
[INFO] [stdout]     |
[INFO] [stdout] 146 |         null = 0,
[INFO] [stdout]     |         ^^^^ help: convert the identifier to upper camel case: `Null`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Handshake_type` should have an upper camel case name
[INFO] [stdout]    --> src/db.rs:335:10
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub enum Handshake_type {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `HandshakeType`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `types::VecStructU8`
[INFO] [stdout]  --> src/net.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use types::VecStructU8;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TLSPlaintext`
[INFO] [stdout]  --> src/handshake.rs:1:32
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{define_enum_macro, TLSPlaintext, ProtocolVersion, CipherSuite, CompressionMethod, UsizeToVec};
[INFO] [stdout]   |                                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `types::VecStructU8`
[INFO] [stdout]  --> src/handshake.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use types::VecStructU8;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `hello_request` should have an upper camel case name
[INFO] [stdout]  --> src/handshake.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 |         hello_request = 0,
[INFO] [stdout]   |         ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `HelloRequest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `client_hello` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |         client_hello = 1,
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ClientHello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `server_hello` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |         server_hello = 2,
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerHello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `certificate` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |         certificate = 11,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Certificate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `server_key_exchange` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |         server_key_exchange = 12,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerKeyExchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `certificate_request` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |         certificate_request = 13,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CertificateRequest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `server_hello_done` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |         server_hello_done = 14,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerHelloDone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `certificate_verify` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |         certificate_verify = 15,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CertificateVerify`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `client_key_exchange` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |         client_key_exchange = 16,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ClientKeyExchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `finished` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |         finished = 20,
[INFO] [stdout]    |         ^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Finished`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `unknown` should have an upper camel case name
[INFO] [stdout]   --> src/handshake.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         unknown = 255
[INFO] [stdout]    |         ^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Unknown`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `types::block_cipher`
[INFO] [stdout]  --> src/crypto.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use types::block_cipher;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `aes`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use aes;
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hash`
[INFO] [stdout]  --> src/hash.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::hash::Hash;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `UsizeToVec`
[INFO] [stdout]  --> src/handshake.rs:1:95
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{define_enum_macro, TLSPlaintext, ProtocolVersion, CipherSuite, CompressionMethod, UsizeToVec};
[INFO] [stdout]   |                                                                                               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/x509.rs:283:20
[INFO] [stdout]     |
[INFO] [stdout] 283 |         let (_, _, mut data) = sig_alg.read_tlv();
[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: `length`
[INFO] [stdout]    --> src/x509.rs:446:19
[INFO] [stdout]     |
[INFO] [stdout] 446 |         let (tag, length, value) = self.read_tlv();
[INFO] [stdout]     |                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/x509.rs:502:13
[INFO] [stdout]     |
[INFO] [stdout] 502 |         let s = String::from_utf8_lossy(value).into_owned();
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/x509.rs:528:22
[INFO] [stdout]     |
[INFO] [stdout] 528 |                 let (tag, _, val) = ext_seq.read_tlv();
[INFO] [stdout]     |                      ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/x509.rs:534:18
[INFO] [stdout]     |
[INFO] [stdout] 534 |             let (tag, _, value) = ext_seq.read_tlv();
[INFO] [stdout]     |                  ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/hash.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 15 |         let (mut h, block_size, output_size, rounds, word_bytes) = hash_info(self.len);
[INFO] [stdout]    |              ----^
[INFO] [stdout]    |              |
[INFO] [stdout]    |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rounds`
[INFO] [stdout]   --> src/hash.rs:15:46
[INFO] [stdout]    |
[INFO] [stdout] 15 |         let (mut h, block_size, output_size, rounds, word_bytes) = hash_info(self.len);
[INFO] [stdout]    |                                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_rounds`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/db.rs:134:13
[INFO] [stdout]     |
[INFO] [stdout] 133 |             CipherSuite::TLS_RSA_WITH_AES_256_GCM_SHA384 => (32, 4),
[INFO] [stdout]     |             -------------------------------------------- matches all the relevant values
[INFO] [stdout] 134 |             _ => (0, 0)
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/db.rs:237:13
[INFO] [stdout]     |
[INFO] [stdout] 237 |             _ => { panic!("Unsupported content type: {:?}", content_type) }
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/db.rs:237:13
[INFO] [stdout]     |
[INFO] [stdout] 233 |             ContentType::alert => { TLSFragment::Alert(Alert::new()) }
[INFO] [stdout]     |             ------------------ matches some of the same values
[INFO] [stdout] 234 |             ContentType::handshake => { TLSFragment::Handshake(Handshake::new(1)) }
[INFO] [stdout]     |             ---------------------- matches some of the same values
[INFO] [stdout] 235 |             ContentType::application_data => { TLSFragment::ApplicationData(ApplicationData::new(vec![])) }
[INFO] [stdout]     |             ----------------------------- matches some of the same values
[INFO] [stdout] 236 |             ContentType::change_cipher_spec => { TLSFragment::ChangeCipherSpec(ChangeCipherSpec::new()) }
[INFO] [stdout]     |             ------------------------------- matches some of the same values
[INFO] [stdout] 237 |             _ => { panic!("Unsupported content type: {:?}", content_type) }
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/db.rs:249:13
[INFO] [stdout]     |
[INFO] [stdout] 249 |         let mut fragment = ClientKeyExchange::from_key(key);
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/handshake.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |             _ => panic!("Unsupported handshake fragment: {:?}", self)
[INFO] [stdout]    |             ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/handshake.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |             HandshakeFragment::ClientHello(client_hello) => client_hello.to_vec(),
[INFO] [stdout]    |             -------------------------------------------- matches some of the same values
[INFO] [stdout] 42 |             HandshakeFragment::ServerHello(server_hello) => server_hello.to_vec(),
[INFO] [stdout]    |             -------------------------------------------- matches some of the same values
[INFO] [stdout] 43 |             HandshakeFragment::ClientKeyExchange(client_key_exchange) => client_key_exchange.to_vec(),
[INFO] [stdout]    |             --------------------------------------------------------- matches some of the same values
[INFO] [stdout] 44 |             HandshakeFragment::Certificate(certificate) => certificate.to_vec(),
[INFO] [stdout]    |             ------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 48 |             _ => panic!("Unsupported handshake fragment: {:?}", self)
[INFO] [stdout]    |             ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/handshake.rs:192:13
[INFO] [stdout]     |
[INFO] [stdout] 192 |         let mut vec: Vec<u8> = Vec::new();
[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/bigint.rs:13:13
[INFO] [stdout]    |
[INFO] [stdout] 13 |         let mut base = self.mod_(modulus);
[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/main.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut client_hello_tls = steam_manager.send_handshake(db::Handshake_type::ClientHello)?;  // client hello
[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/main.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let mut server_hello_tls = steam_manager.read()?;  // server hello
[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/main.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut certificate_tls = steam_manager.read()?;  // certificate
[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/main.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let mut client_key_exchange_tls = steam_manager.send_handshake(db::Handshake_type::ClientKeyExchange)?;  // client key exchange
[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/main.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |     let mut change_cipher_spec_tls = steam_manager.send_spec_change()?;
[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/main.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |     let mut finished_tls = steam_manager.send_handshake(db::Handshake_type::Finished)?;
[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/main.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut server_spec_change = steam_manager.read()?;
[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/main.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 52 |     let mut server_finished_tls = steam_manager.read()?;
[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/main.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let mut data_tls = steam_manager.send_data(b"GET / HTTP/1.1\r\nHost: google.com\r\nConnection: close\r\nUser-Agent: CustomTLSClient/1...
[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/main.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let mut data_tls = steam_manager.read()?;
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `AlgorithmIdentifier` is more private than the item `Certificate::signatureAlgorithm`
[INFO] [stdout]    --> src/x509.rs:61:5
[INFO] [stdout]     |
[INFO] [stdout]  61 |     pub signatureAlgorithm: AlgorithmIdentifier,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `Certificate::signatureAlgorithm` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:264:1
[INFO] [stdout]     |
[INFO] [stdout] 264 | struct AlgorithmIdentifier {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `AlgorithmIdentifier` is more private than the item `TBSCertificate::signature`
[INFO] [stdout]    --> src/x509.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 191 |     pub signature: AlgorithmIdentifier,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::signature` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:264:1
[INFO] [stdout]     |
[INFO] [stdout] 264 | struct AlgorithmIdentifier {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Validity` is more private than the item `TBSCertificate::validity`
[INFO] [stdout]    --> src/x509.rs:193:5
[INFO] [stdout]     |
[INFO] [stdout] 193 |     pub validity: Validity,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::validity` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Validity` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:302:1
[INFO] [stdout]     |
[INFO] [stdout] 302 | struct Validity {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Extensions` is more private than the item `TBSCertificate::extensions`
[INFO] [stdout]    --> src/x509.rs:198:5
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub extensions: Extensions,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::extensions` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Extensions` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:317:1
[INFO] [stdout]     |
[INFO] [stdout] 317 | struct Extensions {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `AlgorithmIdentifier` is more private than the item `SubjectPublicKeyInfo::algorithm`
[INFO] [stdout]    --> src/x509.rs:359:5
[INFO] [stdout]     |
[INFO] [stdout] 359 |     pub algorithm: AlgorithmIdentifier,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `SubjectPublicKeyInfo::algorithm` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:264:1
[INFO] [stdout]     |
[INFO] [stdout] 264 | struct AlgorithmIdentifier {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Validity` is more private than the item `ASN1Parser::<'a>::parse_validity`
[INFO] [stdout]    --> src/x509.rs:506:5
[INFO] [stdout]     |
[INFO] [stdout] 506 |     pub fn parse_validity(&mut self) -> Validity {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ASN1Parser::<'a>::parse_validity` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Validity` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:302:1
[INFO] [stdout]     |
[INFO] [stdout] 302 | struct Validity {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Extensions` is more private than the item `ASN1Parser::<'a>::parse_extensions`
[INFO] [stdout]    --> src/x509.rs:514:5
[INFO] [stdout]     |
[INFO] [stdout] 514 |     pub fn parse_extensions(&mut self) -> Extensions {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ASN1Parser::<'a>::parse_extensions` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Extensions` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:317:1
[INFO] [stdout]     |
[INFO] [stdout] 317 | struct Extensions {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ChangeCipherSpec` is more private than the item `TLSFragment::ChangeCipherSpec::0`
[INFO] [stdout]    --> src/db.rs:193:22
[INFO] [stdout]     |
[INFO] [stdout] 193 |     ChangeCipherSpec(ChangeCipherSpec),
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^ field `TLSFragment::ChangeCipherSpec::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `ChangeCipherSpec` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/db.rs:151:1
[INFO] [stdout]     |
[INFO] [stdout] 151 | struct ChangeCipherSpec {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Alert` is more private than the item `TLSFragment::Alert::0`
[INFO] [stdout]    --> src/db.rs:194:11
[INFO] [stdout]     |
[INFO] [stdout] 194 |     Alert(Alert),
[INFO] [stdout]     |           ^^^^^ field `TLSFragment::Alert::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Alert` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/db.rs:165:1
[INFO] [stdout]     |
[INFO] [stdout] 165 | struct Alert {
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `VecCertificateSequence` is never used
[INFO] [stdout]   --> src/x509.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait VecCertificateSequence {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `to_string`, `from_u32`, and `iter` are never used
[INFO] [stdout]    --> src/db.rs:49:20
[INFO] [stdout]     |
[INFO] [stdout]  48 |           impl $name {
[INFO] [stdout]     |           ---------- associated items in this implementation
[INFO] [stdout]  49 |               pub fn to_string(&self) -> String {
[INFO] [stdout]     |                      ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |               pub fn from_u32(value: u32) -> Option<Self> {
[INFO] [stdout]     |                      ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |               pub fn iter() -> Vec<Self>{
[INFO] [stdout]     |                      ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 | / define_enum_macro! {
[INFO] [stdout] 100 | |     #[derive(Debug)]
[INFO] [stdout] 101 | |     pub enum ContentType {
[INFO] [stdout] 102 | |         change_cipher_spec = 20,
[INFO] [stdout] ...   |
[INFO] [stdout] 107 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_u32` is never used
[INFO] [stdout]    --> src/db.rs:62:20
[INFO] [stdout]     |
[INFO] [stdout]  48 |           impl $name {
[INFO] [stdout]     |           ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  62 |               pub fn from_u32(value: u32) -> Option<Self> {
[INFO] [stdout]     |                      ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 | / define_enum_macro! {
[INFO] [stdout] 110 | |     #[derive(Debug)]
[INFO] [stdout] 111 | |     pub enum CipherSuite {
[INFO] [stdout] ...   |
[INFO] [stdout] 127 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `to_string`, `from_u32`, and `iter` are never used
[INFO] [stdout]    --> src/db.rs:49:20
[INFO] [stdout]     |
[INFO] [stdout]  48 |           impl $name {
[INFO] [stdout]     |           ---------- associated items in this implementation
[INFO] [stdout]  49 |               pub fn to_string(&self) -> String {
[INFO] [stdout]     |                      ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |               pub fn from_u32(value: u32) -> Option<Self> {
[INFO] [stdout]     |                      ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |               pub fn iter() -> Vec<Self>{
[INFO] [stdout]     |                      ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 | / define_enum_macro!(
[INFO] [stdout] 144 | |     #[derive(Debug)]
[INFO] [stdout] 145 | |     pub enum CompressionMethod {
[INFO] [stdout] 146 | |         null = 0,
[INFO] [stdout] 147 | |     }
[INFO] [stdout] 148 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UsizeToVec` is never used
[INFO] [stdout]    --> src/db.rs:318:11
[INFO] [stdout]     |
[INFO] [stdout] 318 | pub trait UsizeToVec {
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ServerHello` and `Certificate` are never constructed
[INFO] [stdout]    --> src/db.rs:337:5
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub enum Handshake_type {
[INFO] [stdout]     |          -------------- variants in this enum
[INFO] [stdout] 336 |     ClientHello = 0x01,
[INFO] [stdout] 337 |     ServerHello = 0x02,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 338 |     Certificate = 0x0b,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Handshake_type` 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: associated items `from_u8`, `to_u8`, and `to_string` are never used
[INFO] [stdout]    --> src/db.rs:344:12
[INFO] [stdout]     |
[INFO] [stdout] 343 | impl Handshake_type {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 344 |     pub fn from_u8(value: u8) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     pub fn to_u8(self) -> u8 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub fn to_string(self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send` is never used
[INFO] [stdout]    --> src/db.rs:410:12
[INFO] [stdout]     |
[INFO] [stdout] 403 | impl TLSStreamManager {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn send(&mut self, tls: &mut TLSPlaintext) -> Result<TLSPlaintext, Error> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_tls` is never used
[INFO] [stdout]  --> src/net.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn write_tls(stream: &mut TcpStream, tls: &mut db::TLSPlaintext) -> Result<(), Error> {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_tls` is never used
[INFO] [stdout]   --> src/net.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn read_tls(stream: &mut TcpStream) -> Result<db::TLSPlaintext, Error> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `to_string` and `iter` are never used
[INFO] [stdout]   --> src/db.rs:49:20
[INFO] [stdout]    |
[INFO] [stdout] 48 |           impl $name {
[INFO] [stdout]    |           ---------- associated items in this implementation
[INFO] [stdout] 49 |               pub fn to_string(&self) -> String {
[INFO] [stdout]    |                      ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |               pub fn iter() -> Vec<Self>{
[INFO] [stdout]    |                      ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/handshake.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / define_enum_macro! {
[INFO] [stdout]  7 | |     #[derive(Debug)]
[INFO] [stdout]  8 | |     pub enum HandshakeType {
[INFO] [stdout]  9 | |         hello_request = 0,
[INFO] [stdout] ...  |
[INFO] [stdout] 21 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/handshake.rs:263:12
[INFO] [stdout]     |
[INFO] [stdout] 262 | impl HandshakeCertificate {
[INFO] [stdout]     | ------------------------- associated function in this implementation
[INFO] [stdout] 263 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `add`, `complement`, and `shr1` are never used
[INFO] [stdout]    --> src/bigint.rs:87:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl BigInt {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn add(&self, other: &Self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn complement(&self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn shr1(a: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait method `parseLength` should have a snake case name
[INFO] [stdout]   --> src/x509.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 |     fn parseLength(&self) -> (u32, Vec<u8>);
[INFO] [stdout]    |        ^^^^^^^^^^^ help: convert the identifier to snake case: `parse_length`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `tbsCertificate` should have a snake case name
[INFO] [stdout]   --> src/x509.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     pub tbsCertificate: TBSCertificate,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `tbs_certificate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `signatureAlgorithm` should have a snake case name
[INFO] [stdout]   --> src/x509.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub signatureAlgorithm: AlgorithmIdentifier,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `signature_algorithm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `signatureValue` should have a snake case name
[INFO] [stdout]   --> src/x509.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub signatureValue: Vec<u8>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `signature_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `serialNumber` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:190:5
[INFO] [stdout]     |
[INFO] [stdout] 190 |     serialNumber: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^^^^^^^ help: convert the identifier to snake case: `serial_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `issuerUniqueID` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:196:9
[INFO] [stdout]     |
[INFO] [stdout] 196 |     pub issuerUniqueID: Option<Vec<u8>>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `issuer_unique_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `subjectUniqueID` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:197:9
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub subjectUniqueID: Option<Vec<u8>>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `subject_unique_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `notBefore` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:303:5
[INFO] [stdout]     |
[INFO] [stdout] 303 |     notBefore: time_struct,
[INFO] [stdout]     |     ^^^^^^^^^ help: convert the identifier to snake case: `not_before`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `notAfter` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:304:5
[INFO] [stdout]     |
[INFO] [stdout] 304 |     notAfter: time_struct,
[INFO] [stdout]     |     ^^^^^^^^ help: convert the identifier to snake case: `not_after`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `publicKey` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:360:9
[INFO] [stdout]     |
[INFO] [stdout] 360 |     pub publicKey: PublicKey,
[INFO] [stdout]     |         ^^^^^^^^^ help: convert the identifier to snake case: `public_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `publicKey` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:391:25
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub fn parse_public_key(publicKey: &[u8]) -> (Vec<u8>, Vec<u8>) {
[INFO] [stdout]     |                         ^^^^^^^^^ help: convert the identifier to snake case: `public_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `publicKey_seq` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:392:13
[INFO] [stdout]     |
[INFO] [stdout] 392 |     let mut publicKey_seq = ASN1Parser::new(publicKey)
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `public_key_seq`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `handshakeType` should have a snake case name
[INFO] [stdout]    --> src/handshake.rs:209:16
[INFO] [stdout]     |
[INFO] [stdout] 209 |     pub fn new(handshakeType: u32) -> Self {
[INFO] [stdout]     |                ^^^^^^^^^^^^^ help: convert the identifier to snake case: `handshake_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `tbsCertificate` should have a snake case name
[INFO] [stdout]    --> src/handshake.rs:259:9
[INFO] [stdout]     |
[INFO] [stdout] 259 |     pub tbsCertificate: Vec<Certificate>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `tbs_certificate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hash`
[INFO] [stdout]  --> src/hash.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::hash::Hash;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `UsizeToVec`
[INFO] [stdout]  --> src/handshake.rs:1:95
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{define_enum_macro, TLSPlaintext, ProtocolVersion, CipherSuite, CompressionMethod, UsizeToVec};
[INFO] [stdout]   |                                                                                               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/x509.rs:283:20
[INFO] [stdout]     |
[INFO] [stdout] 283 |         let (_, _, mut data) = sig_alg.read_tlv();
[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: `length`
[INFO] [stdout]    --> src/x509.rs:446:19
[INFO] [stdout]     |
[INFO] [stdout] 446 |         let (tag, length, value) = self.read_tlv();
[INFO] [stdout]     |                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/x509.rs:502:13
[INFO] [stdout]     |
[INFO] [stdout] 502 |         let s = String::from_utf8_lossy(value).into_owned();
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/x509.rs:528:22
[INFO] [stdout]     |
[INFO] [stdout] 528 |                 let (tag, _, val) = ext_seq.read_tlv();
[INFO] [stdout]     |                      ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/x509.rs:534:18
[INFO] [stdout]     |
[INFO] [stdout] 534 |             let (tag, _, value) = ext_seq.read_tlv();
[INFO] [stdout]     |                  ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/hash.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 15 |         let (mut h, block_size, output_size, rounds, word_bytes) = hash_info(self.len);
[INFO] [stdout]    |              ----^
[INFO] [stdout]    |              |
[INFO] [stdout]    |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rounds`
[INFO] [stdout]   --> src/hash.rs:15:46
[INFO] [stdout]    |
[INFO] [stdout] 15 |         let (mut h, block_size, output_size, rounds, word_bytes) = hash_info(self.len);
[INFO] [stdout]    |                                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_rounds`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/db.rs:134:13
[INFO] [stdout]     |
[INFO] [stdout] 133 |             CipherSuite::TLS_RSA_WITH_AES_256_GCM_SHA384 => (32, 4),
[INFO] [stdout]     |             -------------------------------------------- matches all the relevant values
[INFO] [stdout] 134 |             _ => (0, 0)
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/db.rs:237:13
[INFO] [stdout]     |
[INFO] [stdout] 237 |             _ => { panic!("Unsupported content type: {:?}", content_type) }
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/db.rs:237:13
[INFO] [stdout]     |
[INFO] [stdout] 233 |             ContentType::alert => { TLSFragment::Alert(Alert::new()) }
[INFO] [stdout]     |             ------------------ matches some of the same values
[INFO] [stdout] 234 |             ContentType::handshake => { TLSFragment::Handshake(Handshake::new(1)) }
[INFO] [stdout]     |             ---------------------- matches some of the same values
[INFO] [stdout] 235 |             ContentType::application_data => { TLSFragment::ApplicationData(ApplicationData::new(vec![])) }
[INFO] [stdout]     |             ----------------------------- matches some of the same values
[INFO] [stdout] 236 |             ContentType::change_cipher_spec => { TLSFragment::ChangeCipherSpec(ChangeCipherSpec::new()) }
[INFO] [stdout]     |             ------------------------------- matches some of the same values
[INFO] [stdout] 237 |             _ => { panic!("Unsupported content type: {:?}", content_type) }
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/db.rs:249:13
[INFO] [stdout]     |
[INFO] [stdout] 249 |         let mut fragment = ClientKeyExchange::from_key(key);
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/handshake.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |             _ => panic!("Unsupported handshake fragment: {:?}", self)
[INFO] [stdout]    |             ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/handshake.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |             HandshakeFragment::ClientHello(client_hello) => client_hello.to_vec(),
[INFO] [stdout]    |             -------------------------------------------- matches some of the same values
[INFO] [stdout] 42 |             HandshakeFragment::ServerHello(server_hello) => server_hello.to_vec(),
[INFO] [stdout]    |             -------------------------------------------- matches some of the same values
[INFO] [stdout] 43 |             HandshakeFragment::ClientKeyExchange(client_key_exchange) => client_key_exchange.to_vec(),
[INFO] [stdout]    |             --------------------------------------------------------- matches some of the same values
[INFO] [stdout] 44 |             HandshakeFragment::Certificate(certificate) => certificate.to_vec(),
[INFO] [stdout]    |             ------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 48 |             _ => panic!("Unsupported handshake fragment: {:?}", self)
[INFO] [stdout]    |             ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/handshake.rs:192:13
[INFO] [stdout]     |
[INFO] [stdout] 192 |         let mut vec: Vec<u8> = Vec::new();
[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/bigint.rs:13:13
[INFO] [stdout]    |
[INFO] [stdout] 13 |         let mut base = self.mod_(modulus);
[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/main.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut client_hello_tls = steam_manager.send_handshake(db::Handshake_type::ClientHello)?;  // client hello
[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/main.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let mut server_hello_tls = steam_manager.read()?;  // server hello
[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/main.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut certificate_tls = steam_manager.read()?;  // certificate
[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/main.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let mut client_key_exchange_tls = steam_manager.send_handshake(db::Handshake_type::ClientKeyExchange)?;  // client key exchange
[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/main.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |     let mut change_cipher_spec_tls = steam_manager.send_spec_change()?;
[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/main.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |     let mut finished_tls = steam_manager.send_handshake(db::Handshake_type::Finished)?;
[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/main.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut server_spec_change = steam_manager.read()?;
[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/main.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 52 |     let mut server_finished_tls = steam_manager.read()?;
[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/main.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let mut data_tls = steam_manager.send_data(b"GET / HTTP/1.1\r\nHost: google.com\r\nConnection: close\r\nUser-Agent: CustomTLSClient/1...
[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/main.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let mut data_tls = steam_manager.read()?;
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `AlgorithmIdentifier` is more private than the item `Certificate::signatureAlgorithm`
[INFO] [stdout]    --> src/x509.rs:61:5
[INFO] [stdout]     |
[INFO] [stdout]  61 |     pub signatureAlgorithm: AlgorithmIdentifier,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `Certificate::signatureAlgorithm` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:264:1
[INFO] [stdout]     |
[INFO] [stdout] 264 | struct AlgorithmIdentifier {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `AlgorithmIdentifier` is more private than the item `TBSCertificate::signature`
[INFO] [stdout]    --> src/x509.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 191 |     pub signature: AlgorithmIdentifier,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::signature` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:264:1
[INFO] [stdout]     |
[INFO] [stdout] 264 | struct AlgorithmIdentifier {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Validity` is more private than the item `TBSCertificate::validity`
[INFO] [stdout]    --> src/x509.rs:193:5
[INFO] [stdout]     |
[INFO] [stdout] 193 |     pub validity: Validity,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::validity` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Validity` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:302:1
[INFO] [stdout]     |
[INFO] [stdout] 302 | struct Validity {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Extensions` is more private than the item `TBSCertificate::extensions`
[INFO] [stdout]    --> src/x509.rs:198:5
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub extensions: Extensions,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::extensions` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Extensions` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:317:1
[INFO] [stdout]     |
[INFO] [stdout] 317 | struct Extensions {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `AlgorithmIdentifier` is more private than the item `SubjectPublicKeyInfo::algorithm`
[INFO] [stdout]    --> src/x509.rs:359:5
[INFO] [stdout]     |
[INFO] [stdout] 359 |     pub algorithm: AlgorithmIdentifier,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `SubjectPublicKeyInfo::algorithm` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:264:1
[INFO] [stdout]     |
[INFO] [stdout] 264 | struct AlgorithmIdentifier {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Validity` is more private than the item `ASN1Parser::<'a>::parse_validity`
[INFO] [stdout]    --> src/x509.rs:506:5
[INFO] [stdout]     |
[INFO] [stdout] 506 |     pub fn parse_validity(&mut self) -> Validity {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ASN1Parser::<'a>::parse_validity` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Validity` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:302:1
[INFO] [stdout]     |
[INFO] [stdout] 302 | struct Validity {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Extensions` is more private than the item `ASN1Parser::<'a>::parse_extensions`
[INFO] [stdout]    --> src/x509.rs:514:5
[INFO] [stdout]     |
[INFO] [stdout] 514 |     pub fn parse_extensions(&mut self) -> Extensions {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ASN1Parser::<'a>::parse_extensions` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Extensions` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/x509.rs:317:1
[INFO] [stdout]     |
[INFO] [stdout] 317 | struct Extensions {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ChangeCipherSpec` is more private than the item `TLSFragment::ChangeCipherSpec::0`
[INFO] [stdout]    --> src/db.rs:193:22
[INFO] [stdout]     |
[INFO] [stdout] 193 |     ChangeCipherSpec(ChangeCipherSpec),
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^ field `TLSFragment::ChangeCipherSpec::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `ChangeCipherSpec` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/db.rs:151:1
[INFO] [stdout]     |
[INFO] [stdout] 151 | struct ChangeCipherSpec {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Alert` is more private than the item `TLSFragment::Alert::0`
[INFO] [stdout]    --> src/db.rs:194:11
[INFO] [stdout]     |
[INFO] [stdout] 194 |     Alert(Alert),
[INFO] [stdout]     |           ^^^^^ field `TLSFragment::Alert::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Alert` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/db.rs:165:1
[INFO] [stdout]     |
[INFO] [stdout] 165 | struct Alert {
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `VecCertificateSequence` is never used
[INFO] [stdout]   --> src/x509.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait VecCertificateSequence {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `to_string`, `from_u32`, and `iter` are never used
[INFO] [stdout]    --> src/db.rs:49:20
[INFO] [stdout]     |
[INFO] [stdout]  48 |           impl $name {
[INFO] [stdout]     |           ---------- associated items in this implementation
[INFO] [stdout]  49 |               pub fn to_string(&self) -> String {
[INFO] [stdout]     |                      ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |               pub fn from_u32(value: u32) -> Option<Self> {
[INFO] [stdout]     |                      ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |               pub fn iter() -> Vec<Self>{
[INFO] [stdout]     |                      ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 | / define_enum_macro! {
[INFO] [stdout] 100 | |     #[derive(Debug)]
[INFO] [stdout] 101 | |     pub enum ContentType {
[INFO] [stdout] 102 | |         change_cipher_spec = 20,
[INFO] [stdout] ...   |
[INFO] [stdout] 107 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_u32` is never used
[INFO] [stdout]    --> src/db.rs:62:20
[INFO] [stdout]     |
[INFO] [stdout]  48 |           impl $name {
[INFO] [stdout]     |           ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  62 |               pub fn from_u32(value: u32) -> Option<Self> {
[INFO] [stdout]     |                      ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 | / define_enum_macro! {
[INFO] [stdout] 110 | |     #[derive(Debug)]
[INFO] [stdout] 111 | |     pub enum CipherSuite {
[INFO] [stdout] ...   |
[INFO] [stdout] 127 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `to_string`, `from_u32`, and `iter` are never used
[INFO] [stdout]    --> src/db.rs:49:20
[INFO] [stdout]     |
[INFO] [stdout]  48 |           impl $name {
[INFO] [stdout]     |           ---------- associated items in this implementation
[INFO] [stdout]  49 |               pub fn to_string(&self) -> String {
[INFO] [stdout]     |                      ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |               pub fn from_u32(value: u32) -> Option<Self> {
[INFO] [stdout]     |                      ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |               pub fn iter() -> Vec<Self>{
[INFO] [stdout]     |                      ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 | / define_enum_macro!(
[INFO] [stdout] 144 | |     #[derive(Debug)]
[INFO] [stdout] 145 | |     pub enum CompressionMethod {
[INFO] [stdout] 146 | |         null = 0,
[INFO] [stdout] 147 | |     }
[INFO] [stdout] 148 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UsizeToVec` is never used
[INFO] [stdout]    --> src/db.rs:318:11
[INFO] [stdout]     |
[INFO] [stdout] 318 | pub trait UsizeToVec {
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ServerHello` and `Certificate` are never constructed
[INFO] [stdout]    --> src/db.rs:337:5
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub enum Handshake_type {
[INFO] [stdout]     |          -------------- variants in this enum
[INFO] [stdout] 336 |     ClientHello = 0x01,
[INFO] [stdout] 337 |     ServerHello = 0x02,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 338 |     Certificate = 0x0b,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Handshake_type` 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: associated items `from_u8`, `to_u8`, and `to_string` are never used
[INFO] [stdout]    --> src/db.rs:344:12
[INFO] [stdout]     |
[INFO] [stdout] 343 | impl Handshake_type {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 344 |     pub fn from_u8(value: u8) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     pub fn to_u8(self) -> u8 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub fn to_string(self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send` is never used
[INFO] [stdout]    --> src/db.rs:410:12
[INFO] [stdout]     |
[INFO] [stdout] 403 | impl TLSStreamManager {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn send(&mut self, tls: &mut TLSPlaintext) -> Result<TLSPlaintext, Error> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_tls` is never used
[INFO] [stdout]  --> src/net.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn write_tls(stream: &mut TcpStream, tls: &mut db::TLSPlaintext) -> Result<(), Error> {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_tls` is never used
[INFO] [stdout]   --> src/net.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn read_tls(stream: &mut TcpStream) -> Result<db::TLSPlaintext, Error> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `to_string` and `iter` are never used
[INFO] [stdout]   --> src/db.rs:49:20
[INFO] [stdout]    |
[INFO] [stdout] 48 |           impl $name {
[INFO] [stdout]    |           ---------- associated items in this implementation
[INFO] [stdout] 49 |               pub fn to_string(&self) -> String {
[INFO] [stdout]    |                      ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |               pub fn iter() -> Vec<Self>{
[INFO] [stdout]    |                      ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/handshake.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / define_enum_macro! {
[INFO] [stdout]  7 | |     #[derive(Debug)]
[INFO] [stdout]  8 | |     pub enum HandshakeType {
[INFO] [stdout]  9 | |         hello_request = 0,
[INFO] [stdout] ...  |
[INFO] [stdout] 21 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/handshake.rs:263:12
[INFO] [stdout]     |
[INFO] [stdout] 262 | impl HandshakeCertificate {
[INFO] [stdout]     | ------------------------- associated function in this implementation
[INFO] [stdout] 263 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `add`, `complement`, and `shr1` are never used
[INFO] [stdout]    --> src/bigint.rs:87:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl BigInt {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn add(&self, other: &Self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn complement(&self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn shr1(a: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait method `parseLength` should have a snake case name
[INFO] [stdout]   --> src/x509.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 |     fn parseLength(&self) -> (u32, Vec<u8>);
[INFO] [stdout]    |        ^^^^^^^^^^^ help: convert the identifier to snake case: `parse_length`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `tbsCertificate` should have a snake case name
[INFO] [stdout]   --> src/x509.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     pub tbsCertificate: TBSCertificate,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `tbs_certificate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `signatureAlgorithm` should have a snake case name
[INFO] [stdout]   --> src/x509.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub signatureAlgorithm: AlgorithmIdentifier,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `signature_algorithm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `signatureValue` should have a snake case name
[INFO] [stdout]   --> src/x509.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub signatureValue: Vec<u8>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `signature_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `serialNumber` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:190:5
[INFO] [stdout]     |
[INFO] [stdout] 190 |     serialNumber: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^^^^^^^ help: convert the identifier to snake case: `serial_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `issuerUniqueID` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:196:9
[INFO] [stdout]     |
[INFO] [stdout] 196 |     pub issuerUniqueID: Option<Vec<u8>>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `issuer_unique_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `subjectUniqueID` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:197:9
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub subjectUniqueID: Option<Vec<u8>>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `subject_unique_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `notBefore` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:303:5
[INFO] [stdout]     |
[INFO] [stdout] 303 |     notBefore: time_struct,
[INFO] [stdout]     |     ^^^^^^^^^ help: convert the identifier to snake case: `not_before`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `notAfter` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:304:5
[INFO] [stdout]     |
[INFO] [stdout] 304 |     notAfter: time_struct,
[INFO] [stdout]     |     ^^^^^^^^ help: convert the identifier to snake case: `not_after`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `publicKey` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:360:9
[INFO] [stdout]     |
[INFO] [stdout] 360 |     pub publicKey: PublicKey,
[INFO] [stdout]     |         ^^^^^^^^^ help: convert the identifier to snake case: `public_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `publicKey` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:391:25
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub fn parse_public_key(publicKey: &[u8]) -> (Vec<u8>, Vec<u8>) {
[INFO] [stdout]     |                         ^^^^^^^^^ help: convert the identifier to snake case: `public_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `publicKey_seq` should have a snake case name
[INFO] [stdout]    --> src/x509.rs:392:13
[INFO] [stdout]     |
[INFO] [stdout] 392 |     let mut publicKey_seq = ASN1Parser::new(publicKey)
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `public_key_seq`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `handshakeType` should have a snake case name
[INFO] [stdout]    --> src/handshake.rs:209:16
[INFO] [stdout]     |
[INFO] [stdout] 209 |     pub fn new(handshakeType: u32) -> Self {
[INFO] [stdout]     |                ^^^^^^^^^^^^^ help: convert the identifier to snake case: `handshake_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `tbsCertificate` should have a snake case name
[INFO] [stdout]    --> src/handshake.rs:259:9
[INFO] [stdout]     |
[INFO] [stdout] 259 |     pub tbsCertificate: Vec<Certificate>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `tbs_certificate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.08s
[INFO] running `Command { std: "docker" "inspect" "e7f670648efde4a8e310337db8d889249721555cffe3833fbe997f93b9aee225", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e7f670648efde4a8e310337db8d889249721555cffe3833fbe997f93b9aee225", kill_on_drop: false }`
[INFO] [stdout] e7f670648efde4a8e310337db8d889249721555cffe3833fbe997f93b9aee225
