[INFO] cloning repository https://github.com/hiragi-dev/ssh-server
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hiragi-dev/ssh-server" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhiragi-dev%2Fssh-server", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhiragi-dev%2Fssh-server'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e927d01f3106f09181c92430e1ec078ecbfc5226
[INFO] checking hiragi-dev/ssh-server against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhiragi-dev%2Fssh-server" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/hiragi-dev/ssh-server
[INFO] finished tweaking git repo https://github.com/hiragi-dev/ssh-server
[INFO] tweaked toml for git repo https://github.com/hiragi-dev/ssh-server written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hiragi-dev/ssh-server on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hiragi-dev/ssh-server 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" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tokio-signal v0.2.9
[INFO] [stderr]   Downloaded tokio-pty-process-stream v0.2.0
[INFO] [stderr]   Downloaded tokio-reactor v0.1.12
[INFO] [stderr]   Downloaded tokio-terminal-resize v0.1.0
[INFO] [stderr]   Downloaded tokio-sync v0.1.8
[INFO] [stderr]   Downloaded tokio-uds v0.2.7
[INFO] [stderr]   Downloaded tokio-tcp v0.1.4
[INFO] [stderr]   Downloaded component-future v0.1.1
[INFO] [stderr]   Downloaded tokio-udp v0.1.6
[INFO] [stderr]   Downloaded tokio-fs v0.1.7
[INFO] [stderr]   Downloaded term_size v0.3.2
[INFO] [stderr]   Downloaded hybrid-array v0.4.11
[INFO] [stderr]   Downloaded doc-comment v0.3.4
[INFO] [stderr]   Downloaded pty v0.2.2
[INFO] [stderr]   Downloaded snafu-derive v0.5.0
[INFO] [stderr]   Downloaded futures01 v0.1.31
[INFO] [stderr]   Downloaded pty-process v0.5.3
[INFO] [stderr]   Downloaded snafu v0.5.0
[INFO] [stderr]   Downloaded tokio-pty-process v0.4.0
[INFO] [stderr]   Downloaded errno v0.1.8
[INFO] [stderr]   Downloaded tokio-codec v0.1.2
[INFO] [stderr]   Downloaded signal-hook-tokio v0.4.0
[INFO] [stderr]   Downloaded tokio-current-thread v0.1.7
[INFO] [stderr]   Downloaded pseudoterminal v0.2.1
[INFO] [stderr]   Downloaded rust-pty v0.5.0
[INFO] [stderr]   Downloaded tokio-threadpool v0.1.18
[INFO] [stderr]   Downloaded aes v0.9.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 24dbb4d8aa3c924bcf63627e153f94e15fff23dae66cca2920486457f88e9728
[INFO] running `Command { std: "docker" "start" "24dbb4d8aa3c924bcf63627e153f94e15fff23dae66cca2920486457f88e9728", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "24dbb4d8aa3c924bcf63627e153f94e15fff23dae66cca2920486457f88e9728", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "24dbb4d8aa3c924bcf63627e153f94e15fff23dae66cca2920486457f88e9728" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "24dbb4d8aa3c924bcf63627e153f94e15fff23dae66cca2920486457f88e9728", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "24dbb4d8aa3c924bcf63627e153f94e15fff23dae66cca2920486457f88e9728" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking typenum v1.20.0
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]    Compiling crossbeam-utils v0.7.2
[INFO] [stderr]    Compiling generic-array v0.14.9
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]    Compiling memoffset v0.5.6
[INFO] [stderr]     Checking lock_api v0.3.4
[INFO] [stderr]     Checking iovec v0.1.4
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking net2 v0.2.39
[INFO] [stderr]     Checking tokio-sync v0.1.8
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling parking_lot_core v0.6.3
[INFO] [stderr]     Checking smallvec v0.6.14
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling parking_lot v0.9.0
[INFO] [stderr]     Checking bytes v0.4.12
[INFO] [stderr]    Compiling crossbeam-epoch v0.8.2
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking der v0.7.10
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]    Compiling syn v0.15.44
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]    Compiling doc-comment v0.3.4
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking mio v0.6.23
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking addr2line v0.25.1
[INFO] [stderr]     Checking object v0.37.3
[INFO] [stderr]     Checking ff v0.13.1
[INFO] [stderr]     Checking group v0.13.0
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling signal-hook v0.4.4
[INFO] [stderr]     Checking rustc-demangle v0.1.28
[INFO] [stderr]     Checking tokio-io v0.1.13
[INFO] [stderr]    Compiling semver v1.0.28
[INFO] [stderr]    Compiling nix v0.28.0
[INFO] [stderr]     Checking tokio-executor v0.1.10
[INFO] [stderr]     Checking crossbeam-queue v0.2.3
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]     Checking tokio-timer v0.2.13
[INFO] [stderr]     Checking tokio-current-thread v0.1.7
[INFO] [stderr]     Checking crossbeam-deque v0.7.4
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]     Checking futures01 v0.1.31
[INFO] [stderr]     Checking mio-uds v0.6.8
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]     Checking term_size v0.3.2
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking tokio-threadpool v0.1.18
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking nix v0.27.1
[INFO] [stderr]     Checking tokio-reactor v0.1.12
[INFO] [stderr]     Checking tokio-codec v0.1.2
[INFO] [stderr]     Checking errno v0.1.8
[INFO] [stderr]     Checking serial2 v0.2.37
[INFO] [stderr]     Checking crossterm_utils v0.4.0
[INFO] [stderr]     Checking tokio-tcp v0.1.4
[INFO] [stderr]     Checking tokio-udp v0.1.6
[INFO] [stderr]     Checking tokio-uds v0.2.7
[INFO] [stderr]     Checking tokio-signal v0.2.9
[INFO] [stderr]    Compiling pseudoterminal v0.2.1
[INFO] [stderr]     Checking component-future v0.1.1
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking shell-words v1.1.1
[INFO] [stderr]     Checking cpubits v0.1.1
[INFO] [stderr]     Checking crossterm_screen v0.3.2
[INFO] [stderr]     Checking pty v0.2.2
[INFO] [stderr]     Checking hmac-sha256 v1.1.14
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking tokio-fs v0.1.7
[INFO] [stderr]     Checking spki v0.7.3
[INFO] [stderr]     Checking tokio v0.1.22
[INFO] [stderr]     Checking pkcs8 v0.10.2
[INFO] [stderr]     Checking hybrid-array v0.4.11
[INFO] [stderr]     Checking tokio-pty-process v0.4.0
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-bigint v0.5.5
[INFO] [stderr]     Checking sec1 v0.7.3
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking signature v2.2.0
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking hkdf v0.12.4
[INFO] [stderr]     Checking rfc6979 v0.4.0
[INFO] [stderr]     Checking crypto-common v0.2.1
[INFO] [stderr]     Checking block-buffer v0.12.0
[INFO] [stderr]     Checking inout v0.2.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling snafu-derive v0.5.0
[INFO] [stderr]     Checking cipher v0.5.1
[INFO] [stderr]     Checking digest v0.11.2
[INFO] [stderr]     Checking sha2 v0.11.0
[INFO] [stderr]     Checking pty-process v0.5.3
[INFO] [stderr]     Checking ctr v0.10.0
[INFO] [stderr]     Checking aes v0.9.0
[INFO] [stderr]     Checking thiserror v2.0.19
[INFO] [stderr]     Checking elliptic-curve v0.13.8
[INFO] [stderr]     Checking ecdsa v0.16.9
[INFO] [stderr]     Checking primeorder v0.13.6
[INFO] [stderr]     Checking backtrace v0.3.76
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]     Checking p256 v0.13.2
[INFO] [stderr]     Checking snafu v0.5.0
[INFO] [stderr]     Checking tokio-terminal-resize v0.1.0
[INFO] [stderr]     Checking tokio-pty-process-stream v0.2.0
[INFO] [stderr]     Checking tokio v1.52.1
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking filedescriptor v0.8.3
[INFO] [stderr]     Checking portable-pty v0.9.0
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking signal-hook-tokio v0.4.0
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking rust-pty v0.5.0
[INFO] [stderr]     Checking ssh-server v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Aes128` and `array::ArraySize`
[INFO] [stdout]  --> src/server.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     Aes128,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 3 |     cipher::{Array, KeyIvInit, StreamCipher, array::ArraySize},
[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: `Buf`
[INFO] [stdout]   --> src/server.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |     bytes::{Buf, BufMut, Bytes, BytesMut},
[INFO] [stdout]    |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Cipher`, `EncryptedBinaryPacketCodec`, `SshNameList`, and `SshString`
[INFO] [stdout]   --> src/server.rs:22:41
[INFO] [stdout]    |
[INFO] [stdout] 22 |     ChannelOpenRequest, ChannelRequest, Cipher, Codec, EncodeToBytesMut,
[INFO] [stdout]    |                                         ^^^^^^
[INFO] [stdout] 23 |     EncryptedBinaryPacketCodec, EphemeralPublicKey, Identification, Kex, KexAlgorithm,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     MessageNumber, Parse, RawMessage, RawMessageBuilder, ServiceRequest, SharedSecretKey,
[INFO] [stdout] 25 |     SignatureAlgorithm, SigningKey, SshBytesMut, SshNameList, SshString, VerifyingKey,
[INFO] [stdout]    |                                                  ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Error`
[INFO] [stdout]  --> src/ssh.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::{Error, Result};
[INFO] [stdout]   |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/ssh.rs:251:19
[INFO] [stdout]     |
[INFO] [stdout] 251 |         w.put_u32(((s.len() - i + 1) as u32));
[INFO] [stdout]     |                   ^                        ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 251 -         w.put_u32(((s.len() - i + 1) as u32));
[INFO] [stdout] 251 +         w.put_u32((s.len() - i + 1) as u32);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/ssh.rs:256:19
[INFO] [stdout]     |
[INFO] [stdout] 256 |         w.put_u32(((s.len() - i) as u32));
[INFO] [stdout]     |                   ^                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 256 -         w.put_u32(((s.len() - i) as u32));
[INFO] [stdout] 256 +         w.put_u32((s.len() - i) as u32);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::server::Aes128Ctr128BE`
[INFO] [stdout]  --> src/packet.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::server::Aes128Ctr128BE;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::net::TcpStream`
[INFO] [stdout]   --> src/packet.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::net::TcpStream;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]   --> src/packet.rs:12:22
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tracing::{debug, info};
[INFO] [stdout]    |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Framed`
[INFO] [stdout]   --> src/packet.rs:16:31
[INFO] [stdout]    |
[INFO] [stdout] 16 |     codec::{Decoder, Encoder, Framed},
[INFO] [stdout]    |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr::V6`
[INFO] [stdout]  --> src/message.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::IpAddr::V6;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_SERVICE_REQUEST` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     SSH_MSG_SERVICE_REQUEST = 5,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgServiceRequest`
[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: variant `SSH_MSG_SERVICE_ACCEPT` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     SSH_MSG_SERVICE_ACCEPT = 6,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgServiceAccept`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_KEXINIT` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     SSH_MSG_KEXINIT = 20,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgKexinit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_NEWKEYS` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     SSH_MSG_NEWKEYS = 21,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgNewkeys`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_KEX_ECDH_INIT` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     SSH_MSG_KEX_ECDH_INIT = 30,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgKexEcdhInit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_KEX_ECDH_REPLY` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     SSH_MSG_KEX_ECDH_REPLY = 31,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgKexEcdhReply`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_USERAUTH_REQUEST` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     SSH_MSG_USERAUTH_REQUEST = 50,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgUserauthRequest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_USERAUTH_FAILURE` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     SSH_MSG_USERAUTH_FAILURE = 51,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgUserauthFailure`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_USERAUTH_SUCCESS` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 |     SSH_MSG_USERAUTH_SUCCESS = 52,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgUserauthSuccess`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_USERAUTH_BANNER` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     SSH_MSG_USERAUTH_BANNER = 53,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgUserauthBanner`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_CHANNEL_OPEN` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 |     SSH_MSG_CHANNEL_OPEN = 90,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgChannelOpen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_CHANNEL_OPEN_CONFIRMATION` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     SSH_MSG_CHANNEL_OPEN_CONFIRMATION = 91,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgChannelOpenConfirmation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_CHANNEL_DATA` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 49 |     SSH_MSG_CHANNEL_DATA = 94,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgChannelData`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_CHANNEL_REQUEST` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |     SSH_MSG_CHANNEL_REQUEST = 98,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgChannelRequest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_CHANNEL_SUCCESS` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 |     SSH_MSG_CHANNEL_SUCCESS = 99,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgChannelSuccess`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BytesMut`
[INFO] [stdout]  --> src/algorithm.rs:2:45
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tokio_util::bytes::{Buf, BufMut, Bytes, BytesMut};
[INFO] [stdout]   |                                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SshString`
[INFO] [stdout]  --> src/algorithm.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 |     SignatureAlgorithm, SshNameList, SshString,
[INFO] [stdout]   |                                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SshNameList`
[INFO] [stdout]  --> src/kex.rs:5:51
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{Algorithm, EphemeralPublicKey, Parse, SshNameList, SshString};
[INFO] [stdout]   |                                                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Bytes`
[INFO] [stdout]  --> src/key.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::Bytes;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Error`, `Result`, and `anyhow`
[INFO] [stdout]  --> src/key.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{Error, Result, anyhow};
[INFO] [stdout]   |              ^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pseudoterminal::CommandExt`
[INFO] [stdout]  --> src/channel_.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use pseudoterminal::CommandExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pty::fork::Fork`
[INFO] [stdout]  --> src/channel_.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use pty::fork::Fork;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `process::Command`
[INFO] [stdout]  --> src/channel_.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     process::Command,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::io::AsyncWrite`
[INFO] [stdout]   --> src/channel_.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::io::AsyncWrite;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `UnboundedReceiver`, `UnboundedSender`, `self`, and `task::spawn_blocking`
[INFO] [stdout]   --> src/channel_.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 |     sync::mpsc::{self, UnboundedReceiver, UnboundedSender},
[INFO] [stdout]    |                  ^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 16 |     task::spawn_blocking,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ChannelOpenRequest`, `ChannelRequest`, and `ChannelType`
[INFO] [stdout]   --> src/channel_.rs:24:18
[INFO] [stdout]    |
[INFO] [stdout] 24 |     ChannelData, ChannelOpenRequest, ChannelRequest, ChannelType, Codec, MessageNumber,
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Aes128` and `array::ArraySize`
[INFO] [stdout]  --> src/server.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     Aes128,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 3 |     cipher::{Array, KeyIvInit, StreamCipher, array::ArraySize},
[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: `Buf`
[INFO] [stdout]   --> src/server.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |     bytes::{Buf, BufMut, Bytes, BytesMut},
[INFO] [stdout]    |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Cipher`, `EncryptedBinaryPacketCodec`, `SshNameList`, and `SshString`
[INFO] [stdout]   --> src/server.rs:22:41
[INFO] [stdout]    |
[INFO] [stdout] 22 |     ChannelOpenRequest, ChannelRequest, Cipher, Codec, EncodeToBytesMut,
[INFO] [stdout]    |                                         ^^^^^^
[INFO] [stdout] 23 |     EncryptedBinaryPacketCodec, EphemeralPublicKey, Identification, Kex, KexAlgorithm,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     MessageNumber, Parse, RawMessage, RawMessageBuilder, ServiceRequest, SharedSecretKey,
[INFO] [stdout] 25 |     SignatureAlgorithm, SigningKey, SshBytesMut, SshNameList, SshString, VerifyingKey,
[INFO] [stdout]    |                                                  ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Error`
[INFO] [stdout]  --> src/ssh.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::{Error, Result};
[INFO] [stdout]   |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/ssh.rs:251:19
[INFO] [stdout]     |
[INFO] [stdout] 251 |         w.put_u32(((s.len() - i + 1) as u32));
[INFO] [stdout]     |                   ^                        ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 251 -         w.put_u32(((s.len() - i + 1) as u32));
[INFO] [stdout] 251 +         w.put_u32((s.len() - i + 1) as u32);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/ssh.rs:256:19
[INFO] [stdout]     |
[INFO] [stdout] 256 |         w.put_u32(((s.len() - i) as u32));
[INFO] [stdout]     |                   ^                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 256 -         w.put_u32(((s.len() - i) as u32));
[INFO] [stdout] 256 +         w.put_u32((s.len() - i) as u32);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::server::Aes128Ctr128BE`
[INFO] [stdout]  --> src/packet.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::server::Aes128Ctr128BE;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::net::TcpStream`
[INFO] [stdout]   --> src/packet.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::net::TcpStream;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]   --> src/packet.rs:12:22
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tracing::{debug, info};
[INFO] [stdout]    |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Framed`
[INFO] [stdout]   --> src/packet.rs:16:31
[INFO] [stdout]    |
[INFO] [stdout] 16 |     codec::{Decoder, Encoder, Framed},
[INFO] [stdout]    |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr::V6`
[INFO] [stdout]  --> src/message.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::IpAddr::V6;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_SERVICE_REQUEST` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     SSH_MSG_SERVICE_REQUEST = 5,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgServiceRequest`
[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: variant `SSH_MSG_SERVICE_ACCEPT` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     SSH_MSG_SERVICE_ACCEPT = 6,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgServiceAccept`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_KEXINIT` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     SSH_MSG_KEXINIT = 20,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgKexinit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_NEWKEYS` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     SSH_MSG_NEWKEYS = 21,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgNewkeys`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_KEX_ECDH_INIT` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     SSH_MSG_KEX_ECDH_INIT = 30,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgKexEcdhInit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_KEX_ECDH_REPLY` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     SSH_MSG_KEX_ECDH_REPLY = 31,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgKexEcdhReply`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_USERAUTH_REQUEST` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     SSH_MSG_USERAUTH_REQUEST = 50,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgUserauthRequest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_USERAUTH_FAILURE` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     SSH_MSG_USERAUTH_FAILURE = 51,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgUserauthFailure`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_USERAUTH_SUCCESS` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 |     SSH_MSG_USERAUTH_SUCCESS = 52,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgUserauthSuccess`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_USERAUTH_BANNER` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     SSH_MSG_USERAUTH_BANNER = 53,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgUserauthBanner`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_CHANNEL_OPEN` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 |     SSH_MSG_CHANNEL_OPEN = 90,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgChannelOpen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_CHANNEL_OPEN_CONFIRMATION` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     SSH_MSG_CHANNEL_OPEN_CONFIRMATION = 91,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgChannelOpenConfirmation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_CHANNEL_DATA` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 49 |     SSH_MSG_CHANNEL_DATA = 94,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgChannelData`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_CHANNEL_REQUEST` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |     SSH_MSG_CHANNEL_REQUEST = 98,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgChannelRequest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SSH_MSG_CHANNEL_SUCCESS` should have an upper camel case name
[INFO] [stdout]   --> src/message.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 |     SSH_MSG_CHANNEL_SUCCESS = 99,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `SshMsgChannelSuccess`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BytesMut`
[INFO] [stdout]  --> src/algorithm.rs:2:45
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tokio_util::bytes::{Buf, BufMut, Bytes, BytesMut};
[INFO] [stdout]   |                                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SshString`
[INFO] [stdout]  --> src/algorithm.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 |     SignatureAlgorithm, SshNameList, SshString,
[INFO] [stdout]   |                                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SshNameList`
[INFO] [stdout]  --> src/kex.rs:5:51
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{Algorithm, EphemeralPublicKey, Parse, SshNameList, SshString};
[INFO] [stdout]   |                                                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Bytes`
[INFO] [stdout]  --> src/key.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::Bytes;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Error`, `Result`, and `anyhow`
[INFO] [stdout]  --> src/key.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{Error, Result, anyhow};
[INFO] [stdout]   |              ^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pseudoterminal::CommandExt`
[INFO] [stdout]  --> src/channel_.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use pseudoterminal::CommandExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pty::fork::Fork`
[INFO] [stdout]  --> src/channel_.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use pty::fork::Fork;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `process::Command`
[INFO] [stdout]  --> src/channel_.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     process::Command,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::io::AsyncWrite`
[INFO] [stdout]   --> src/channel_.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::io::AsyncWrite;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `UnboundedReceiver`, `UnboundedSender`, `self`, and `task::spawn_blocking`
[INFO] [stdout]   --> src/channel_.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 |     sync::mpsc::{self, UnboundedReceiver, UnboundedSender},
[INFO] [stdout]    |                  ^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 16 |     task::spawn_blocking,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ChannelOpenRequest`, `ChannelRequest`, and `ChannelType`
[INFO] [stdout]   --> src/channel_.rs:24:18
[INFO] [stdout]    |
[INFO] [stdout] 24 |     ChannelData, ChannelOpenRequest, ChannelRequest, ChannelType, Codec, MessageNumber,
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server.rs:349:13
[INFO] [stdout]     |
[INFO] [stdout] 349 |         let mut new_keys = self.codec.next().await.unwrap()?;
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/channel_.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let mut child = pair.slave.spawn_command(cmd).unwrap();
[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/channel_.rs:63:13
[INFO] [stdout]    |
[INFO] [stdout] 63 |         let mut reader = pair.master.try_clone_reader().unwrap();
[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/channel_.rs:64:13
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let mut writer = pair.master.take_writer().unwrap();
[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/server.rs:349:13
[INFO] [stdout]     |
[INFO] [stdout] 349 |         let mut new_keys = self.codec.next().await.unwrap()?;
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/channel_.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let mut child = pair.slave.spawn_command(cmd).unwrap();
[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/channel_.rs:63:13
[INFO] [stdout]    |
[INFO] [stdout] 63 |         let mut reader = pair.master.try_clone_reader().unwrap();
[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/channel_.rs:64:13
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let mut writer = pair.master.take_writer().unwrap();
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `p256::ecdsa::signature::SignerMut`
[INFO] [stdout]   --> src/key.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use p256::ecdsa::signature::SignerMut;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufMut`
[INFO] [stdout]   --> src/server.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 |     bytes::{Buf, BufMut, Bytes, BytesMut},
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncReadExt`
[INFO] [stdout]   --> src/channel_.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 |     io::{AsyncReadExt, AsyncWriteExt},
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncWriteExt`
[INFO] [stdout]   --> src/channel_.rs:13:24
[INFO] [stdout]    |
[INFO] [stdout] 13 |     io::{AsyncReadExt, AsyncWriteExt},
[INFO] [stdout]    |                        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::SinkExt`
[INFO] [stdout]  --> src/packet.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use futures::SinkExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::SshBytesMut`
[INFO] [stdout]   --> src/message.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::SshBytesMut;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Keypair`
[INFO] [stdout]  --> src/key.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 |         signature::{Keypair, Signer},
[INFO] [stdout]   |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SshBytesMut`
[INFO] [stdout]   --> src/key.rs:13:31
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::{EncodeToBytesMut, SshBytesMut, SshMpint, SshString};
[INFO] [stdout]    |                               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `protoversion`
[INFO] [stdout]    --> src/server.rs:414:14
[INFO] [stdout]     |
[INFO] [stdout] 414 |         let (protoversion, softwareversion) = {
[INFO] [stdout]     |              ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_protoversion`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `softwareversion`
[INFO] [stdout]    --> src/server.rs:414:28
[INFO] [stdout]     |
[INFO] [stdout] 414 |         let (protoversion, softwareversion) = {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_softwareversion`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `client_algorithm`
[INFO] [stdout]    --> src/server.rs:389:51
[INFO] [stdout]     |
[INFO] [stdout] 389 |     pub async fn algorithm_negotiation(&mut self, client_algorithm: &Algorithm) -> Result<()> {
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_client_algorithm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_keys`
[INFO] [stdout]    --> src/server.rs:349:13
[INFO] [stdout]     |
[INFO] [stdout] 349 |         let mut new_keys = self.codec.next().await.unwrap()?;
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_keys`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `child`
[INFO] [stdout]   --> src/channel_.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let mut child = pair.slave.spawn_command(cmd).unwrap();
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_child`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `p256::ecdsa::signature::SignerMut`
[INFO] [stdout]   --> src/key.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use p256::ecdsa::signature::SignerMut;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufMut`
[INFO] [stdout]   --> src/server.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 |     bytes::{Buf, BufMut, Bytes, BytesMut},
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncReadExt`
[INFO] [stdout]   --> src/channel_.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 |     io::{AsyncReadExt, AsyncWriteExt},
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncWriteExt`
[INFO] [stdout]   --> src/channel_.rs:13:24
[INFO] [stdout]    |
[INFO] [stdout] 13 |     io::{AsyncReadExt, AsyncWriteExt},
[INFO] [stdout]    |                        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::SinkExt`
[INFO] [stdout]  --> src/packet.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use futures::SinkExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::SshBytesMut`
[INFO] [stdout]   --> src/message.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::SshBytesMut;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Keypair`
[INFO] [stdout]  --> src/key.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 |         signature::{Keypair, Signer},
[INFO] [stdout]   |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SshBytesMut`
[INFO] [stdout]   --> src/key.rs:13:31
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::{EncodeToBytesMut, SshBytesMut, SshMpint, SshString};
[INFO] [stdout]    |                               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `protoversion`
[INFO] [stdout]    --> src/server.rs:414:14
[INFO] [stdout]     |
[INFO] [stdout] 414 |         let (protoversion, softwareversion) = {
[INFO] [stdout]     |              ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_protoversion`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `softwareversion`
[INFO] [stdout]    --> src/server.rs:414:28
[INFO] [stdout]     |
[INFO] [stdout] 414 |         let (protoversion, softwareversion) = {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_softwareversion`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `client_algorithm`
[INFO] [stdout]    --> src/server.rs:389:51
[INFO] [stdout]     |
[INFO] [stdout] 389 |     pub async fn algorithm_negotiation(&mut self, client_algorithm: &Algorithm) -> Result<()> {
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_client_algorithm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_keys`
[INFO] [stdout]    --> src/server.rs:349:13
[INFO] [stdout]     |
[INFO] [stdout] 349 |         let mut new_keys = self.codec.next().await.unwrap()?;
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_keys`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `child`
[INFO] [stdout]   --> src/channel_.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let mut child = pair.slave.spawn_command(cmd).unwrap();
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_child`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_pos`
[INFO] [stdout]   --> src/algorithm.rs:82:13
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let start_pos = src.remaining();
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/key.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let mut blob = BytesMut::new();
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `blob`
[INFO] [stdout]    --> src/key.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let mut blob = BytesMut::new();
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_blob`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_pos`
[INFO] [stdout]   --> src/algorithm.rs:82:13
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let start_pos = src.remaining();
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kex_algorithm` and `server_host_key_algorithm` are never read
[INFO] [stdout]   --> src/server.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct SshServerBuilder {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 48 |     kex_algorithm: KexAlgorithm,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 49 |     server_host_key_algorithm: SignatureAlgorithm,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SshServerBuilder` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `c2s_hmac_key`, `packet_length`, and `padding_length` are never read
[INFO] [stdout]    --> src/packet.rs:159:5
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub struct EncryptedBinaryPacketCodec {
[INFO] [stdout]     |            -------------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 159 |     c2s_hmac_key: Array<u8, U32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     packet_length: Option<u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 163 |     padding_length: Option<u8>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `var_name` and `var_value` are never read
[INFO] [stdout]  --> src/channel_req.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ShellEnv {
[INFO] [stdout]   |            -------- fields in this struct
[INFO] [stdout] 7 |     var_name: String,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 8 |     var_value: String,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ShellEnv` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `V_C` should have a snake case name
[INFO] [stdout]    --> src/server.rs:319:13
[INFO] [stdout]     |
[INFO] [stdout] 319 |         let V_C: String = self.client_identification.as_ref().unwrap().clone();
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case (notice the capitalization): `v_c`
[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 `V_S` should have a snake case name
[INFO] [stdout]    --> src/server.rs:320:13
[INFO] [stdout]     |
[INFO] [stdout] 320 |         let V_S: String = self.server_identification.to_crlf_excluded_str();
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case (notice the capitalization): `v_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I_C` should have a snake case name
[INFO] [stdout]    --> src/server.rs:321:13
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let I_C = self.client_kexinit_payload.clone().context("unreachable")?;
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case (notice the capitalization): `i_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I_S` should have a snake case name
[INFO] [stdout]    --> src/server.rs:322:13
[INFO] [stdout]     |
[INFO] [stdout] 322 |         let I_S = self.algorithm.encode();
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case (notice the capitalization): `i_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `K_S` should have a snake case name
[INFO] [stdout]    --> src/server.rs:323:13
[INFO] [stdout]     |
[INFO] [stdout] 323 |         let K_S: VerifyingKey = server_public_key;
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case (notice the capitalization): `k_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Q_C` should have a snake case name
[INFO] [stdout]    --> src/server.rs:324:13
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let Q_C: EphemeralPublicKey = kex.client_ephemeral_public_key.clone();
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case: `q_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Q_S` should have a snake case name
[INFO] [stdout]    --> src/server.rs:325:13
[INFO] [stdout]     |
[INFO] [stdout] 325 |         let Q_S: EphemeralPublicKey = server_emphemeral_key.clone();
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case: `q_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `K` should have a snake case name
[INFO] [stdout]    --> src/server.rs:326:13
[INFO] [stdout]     |
[INFO] [stdout] 326 |         let K: SharedSecretKey = shared_secret;
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `H` should have a snake case name
[INFO] [stdout]    --> src/server.rs:338:13
[INFO] [stdout]     |
[INFO] [stdout] 338 |         let H: Array<u8, U32> = Sha256::digest(concatenation);
[INFO] [stdout]     |             ^ help: convert the identifier to snake case: `h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/key.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let mut blob = BytesMut::new();
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `blob`
[INFO] [stdout]    --> src/key.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let mut blob = BytesMut::new();
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_blob`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kex_algorithm` and `server_host_key_algorithm` are never read
[INFO] [stdout]   --> src/server.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct SshServerBuilder {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 48 |     kex_algorithm: KexAlgorithm,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 49 |     server_host_key_algorithm: SignatureAlgorithm,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SshServerBuilder` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `c2s_hmac_key`, `packet_length`, and `padding_length` are never read
[INFO] [stdout]    --> src/packet.rs:159:5
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub struct EncryptedBinaryPacketCodec {
[INFO] [stdout]     |            -------------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 159 |     c2s_hmac_key: Array<u8, U32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     packet_length: Option<u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 163 |     padding_length: Option<u8>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `var_name` and `var_value` are never read
[INFO] [stdout]  --> src/channel_req.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ShellEnv {
[INFO] [stdout]   |            -------- fields in this struct
[INFO] [stdout] 7 |     var_name: String,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 8 |     var_value: String,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ShellEnv` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `V_C` should have a snake case name
[INFO] [stdout]    --> src/server.rs:319:13
[INFO] [stdout]     |
[INFO] [stdout] 319 |         let V_C: String = self.client_identification.as_ref().unwrap().clone();
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case (notice the capitalization): `v_c`
[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 `V_S` should have a snake case name
[INFO] [stdout]    --> src/server.rs:320:13
[INFO] [stdout]     |
[INFO] [stdout] 320 |         let V_S: String = self.server_identification.to_crlf_excluded_str();
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case (notice the capitalization): `v_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I_C` should have a snake case name
[INFO] [stdout]    --> src/server.rs:321:13
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let I_C = self.client_kexinit_payload.clone().context("unreachable")?;
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case (notice the capitalization): `i_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I_S` should have a snake case name
[INFO] [stdout]    --> src/server.rs:322:13
[INFO] [stdout]     |
[INFO] [stdout] 322 |         let I_S = self.algorithm.encode();
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case (notice the capitalization): `i_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `K_S` should have a snake case name
[INFO] [stdout]    --> src/server.rs:323:13
[INFO] [stdout]     |
[INFO] [stdout] 323 |         let K_S: VerifyingKey = server_public_key;
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case (notice the capitalization): `k_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Q_C` should have a snake case name
[INFO] [stdout]    --> src/server.rs:324:13
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let Q_C: EphemeralPublicKey = kex.client_ephemeral_public_key.clone();
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case: `q_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Q_S` should have a snake case name
[INFO] [stdout]    --> src/server.rs:325:13
[INFO] [stdout]     |
[INFO] [stdout] 325 |         let Q_S: EphemeralPublicKey = server_emphemeral_key.clone();
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case: `q_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `K` should have a snake case name
[INFO] [stdout]    --> src/server.rs:326:13
[INFO] [stdout]     |
[INFO] [stdout] 326 |         let K: SharedSecretKey = shared_secret;
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `H` should have a snake case name
[INFO] [stdout]    --> src/server.rs:338:13
[INFO] [stdout]     |
[INFO] [stdout] 338 |         let H: Array<u8, U32> = Sha256::digest(concatenation);
[INFO] [stdout]     |             ^ help: convert the identifier to snake case: `h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `Write`, `process::Command`, `stdin`, and `stdout`
[INFO] [stdout]  --> src/main.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 |     io::{Read, Write, stdin, stdout},
[INFO] [stdout]   |          ^^^^  ^^^^^  ^^^^^  ^^^^^^
[INFO] [stdout] 3 |     process::Command,
[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: `pseudoterminal::CommandExt`
[INFO] [stdout]  --> src/main.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use pseudoterminal::CommandExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BinaryPacketProtocol` and `SshServer`
[INFO] [stdout]  --> src/main.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 | use ssh_server::{BinaryPacketProtocol, SshServer, SshServerBuilder};
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpStream`
[INFO] [stdout]  --> src/main.rs:9:31
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::net::{TcpListener, TcpStream};
[INFO] [stdout]   |                               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio_util::codec::Framed`
[INFO] [stdout]   --> src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio_util::codec::Framed;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `trace`
[INFO] [stdout]   --> src/main.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{debug, trace};
[INFO] [stdout]    |               ^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `Write`, `process::Command`, `stdin`, and `stdout`
[INFO] [stdout]  --> src/main.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 |     io::{Read, Write, stdin, stdout},
[INFO] [stdout]   |          ^^^^  ^^^^^  ^^^^^  ^^^^^^
[INFO] [stdout] 3 |     process::Command,
[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: `pseudoterminal::CommandExt`
[INFO] [stdout]  --> src/main.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use pseudoterminal::CommandExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BinaryPacketProtocol` and `SshServer`
[INFO] [stdout]  --> src/main.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 | use ssh_server::{BinaryPacketProtocol, SshServer, SshServerBuilder};
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpStream`
[INFO] [stdout]  --> src/main.rs:9:31
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::net::{TcpListener, TcpStream};
[INFO] [stdout]   |                               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio_util::codec::Framed`
[INFO] [stdout]   --> src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio_util::codec::Framed;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `trace`
[INFO] [stdout]   --> src/main.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{debug, trace};
[INFO] [stdout]    |               ^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | /     loop {
[INFO] [stdout] 22 | |         let (stream, _) = listner.accept().await?;
[INFO] [stdout] 23 | |         let mut ssh_server = SshServerBuilder::default().build(stream);
[INFO] [stdout] 24 | |         ssh_server.run().await?;
[INFO] [stdout] 25 | |     }
[INFO] [stdout]    | |_____- any code following this expression is unreachable
[INFO] [stdout] 26 |
[INFO] [stdout] 27 |       Ok(())
[INFO] [stdout]    |       ^^^^^^ unreachable expression
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | /     loop {
[INFO] [stdout] 22 | |         let (stream, _) = listner.accept().await?;
[INFO] [stdout] 23 | |         let mut ssh_server = SshServerBuilder::default().build(stream);
[INFO] [stdout] 24 | |         ssh_server.run().await?;
[INFO] [stdout] 25 | |     }
[INFO] [stdout]    | |_____- any code following this expression is unreachable
[INFO] [stdout] 26 |
[INFO] [stdout] 27 |       Ok(())
[INFO] [stdout]    |       ^^^^^^ unreachable expression
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `crossterm`
[INFO] [stderr]  --> Cargo.toml:4:1
[INFO] [stderr]   |
[INFO] [stderr] 4 | crossterm = "0.29.0"
[INFO] [stderr]   | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `crossterm`
[INFO] [stderr] warning: unused dependency `crossterm_screen`
[INFO] [stderr]  --> Cargo.toml:5:1
[INFO] [stderr]   |
[INFO] [stderr] 5 | crossterm_screen = "0.3.2"
[INFO] [stderr]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr] help: consider removing the dependency on `crossterm_screen`
[INFO] [stderr] warning: unused dependency `pty-process`
[INFO] [stderr]   --> Cargo.toml:12:1
[INFO] [stderr]    |
[INFO] [stderr] 12 | pty-process = "0.5.3"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `pty-process`
[INFO] [stderr] warning: unused dependency `rust-pty`
[INFO] [stderr]   --> Cargo.toml:13:1
[INFO] [stderr]    |
[INFO] [stderr] 13 | rust-pty = "0.5.0"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `rust-pty`
[INFO] [stderr] warning: unused dependency `tokio-pty-process-stream`
[INFO] [stderr]   --> Cargo.toml:15:1
[INFO] [stderr]    |
[INFO] [stderr] 15 | tokio-pty-process-stream = "0.2.0"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `tokio-pty-process-stream`
[INFO] [stderr] warning: `ssh-server` (manifest) generated 5 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 39.46s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.28.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 6`
[INFO] running `Command { std: "docker" "inspect" "24dbb4d8aa3c924bcf63627e153f94e15fff23dae66cca2920486457f88e9728", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "24dbb4d8aa3c924bcf63627e153f94e15fff23dae66cca2920486457f88e9728", kill_on_drop: false }`
[INFO] [stdout] 24dbb4d8aa3c924bcf63627e153f94e15fff23dae66cca2920486457f88e9728
