[INFO] cloning repository https://github.com/Basillica/stmp-email-server [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Basillica/stmp-email-server" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBasillica%2Fstmp-email-server", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBasillica%2Fstmp-email-server'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 094887a7e7056eb09d1f8dc29262ec3ec9eb764e [INFO] checking Basillica/stmp-email-server/094887a7e7056eb09d1f8dc29262ec3ec9eb764e against master#ab869e094a907cc5d19b4080f22eccaf347f1f95 for pr-129604 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBasillica%2Fstmp-email-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] validating manifest of git repo https://github.com/Basillica/stmp-email-server on toolchain ab869e094a907cc5d19b4080f22eccaf347f1f95 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ab869e094a907cc5d19b4080f22eccaf347f1f95" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/Basillica/stmp-email-server [INFO] finished tweaking git repo https://github.com/Basillica/stmp-email-server [INFO] tweaked toml for git repo https://github.com/Basillica/stmp-email-server written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/Basillica/stmp-email-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" "+ab869e094a907cc5d19b4080f22eccaf347f1f95" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+ab869e094a907cc5d19b4080f22eccaf347f1f95" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 6e501ec1fb13235bae706bdcec61e581bb99d3242e1c8cbb3ec1f1cf4a5fb64e [INFO] running `Command { std: "docker" "start" "-a" "6e501ec1fb13235bae706bdcec61e581bb99d3242e1c8cbb3ec1f1cf4a5fb64e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6e501ec1fb13235bae706bdcec61e581bb99d3242e1c8cbb3ec1f1cf4a5fb64e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6e501ec1fb13235bae706bdcec61e581bb99d3242e1c8cbb3ec1f1cf4a5fb64e", kill_on_drop: false }` [INFO] [stdout] 6e501ec1fb13235bae706bdcec61e581bb99d3242e1c8cbb3ec1f1cf4a5fb64e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+ab869e094a907cc5d19b4080f22eccaf347f1f95" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e7eda943bb5022931c56ca9b38c8c2e7a6b516d107bf72095fc8e1bff9455d1f [INFO] running `Command { std: "docker" "start" "-a" "e7eda943bb5022931c56ca9b38c8c2e7a6b516d107bf72095fc8e1bff9455d1f", kill_on_drop: false }` [INFO] [stderr] Compiling pkg-config v0.3.30 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Compiling openssl v0.10.66 [INFO] [stderr] Checking foreign-types-shared v0.1.1 [INFO] [stderr] Checking bitflags v2.6.0 [INFO] [stderr] Compiling native-tls v0.2.12 [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Compiling syn v2.0.75 [INFO] [stderr] Checking foreign-types v0.3.2 [INFO] [stderr] Compiling openssl-sys v0.9.103 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Checking stmp-server v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `crate::connection_handler::ConnectionHandler` [INFO] [stdout] --> src/smtp_server.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::connection_handler::ConnectionHandler; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Read` and `Write` [INFO] [stdout] --> src/connection_handler.rs:2:15 [INFO] [stdout] | [INFO] [stdout] 2 | use std::io::{Read, Write}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sync::Arc` [INFO] [stdout] --> src/encryption.rs:1:27 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{net::TcpStream, sync::Arc}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::connection_handler::ConnectionHandler` [INFO] [stdout] --> src/smtp_server.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::connection_handler::ConnectionHandler; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Read` and `Write` [INFO] [stdout] --> src/connection_handler.rs:2:15 [INFO] [stdout] | [INFO] [stdout] 2 | use std::io::{Read, Write}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sync::Arc` [INFO] [stdout] --> src/encryption.rs:1:27 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{net::TcpStream, sync::Arc}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buf` [INFO] [stdout] --> src/connection_handler.rs:15:28 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn read(&mut self, buf: &mut [u8]) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_buf` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buf` [INFO] [stdout] --> src/connection_handler.rs:22:29 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn write(&mut self, buf: &[u8]) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_buf` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `state` is assigned to, but never used [INFO] [stdout] --> src/command_parser.rs:81:13 [INFO] [stdout] | [INFO] [stdout] 81 | let mut state = ClientState::new(); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_state` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `from` [INFO] [stdout] --> src/command_parser.rs:111:31 [INFO] [stdout] | [INFO] [stdout] 111 | SmtpCommand::Mail(from) => { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_from` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `to` [INFO] [stdout] --> src/command_parser.rs:116:31 [INFO] [stdout] | [INFO] [stdout] 116 | SmtpCommand::Rcpt(to) => { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `state` is never read [INFO] [stdout] --> src/command_parser.rs:128:17 [INFO] [stdout] | [INFO] [stdout] 128 | state = ClientState::new(); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `command` [INFO] [stdout] --> src/command_parser.rs:140:34 [INFO] [stdout] | [INFO] [stdout] 140 | SmtpCommand::Unknown(command) => { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_command` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message_delivery` [INFO] [stdout] --> src/command_parser.rs:69:5 [INFO] [stdout] | [INFO] [stdout] 69 | message_delivery: MessageDelivery, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message_delivery` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `encryption` [INFO] [stdout] --> src/command_parser.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | encryption: Encryption, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_encryption` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/command_parser.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 68 | mut stream: TcpStream, [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `recipients` [INFO] [stdout] --> src/message_delivery.rs:15:27 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn deliver(&self, recipients: &[String], message: &[u8]) -> Result<(), DeliveryError> { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_recipients` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/message_delivery.rs:15:50 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn deliver(&self, recipients: &[String], message: &[u8]) -> Result<(), DeliveryError> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mechanism` [INFO] [stdout] --> src/authentication.rs:21:32 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn authenticate(&self, mechanism: &AuthMechanism, credentials: &[u8]) -> Result<(), AuthError> { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mechanism` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `credentials` [INFO] [stdout] --> src/authentication.rs:21:59 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn authenticate(&self, mechanism: &AuthMechanism, credentials: &[u8]) -> Result<(), AuthError> { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_credentials` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `protocol` [INFO] [stdout] --> src/encryption.rs:23:29 [INFO] [stdout] | [INFO] [stdout] 23 | pub fn negotiate(&self, protocol: &EncryptionProtocol, stream: &mut TcpStream) -> Result<(), EncryptionError> { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_protocol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream` [INFO] [stdout] --> src/encryption.rs:23:60 [INFO] [stdout] | [INFO] [stdout] 23 | pub fn negotiate(&self, protocol: &EncryptionProtocol, stream: &mut TcpStream) -> Result<(), EncryptionError> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `authenticated`, `sender`, and `recipients` are never read [INFO] [stdout] --> src/smtp_server.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct ClientState { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 16 | authenticated: bool, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 17 | sender: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 18 | recipients: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id` and `thread` are never read [INFO] [stdout] --> src/smtp_server.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 32 | struct Worker { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 33 | id: usize, [INFO] [stdout] | ^^ [INFO] [stdout] 34 | thread: Option>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `workers` is never read [INFO] [stdout] --> src/smtp_server.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct ThreadPool { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 54 | workers: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `timeout` is never read [INFO] [stdout] --> src/smtp_server.rs:87:5 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct SmtpServer { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 87 | timeout: Duration, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConnectionHandler` is never constructed [INFO] [stdout] --> src/connection_handler.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct ConnectionHandler { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `read`, `write`, and `close` are never used [INFO] [stdout] --> src/connection_handler.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 10 | impl ConnectionHandler { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 11 | pub fn new(stream: TcpStream, timeout: Duration) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 15 | pub fn read(&mut self, buf: &mut [u8]) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub fn write(&mut self, buf: &[u8]) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn close(&mut self) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Auth` is never constructed [INFO] [stdout] --> src/command_parser.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub enum SmtpCommand<'a> { [INFO] [stdout] | ----------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 22 | Auth(AuthMechanism, &'a [u8]), [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `BadError` is never constructed [INFO] [stdout] --> src/command_parser.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 26 | pub enum ParseError { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] 27 | BadError, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deliver_message` is never used [INFO] [stdout] --> src/command_parser.rs:151:4 [INFO] [stdout] | [INFO] [stdout] 151 | fn deliver_message( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `authenticate` is never used [INFO] [stdout] --> src/command_parser.rs:160:4 [INFO] [stdout] | [INFO] [stdout] 160 | fn authenticate( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `negotiate_encryption` is never used [INFO] [stdout] --> src/command_parser.rs:169:4 [INFO] [stdout] | [INFO] [stdout] 169 | fn negotiate_encryption( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `relay_host` is never read [INFO] [stdout] --> src/message_delivery.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct MessageDelivery { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 5 | relay_host: SocketAddr, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MessageDelivery` 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: struct `DeliveryError` is never constructed [INFO] [stdout] --> src/message_delivery.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct DeliveryError; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `deliver` is never used [INFO] [stdout] --> src/message_delivery.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 10 | impl MessageDelivery { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 15 | pub fn deliver(&self, recipients: &[String], message: &[u8]) -> Result<(), DeliveryError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `mechanisms` is never read [INFO] [stdout] --> src/authentication.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Authentication { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 10 | mechanisms: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Authentication` 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: field `protocols` is never read [INFO] [stdout] --> src/encryption.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct Encryption { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 11 | protocols: Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Encryption` 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: struct `EncryptionError` is never constructed [INFO] [stdout] --> src/encryption.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct EncryptionError; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `negotiate` is never used [INFO] [stdout] --> src/encryption.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl Encryption { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 23 | pub fn negotiate(&self, protocol: &EncryptionProtocol, stream: &mut TcpStream) -> Result<(), EncryptionError> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ConnectionError`, `ParseError`, `AuthenticationError`, `DeliveryError`, and `EncryptionError` are never constructed [INFO] [stdout] --> src/error_handling.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub enum SmtpErrorKind { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] 12 | ConnectionError, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 13 | ParseError, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 14 | AuthenticationError, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 15 | DeliveryError, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 16 | EncryptionError, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SmtpErrorKind` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buf` [INFO] [stdout] --> src/connection_handler.rs:15:28 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn read(&mut self, buf: &mut [u8]) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_buf` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buf` [INFO] [stdout] --> src/connection_handler.rs:22:29 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn write(&mut self, buf: &[u8]) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_buf` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/command_parser.rs:108:17 [INFO] [stdout] | [INFO] [stdout] 108 | authentication.authenticate(&mechanism, &credentials); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 108 | let _ = authentication.authenticate(&mechanism, &credentials); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `state` is assigned to, but never used [INFO] [stdout] --> src/command_parser.rs:81:13 [INFO] [stdout] | [INFO] [stdout] 81 | let mut state = ClientState::new(); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_state` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `from` [INFO] [stdout] --> src/command_parser.rs:111:31 [INFO] [stdout] | [INFO] [stdout] 111 | SmtpCommand::Mail(from) => { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_from` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `to` [INFO] [stdout] --> src/command_parser.rs:116:31 [INFO] [stdout] | [INFO] [stdout] 116 | SmtpCommand::Rcpt(to) => { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `state` is never read [INFO] [stdout] --> src/command_parser.rs:128:17 [INFO] [stdout] | [INFO] [stdout] 128 | state = ClientState::new(); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `command` [INFO] [stdout] --> src/command_parser.rs:140:34 [INFO] [stdout] | [INFO] [stdout] 140 | SmtpCommand::Unknown(command) => { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_command` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message_delivery` [INFO] [stdout] --> src/command_parser.rs:69:5 [INFO] [stdout] | [INFO] [stdout] 69 | message_delivery: MessageDelivery, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message_delivery` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `encryption` [INFO] [stdout] --> src/command_parser.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | encryption: Encryption, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_encryption` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/command_parser.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 68 | mut stream: TcpStream, [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `recipients` [INFO] [stdout] --> src/message_delivery.rs:15:27 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn deliver(&self, recipients: &[String], message: &[u8]) -> Result<(), DeliveryError> { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_recipients` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/message_delivery.rs:15:50 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn deliver(&self, recipients: &[String], message: &[u8]) -> Result<(), DeliveryError> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mechanism` [INFO] [stdout] --> src/authentication.rs:21:32 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn authenticate(&self, mechanism: &AuthMechanism, credentials: &[u8]) -> Result<(), AuthError> { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mechanism` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `credentials` [INFO] [stdout] --> src/authentication.rs:21:59 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn authenticate(&self, mechanism: &AuthMechanism, credentials: &[u8]) -> Result<(), AuthError> { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_credentials` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `protocol` [INFO] [stdout] --> src/encryption.rs:23:29 [INFO] [stdout] | [INFO] [stdout] 23 | pub fn negotiate(&self, protocol: &EncryptionProtocol, stream: &mut TcpStream) -> Result<(), EncryptionError> { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_protocol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 39 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream` [INFO] [stdout] --> src/encryption.rs:23:60 [INFO] [stdout] | [INFO] [stdout] 23 | pub fn negotiate(&self, protocol: &EncryptionProtocol, stream: &mut TcpStream) -> Result<(), EncryptionError> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `authenticated`, `sender`, and `recipients` are never read [INFO] [stdout] --> src/smtp_server.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct ClientState { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 16 | authenticated: bool, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 17 | sender: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 18 | recipients: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id` and `thread` are never read [INFO] [stdout] --> src/smtp_server.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 32 | struct Worker { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 33 | id: usize, [INFO] [stdout] | ^^ [INFO] [stdout] 34 | thread: Option>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `workers` is never read [INFO] [stdout] --> src/smtp_server.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct ThreadPool { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 54 | workers: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `timeout` is never read [INFO] [stdout] --> src/smtp_server.rs:87:5 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct SmtpServer { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 87 | timeout: Duration, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConnectionHandler` is never constructed [INFO] [stdout] --> src/connection_handler.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct ConnectionHandler { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `read`, `write`, and `close` are never used [INFO] [stdout] --> src/connection_handler.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 10 | impl ConnectionHandler { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 11 | pub fn new(stream: TcpStream, timeout: Duration) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 15 | pub fn read(&mut self, buf: &mut [u8]) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub fn write(&mut self, buf: &[u8]) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn close(&mut self) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Auth` is never constructed [INFO] [stdout] --> src/command_parser.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub enum SmtpCommand<'a> { [INFO] [stdout] | ----------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 22 | Auth(AuthMechanism, &'a [u8]), [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `BadError` is never constructed [INFO] [stdout] --> src/command_parser.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 26 | pub enum ParseError { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] 27 | BadError, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deliver_message` is never used [INFO] [stdout] --> src/command_parser.rs:151:4 [INFO] [stdout] | [INFO] [stdout] 151 | fn deliver_message( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `authenticate` is never used [INFO] [stdout] --> src/command_parser.rs:160:4 [INFO] [stdout] | [INFO] [stdout] 160 | fn authenticate( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `negotiate_encryption` is never used [INFO] [stdout] --> src/command_parser.rs:169:4 [INFO] [stdout] | [INFO] [stdout] 169 | fn negotiate_encryption( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `relay_host` is never read [INFO] [stdout] --> src/message_delivery.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct MessageDelivery { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 5 | relay_host: SocketAddr, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MessageDelivery` 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: struct `DeliveryError` is never constructed [INFO] [stdout] --> src/message_delivery.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct DeliveryError; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `deliver` is never used [INFO] [stdout] --> src/message_delivery.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 10 | impl MessageDelivery { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 15 | pub fn deliver(&self, recipients: &[String], message: &[u8]) -> Result<(), DeliveryError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `mechanisms` is never read [INFO] [stdout] --> src/authentication.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Authentication { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 10 | mechanisms: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Authentication` 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: field `protocols` is never read [INFO] [stdout] --> src/encryption.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct Encryption { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 11 | protocols: Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Encryption` 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: struct `EncryptionError` is never constructed [INFO] [stdout] --> src/encryption.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct EncryptionError; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `negotiate` is never used [INFO] [stdout] --> src/encryption.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl Encryption { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 23 | pub fn negotiate(&self, protocol: &EncryptionProtocol, stream: &mut TcpStream) -> Result<(), EncryptionError> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ConnectionError`, `ParseError`, `AuthenticationError`, `DeliveryError`, and `EncryptionError` are never constructed [INFO] [stdout] --> src/error_handling.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub enum SmtpErrorKind { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] 12 | ConnectionError, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 13 | ParseError, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 14 | AuthenticationError, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 15 | DeliveryError, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 16 | EncryptionError, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SmtpErrorKind` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/command_parser.rs:108:17 [INFO] [stdout] | [INFO] [stdout] 108 | authentication.authenticate(&mechanism, &credentials); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 108 | let _ = authentication.authenticate(&mechanism, &credentials); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 39 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 12.08s [INFO] running `Command { std: "docker" "inspect" "e7eda943bb5022931c56ca9b38c8c2e7a6b516d107bf72095fc8e1bff9455d1f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e7eda943bb5022931c56ca9b38c8c2e7a6b516d107bf72095fc8e1bff9455d1f", kill_on_drop: false }` [INFO] [stdout] e7eda943bb5022931c56ca9b38c8c2e7a6b516d107bf72095fc8e1bff9455d1f