[INFO] cloning repository https://github.com/enderavour/rsmtp
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/enderavour/rsmtp" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fenderavour%2Frsmtp", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fenderavour%2Frsmtp'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d6ed268173f12499f4508b4402d8f42bd02c30bc
[INFO] checking enderavour/rsmtp against 3154cc1a3e6424e44f438a95007d043ed5ceaaf6 for pr-133502-30
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fenderavour%2Frsmtp" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/enderavour/rsmtp
[INFO] finished tweaking git repo https://github.com/enderavour/rsmtp
[INFO] tweaked toml for git repo https://github.com/enderavour/rsmtp written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/enderavour/rsmtp on toolchain 3154cc1a3e6424e44f438a95007d043ed5ceaaf6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/enderavour/rsmtp 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" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 80209e8cd1fc2b58793937b236729d1b41ed207c2af3cd6f6f78e6a1385925e1
[INFO] running `Command { std: "docker" "start" "80209e8cd1fc2b58793937b236729d1b41ed207c2af3cd6f6f78e6a1385925e1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "80209e8cd1fc2b58793937b236729d1b41ed207c2af3cd6f6f78e6a1385925e1", 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" "80209e8cd1fc2b58793937b236729d1b41ed207c2af3cd6f6f78e6a1385925e1" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "80209e8cd1fc2b58793937b236729d1b41ed207c2af3cd6f6f78e6a1385925e1", 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" "80209e8cd1fc2b58793937b236729d1b41ed207c2af3cd6f6f78e6a1385925e1" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling aws-lc-rs v1.17.0
[INFO] [stderr]     Checking zeroize v1.9.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]     Checking cfg-if v1.0.4
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]     Checking rustls-pki-types v1.14.1
[INFO] [stderr]     Checking untrusted v0.9.0
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]     Checking pin-project-lite v0.2.17
[INFO] [stderr]     Checking bytes v1.12.0
[INFO] [stderr]     Checking log v0.4.32
[INFO] [stderr]     Checking dotenv v0.15.0
[INFO] [stderr]     Checking base64 v0.22.1
[INFO] [stderr]     Checking webpki-roots v1.0.8
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking mio v1.2.1
[INFO] [stderr]     Checking socket2 v0.6.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling cc v1.2.64
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling aws-lc-sys v0.41.0
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking mailclient v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: expected `;`, found `}`
[INFO] [stdout]   --> src/errors.rs:24:16
[INFO] [stdout]    |
[INFO] [stdout] 24 |     type Output
[INFO] [stdout]    |                ^ help: add `;` here
[INFO] [stdout] 25 | }
[INFO] [stdout]    | - unexpected token
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: associated type in `impl` without body
[INFO] [stdout]   --> src/errors.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     type Output
[INFO] [stdout]    |     ^^^^^^^^^^^- help: provide a definition for the type: `= <type>;`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncReadExt`
[INFO] [stdout]  --> src/rsmtp.rs:4:34
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::io::{AsyncBufReadExt, AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]   |                                  ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected `;`, found `}`
[INFO] [stdout]   --> src/errors.rs:24:16
[INFO] [stdout]    |
[INFO] [stdout] 24 |     type Output
[INFO] [stdout]    |                ^ help: add `;` here
[INFO] [stdout] 25 | }
[INFO] [stdout]    | - unexpected token
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]  --> src/errors.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::ops::Try;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]   = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]   = note: this compiler was built on 2026-10-09; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]   --> src/errors.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     type Output
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]    = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-10-09; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]   --> src/errors.rs:22:6
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Try for SMTPError
[INFO] [stdout]    |      ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]    = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-10-09; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: associated type in `impl` without body
[INFO] [stdout]   --> src/errors.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     type Output
[INFO] [stdout]    |     ^^^^^^^^^^^- help: provide a definition for the type: `= <type>;`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncReadExt`
[INFO] [stdout]  --> src/rsmtp.rs:4:34
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::io::{AsyncBufReadExt, AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]   |                                  ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]  --> src/errors.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::ops::Try;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]   = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]   = note: this compiler was built on 2026-10-09; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]   --> src/errors.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     type Output
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]    = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-10-09; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]   --> src/errors.rs:22:6
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Try for SMTPError
[INFO] [stdout]    |      ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]    = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-10-09; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0046]: not all trait items implemented, missing: `Residual`, `from_output`, `branch`
[INFO] [stdout]   --> src/errors.rs:22:1
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Try for SMTPError
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^ missing `Residual`, `from_output`, `branch` in implementation
[INFO] [stdout]    |
[INFO] [stdout]    = help: implement the missing item: `type Residual = /* Type */;` (unstable, requires feature `try_trait_v2`)
[INFO] [stdout]    = help: implement the missing item: `fn from_output(_: <Self as Try>::Output) -> Self { todo!() }` (unstable, requires feature `try_trait_v2`)
[INFO] [stdout]    = help: implement the missing item: `fn branch(self) -> ControlFlow<<Self as Try>::Residual, <Self as Try>::Output> { todo!() }` (unstable, requires feature `try_trait_v2`)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied
[INFO] [stdout]    --> src/rsmtp.rs:124:75
[INFO] [stdout]     |
[INFO] [stdout] 124 |     pub async fn set_domain_name(&mut self, domain_name: Option<&str>) -> Result<(u64, Vec<ServerCapabilities>)>
[INFO] [stdout]     |                                                                           ^^^^^^ ------------------------------ supplied 1 generic argument
[INFO] [stdout]     |                                                                           |
[INFO] [stdout]     |                                                                           expected 2 generic arguments
[INFO] [stdout]     |
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]     |
[INFO] [stdout] 124 |     pub async fn set_domain_name(&mut self, domain_name: Option<&str>) -> Result<(u64, Vec<ServerCapabilities>), E>
[INFO] [stdout]     |                                                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied
[INFO] [stdout]    --> src/rsmtp.rs:198:80
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub async fn login<T: AuthCredentials>(&mut self, registration_opts: T) -> Result<()>
[INFO] [stdout]     |                                                                                ^^^^^^ -- supplied 1 generic argument
[INFO] [stdout]     |                                                                                |
[INFO] [stdout]     |                                                                                expected 2 generic arguments
[INFO] [stdout]     |
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub async fn login<T: AuthCredentials>(&mut self, registration_opts: T) -> Result<(), E>
[INFO] [stdout]     |                                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied
[INFO] [stdout]    --> src/rsmtp.rs:236:57
[INFO] [stdout]     |
[INFO] [stdout] 236 |     pub async fn send_email(&mut self, email: Email) -> Result<()>
[INFO] [stdout]     |                                                         ^^^^^^ -- supplied 1 generic argument
[INFO] [stdout]     |                                                         |
[INFO] [stdout]     |                                                         expected 2 generic arguments
[INFO] [stdout]     |
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]     |
[INFO] [stdout] 236 |     pub async fn send_email(&mut self, email: Email) -> Result<(), E>
[INFO] [stdout]     |                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied
[INFO] [stdout]    --> src/rsmtp.rs:262:45
[INFO] [stdout]     |
[INFO] [stdout] 262 |     pub async fn quit_session(&mut self) -> Result<()>
[INFO] [stdout]     |                                             ^^^^^^ -- supplied 1 generic argument
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             expected 2 generic arguments
[INFO] [stdout]     |
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]     |
[INFO] [stdout] 262 |     pub async fn quit_session(&mut self) -> Result<(), E>
[INFO] [stdout]     |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0046]: not all trait items implemented, missing: `Residual`, `from_output`, `branch`
[INFO] [stdout]   --> src/errors.rs:22:1
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Try for SMTPError
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^ missing `Residual`, `from_output`, `branch` in implementation
[INFO] [stdout]    |
[INFO] [stdout]    = help: implement the missing item: `type Residual = /* Type */;` (unstable, requires feature `try_trait_v2`)
[INFO] [stdout]    = help: implement the missing item: `fn from_output(_: <Self as Try>::Output) -> Self { todo!() }` (unstable, requires feature `try_trait_v2`)
[INFO] [stdout]    = help: implement the missing item: `fn branch(self) -> ControlFlow<<Self as Try>::Residual, <Self as Try>::Output> { todo!() }` (unstable, requires feature `try_trait_v2`)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied
[INFO] [stdout]    --> src/rsmtp.rs:124:75
[INFO] [stdout]     |
[INFO] [stdout] 124 |     pub async fn set_domain_name(&mut self, domain_name: Option<&str>) -> Result<(u64, Vec<ServerCapabilities>)>
[INFO] [stdout]     |                                                                           ^^^^^^ ------------------------------ supplied 1 generic argument
[INFO] [stdout]     |                                                                           |
[INFO] [stdout]     |                                                                           expected 2 generic arguments
[INFO] [stdout]     |
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]     |
[INFO] [stdout] 124 |     pub async fn set_domain_name(&mut self, domain_name: Option<&str>) -> Result<(u64, Vec<ServerCapabilities>), E>
[INFO] [stdout]     |                                                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied
[INFO] [stdout]    --> src/rsmtp.rs:198:80
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub async fn login<T: AuthCredentials>(&mut self, registration_opts: T) -> Result<()>
[INFO] [stdout]     |                                                                                ^^^^^^ -- supplied 1 generic argument
[INFO] [stdout]     |                                                                                |
[INFO] [stdout]     |                                                                                expected 2 generic arguments
[INFO] [stdout]     |
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub async fn login<T: AuthCredentials>(&mut self, registration_opts: T) -> Result<(), E>
[INFO] [stdout]     |                                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied
[INFO] [stdout]    --> src/rsmtp.rs:236:57
[INFO] [stdout]     |
[INFO] [stdout] 236 |     pub async fn send_email(&mut self, email: Email) -> Result<()>
[INFO] [stdout]     |                                                         ^^^^^^ -- supplied 1 generic argument
[INFO] [stdout]     |                                                         |
[INFO] [stdout]     |                                                         expected 2 generic arguments
[INFO] [stdout]     |
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]     |
[INFO] [stdout] 236 |     pub async fn send_email(&mut self, email: Email) -> Result<(), E>
[INFO] [stdout]     |                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied
[INFO] [stdout]    --> src/rsmtp.rs:262:45
[INFO] [stdout]     |
[INFO] [stdout] 262 |     pub async fn quit_session(&mut self) -> Result<()>
[INFO] [stdout]     |                                             ^^^^^^ -- supplied 1 generic argument
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             expected 2 generic arguments
[INFO] [stdout]     |
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]     |
[INFO] [stdout] 262 |     pub async fn quit_session(&mut self) -> Result<(), E>
[INFO] [stdout]     |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `SMTPError`
[INFO] [stdout]    --> src/rsmtp.rs:103:56
[INFO] [stdout]     |
[INFO] [stdout] 103 |         let tcp_stream = TcpStream::connect(addr).await?;
[INFO] [stdout]     |                          ------------------------------^ the trait `From<std::io::Error>` is not implemented for `SMTPError`
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this can't be annotated with `?` because it has type `Result<_, std::io::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `SMTPError` needs to implement `From<std::io::Error>`
[INFO] [stdout]    --> src/errors.rs:8:1
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub struct SMTPError
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `SMTPError`
[INFO] [stdout]    --> src/rsmtp.rs:103:56
[INFO] [stdout]     |
[INFO] [stdout] 103 |         let tcp_stream = TcpStream::connect(addr).await?;
[INFO] [stdout]     |                          ------------------------------^ the trait `From<std::io::Error>` is not implemented for `SMTPError`
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          this can't be annotated with `?` because it has type `Result<_, std::io::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `SMTPError` needs to implement `From<std::io::Error>`
[INFO] [stdout]    --> src/errors.rs:8:1
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub struct SMTPError
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `SMTPError`
[INFO] [stdout]    --> src/rsmtp.rs:106:73
[INFO] [stdout]     |
[INFO] [stdout] 106 |         let mut tls_stream = connector.connect(domain, tcp_stream).await?;
[INFO] [stdout]     |                              -------------------------------------------^ the trait `From<std::io::Error>` is not implemented for `SMTPError`
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              this can't be annotated with `?` because it has type `Result<_, std::io::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `SMTPError` needs to implement `From<std::io::Error>`
[INFO] [stdout]    --> src/errors.rs:8:1
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub struct SMTPError
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `SMTPError`
[INFO] [stdout]    --> src/rsmtp.rs:109:49
[INFO] [stdout]     |
[INFO] [stdout] 109 |         tls_stream.read_line(&mut content).await?;
[INFO] [stdout]     |         ----------------------------------------^ the trait `From<std::io::Error>` is not implemented for `SMTPError`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this can't be annotated with `?` because it has type `Result<_, std::io::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `SMTPError` needs to implement `From<std::io::Error>`
[INFO] [stdout]    --> src/errors.rs:8:1
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub struct SMTPError
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `SMTPError`
[INFO] [stdout]    --> src/rsmtp.rs:106:73
[INFO] [stdout]     |
[INFO] [stdout] 106 |         let mut tls_stream = connector.connect(domain, tcp_stream).await?;
[INFO] [stdout]     |                              -------------------------------------------^ the trait `From<std::io::Error>` is not implemented for `SMTPError`
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              this can't be annotated with `?` because it has type `Result<_, std::io::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `SMTPError` needs to implement `From<std::io::Error>`
[INFO] [stdout]    --> src/errors.rs:8:1
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub struct SMTPError
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `SMTPError`
[INFO] [stdout]    --> src/rsmtp.rs:109:49
[INFO] [stdout]     |
[INFO] [stdout] 109 |         tls_stream.read_line(&mut content).await?;
[INFO] [stdout]     |         ----------------------------------------^ the trait `From<std::io::Error>` is not implemented for `SMTPError`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         this can't be annotated with `?` because it has type `Result<_, std::io::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `SMTPError` needs to implement `From<std::io::Error>`
[INFO] [stdout]    --> src/errors.rs:8:1
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub struct SMTPError
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `SMTPServerOption` doesn't implement `std::fmt::Display`
[INFO] [stdout]    --> src/rsmtp.rs:121:114
[INFO] [stdout]     |
[INFO] [stdout] 121 |         return Err(SMTPError::new(SMTPEnumeratedErrors::GSMTPConnectionFailed, format!("Error connecting to {}", server_type)));
[INFO] [stdout]     |                                                                                                             --   ^^^^^^^^^^^ `SMTPServerOption` cannot be formatted with the default formatter
[INFO] [stdout]     |                                                                                                             |
[INFO] [stdout]     |                                                                                                             required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `std::fmt::Display` is not implemented for `SMTPServerOption`
[INFO] [stdout]    --> src/rsmtp.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub enum SMTPServerOption
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: in format strings you may be able to use `{:?}` (or `{:#?}` for pretty-print) instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `SMTPServerOption` doesn't implement `std::fmt::Display`
[INFO] [stdout]    --> src/rsmtp.rs:121:114
[INFO] [stdout]     |
[INFO] [stdout] 121 |         return Err(SMTPError::new(SMTPEnumeratedErrors::GSMTPConnectionFailed, format!("Error connecting to {}", server_type)));
[INFO] [stdout]     |                                                                                                             --   ^^^^^^^^^^^ `SMTPServerOption` cannot be formatted with the default formatter
[INFO] [stdout]     |                                                                                                             |
[INFO] [stdout]     |                                                                                                             required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `std::fmt::Display` is not implemented for `SMTPServerOption`
[INFO] [stdout]    --> src/rsmtp.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub enum SMTPServerOption
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: in format strings you may be able to use `{:?}` (or `{:#?}` for pretty-print) instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error: `SMTPError: std::error::Error` is not satisfied
[INFO] [stdout]   --> src/main.rs:15:45
[INFO] [stdout]    |
[INFO] [stdout] 14 |        let mut client = MailSMTPClient::connect_to_server(
[INFO] [stdout]    |  _______________________-
[INFO] [stdout] 15 | |          SMTPServerOption::GoogleSMTP).await?;
[INFO] [stdout]    | |                                            -^ the trait `std::error::Error` is not implemented for `SMTPError`
[INFO] [stdout]    | |____________________________________________|
[INFO] [stdout]    |                                              this has type `Result<_, SMTPError>`
[INFO] [stdout]    |
[INFO] [stdout] note: `SMTPError` needs to implement `std::error::Error`
[INFO] [stdout]   --> src/errors.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct SMTPError
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout]    = note: required for `Box<dyn std::error::Error>` to implement `From<SMTPError>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0046, E0107, E0277, E0658.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0046`.
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error: `SMTPError: std::error::Error` is not satisfied
[INFO] [stdout]   --> src/main.rs:15:45
[INFO] [stdout]    |
[INFO] [stdout] 14 |        let mut client = MailSMTPClient::connect_to_server(
[INFO] [stdout]    |  _______________________-
[INFO] [stdout] 15 | |          SMTPServerOption::GoogleSMTP).await?;
[INFO] [stdout]    | |                                            -^ the trait `std::error::Error` is not implemented for `SMTPError`
[INFO] [stdout]    | |____________________________________________|
[INFO] [stdout]    |                                              this has type `Result<_, SMTPError>`
[INFO] [stdout]    |
[INFO] [stdout] note: `SMTPError` needs to implement `std::error::Error`
[INFO] [stdout]   --> src/errors.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct SMTPError
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout]    = note: required for `Box<dyn std::error::Error>` to implement `From<SMTPError>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0046, E0107, E0277, E0658.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `mailclient` (bin "mailclient") due to 15 previous errors; 1 warning emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] For more information about an error, try `rustc --explain E0046`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `mailclient` (bin "mailclient" test) due to 15 previous errors; 1 warning emitted
[INFO] running `Command { std: "docker" "inspect" "80209e8cd1fc2b58793937b236729d1b41ed207c2af3cd6f6f78e6a1385925e1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "80209e8cd1fc2b58793937b236729d1b41ed207c2af3cd6f6f78e6a1385925e1", kill_on_drop: false }`
[INFO] [stdout] 80209e8cd1fc2b58793937b236729d1b41ed207c2af3cd6f6f78e6a1385925e1
