[INFO] cloning repository https://github.com/divinusdracodominus/simpleirc
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/divinusdracodominus/simpleirc" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdivinusdracodominus%2Fsimpleirc", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdivinusdracodominus%2Fsimpleirc'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] dabd3b5f68fca7fa6cf1e3990f6f1a1e58bd11ea
[INFO] checking divinusdracodominus/simpleirc against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdivinusdracodominus%2Fsimpleirc" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/divinusdracodominus/simpleirc
[INFO] finished tweaking git repo https://github.com/divinusdracodominus/simpleirc
[INFO] tweaked toml for git repo https://github.com/divinusdracodominus/simpleirc written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/divinusdracodominus/simpleirc on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/divinusdracodominus/simpleirc 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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded err-derive v0.3.1
[INFO] [stderr]   Downloaded proc-macro2 v1.0.51
[INFO] [stderr]   Downloaded rustversion v1.0.12
[INFO] [stderr]   Downloaded tokio v1.26.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] bbda249b6f3f1a258a932288531a074062e05613038cad8d62e4c98a23033cc8
[INFO] running `Command { std: "docker" "start" "-a" "bbda249b6f3f1a258a932288531a074062e05613038cad8d62e4c98a23033cc8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "bbda249b6f3f1a258a932288531a074062e05613038cad8d62e4c98a23033cc8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bbda249b6f3f1a258a932288531a074062e05613038cad8d62e4c98a23033cc8", kill_on_drop: false }`
[INFO] [stdout] bbda249b6f3f1a258a932288531a074062e05613038cad8d62e4c98a23033cc8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 4dbd20c84f08384203e2097568784b519547fa7ad5bf920f2f99177310f6df1d
[INFO] running `Command { std: "docker" "start" "-a" "4dbd20c84f08384203e2097568784b519547fa7ad5bf920f2f99177310f6df1d", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.51
[INFO] [stderr]    Compiling unicode-ident v1.0.6
[INFO] [stderr]    Compiling quote v1.0.23
[INFO] [stderr]    Compiling libc v0.2.140
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling rustversion v1.0.12
[INFO] [stderr]    Compiling parking_lot_core v0.9.7
[INFO] [stderr]    Compiling unicode-segmentation v1.10.1
[INFO] [stderr]     Checking textwrap v0.11.0
[INFO] [stderr]    Compiling tokio v1.26.0
[INFO] [stderr]    Compiling serde v1.0.152
[INFO] [stderr]     Checking strsim v0.8.0
[INFO] [stderr]    Compiling serde_derive v1.0.152
[INFO] [stderr]    Compiling unicode-xid v0.2.4
[INFO] [stderr]     Checking bytes v1.4.0
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking num_cpus v1.15.0
[INFO] [stderr]     Checking signal-hook-registry v1.4.1
[INFO] [stderr]     Checking socket2 v0.4.9
[INFO] [stderr]     Checking mio v0.8.6
[INFO] [stderr]    Compiling heck v0.3.3
[INFO] [stderr]     Checking clap v2.34.0
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]    Compiling err-derive v0.3.1
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling synstructure v0.12.6
[INFO] [stderr]    Compiling tokio-macros v1.8.2
[INFO] [stderr]    Compiling structopt-derive v0.4.18
[INFO] [stderr]     Checking structopt v0.3.26
[INFO] [stderr]     Checking networkingirc v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `de::Deserialize`
[INFO] [stdout]  --> src/command.rs:2:29
[INFO] [stdout]   |
[INFO] [stdout] 2 | use serde::{ser::Serialize, de::Deserialize};
[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: `de::Deserialize`
[INFO] [stdout]  --> src/command.rs:2:29
[INFO] [stdout]   |
[INFO] [stdout] 2 | use serde::{ser::Serialize, de::Deserialize};
[INFO] [stdout]   |                             ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keys`
[INFO] [stdout]    --> src/message.rs:103:33
[INFO] [stdout]     |
[INFO] [stdout] 103 |         Command::JOIN(channels, keys, realname) => {
[INFO] [stdout]     |                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_keys`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `realname`
[INFO] [stdout]    --> src/message.rs:103:39
[INFO] [stdout]     |
[INFO] [stdout] 103 |         Command::JOIN(channels, keys, realname) => {
[INFO] [stdout]     |                                       ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_realname`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sig`
[INFO] [stdout]   --> src/user.rs:56:22
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub fn parse_sig(sig: &str) -> (Option<String>, String, String) {
[INFO] [stdout]    |                      ^^^ help: if this is intentional, prefix it with an underscore: `_sig`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/client.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 |             Err(e) => return Err(CommandParseError::NoCommandFound(input)),
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/client.rs:32:21
[INFO] [stdout]    |
[INFO] [stdout] 32 |                 let mut invec = input.chars().collect::<Vec<char>>();
[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/client.rs:44:21
[INFO] [stdout]    |
[INFO] [stdout] 44 |                 let mut invec = input.chars().collect::<Vec<char>>();
[INFO] [stdout]    |                     ----^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `modes` are never read
[INFO] [stdout]  --> src/channel.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct ChannelMeta {
[INFO] [stdout]   |            ----------- fields in this struct
[INFO] [stdout] 4 |     name: String,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 5 |     modes: Vec<ChannelMode>,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `trailing` is never read
[INFO] [stdout]  --> src/message.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Message {
[INFO] [stdout]   |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 8 |     trailing: Option<String>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Message` 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 `channel` is never read
[INFO] [stdout]  --> src/client.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct CmdOperator {
[INFO] [stdout]   |            ----------- field in this struct
[INFO] [stdout] 8 |     channel: String,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/lib.rs:48:17
[INFO] [stdout]    |
[INFO] [stdout] 48 | #[derive(Debug, Error)]
[INFO] [stdout]    |                 ^----
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 `Error` is not local
[INFO] [stdout]    |                 move the `impl` block outside of this constant `_DERIVE_std_error_Error_FOR_IrcError`
[INFO] [stdout] 49 | pub enum IrcError {
[INFO] [stdout]    |          -------- `IrcError` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Error` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Error` may come from an old version of the `err_derive` crate, try updating your dependency with `cargo update -p err_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout]    = note: this warning originates in the derive macro `Error` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/lib.rs:48:17
[INFO] [stdout]    |
[INFO] [stdout] 48 | #[derive(Debug, Error)]
[INFO] [stdout]    |                 ^----
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 `Display` is not local
[INFO] [stdout]    |                 move the `impl` block outside of this constant `_DERIVE_core_fmt_Display_FOR_IrcError`
[INFO] [stdout] 49 | pub enum IrcError {
[INFO] [stdout]    |          -------- `IrcError` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Error` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Error` may come from an old version of the `err_derive` crate, try updating your dependency with `cargo update -p err_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: this warning originates in the derive macro `Error` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/command.rs:102:24
[INFO] [stdout]     |
[INFO] [stdout] 102 | #[derive(Debug, Clone, Error, Serialize, Deserialize)]
[INFO] [stdout]     |                        ^----
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        `Error` is not local
[INFO] [stdout]     |                        move the `impl` block outside of this constant `_DERIVE_std_error_Error_FOR_CommandParseError`
[INFO] [stdout] 103 | pub enum CommandParseError {
[INFO] [stdout]     |          ----------------- `CommandParseError` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: the derive macro `Error` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]     = note: the derive macro `Error` may come from an old version of the `err_derive` crate, try updating your dependency with `cargo update -p err_derive`
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]     = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]     = note: this warning originates in the derive macro `Error` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/command.rs:102:24
[INFO] [stdout]     |
[INFO] [stdout] 102 | #[derive(Debug, Clone, Error, Serialize, Deserialize)]
[INFO] [stdout]     |                        ^----
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        `Display` is not local
[INFO] [stdout]     |                        move the `impl` block outside of this constant `_DERIVE_core_fmt_Display_FOR_CommandParseError`
[INFO] [stdout] 103 | pub enum CommandParseError {
[INFO] [stdout]     |          ----------------- `CommandParseError` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: the derive macro `Error` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]     = note: the derive macro `Error` may come from an old version of the `err_derive` crate, try updating your dependency with `cargo update -p err_derive`
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]     = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]     = note: this warning originates in the derive macro `Error` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sig`
[INFO] [stdout]   --> src/user.rs:56:22
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub fn parse_sig(sig: &str) -> (Option<String>, String, String) {
[INFO] [stdout]    |                      ^^^ help: if this is intentional, prefix it with an underscore: `_sig`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/client.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 |             Err(e) => return Err(CommandParseError::NoCommandFound(input)),
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/client.rs:32:21
[INFO] [stdout]    |
[INFO] [stdout] 32 |                 let mut invec = input.chars().collect::<Vec<char>>();
[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/client.rs:44:21
[INFO] [stdout]    |
[INFO] [stdout] 44 |                 let mut invec = input.chars().collect::<Vec<char>>();
[INFO] [stdout]    |                     ----^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `modes` are never read
[INFO] [stdout]  --> src/channel.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct ChannelMeta {
[INFO] [stdout]   |            ----------- fields in this struct
[INFO] [stdout] 4 |     name: String,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 5 |     modes: Vec<ChannelMode>,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `trailing` is never read
[INFO] [stdout]  --> src/message.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Message {
[INFO] [stdout]   |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 8 |     trailing: Option<String>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Message` 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 `channel` is never read
[INFO] [stdout]  --> src/client.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct CmdOperator {
[INFO] [stdout]   |            ----------- field in this struct
[INFO] [stdout] 8 |     channel: String,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/lib.rs:48:17
[INFO] [stdout]    |
[INFO] [stdout] 48 | #[derive(Debug, Error)]
[INFO] [stdout]    |                 ^----
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 `Error` is not local
[INFO] [stdout]    |                 move the `impl` block outside of this constant `_DERIVE_std_error_Error_FOR_IrcError`
[INFO] [stdout] 49 | pub enum IrcError {
[INFO] [stdout]    |          -------- `IrcError` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Error` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Error` may come from an old version of the `err_derive` crate, try updating your dependency with `cargo update -p err_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout]    = note: this warning originates in the derive macro `Error` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/lib.rs:48:17
[INFO] [stdout]    |
[INFO] [stdout] 48 | #[derive(Debug, Error)]
[INFO] [stdout]    |                 ^----
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 `Display` is not local
[INFO] [stdout]    |                 move the `impl` block outside of this constant `_DERIVE_core_fmt_Display_FOR_IrcError`
[INFO] [stdout] 49 | pub enum IrcError {
[INFO] [stdout]    |          -------- `IrcError` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Error` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Error` may come from an old version of the `err_derive` crate, try updating your dependency with `cargo update -p err_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: this warning originates in the derive macro `Error` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/command.rs:102:24
[INFO] [stdout]     |
[INFO] [stdout] 102 | #[derive(Debug, Clone, Error, Serialize, Deserialize)]
[INFO] [stdout]     |                        ^----
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        `Error` is not local
[INFO] [stdout]     |                        move the `impl` block outside of this constant `_DERIVE_std_error_Error_FOR_CommandParseError`
[INFO] [stdout] 103 | pub enum CommandParseError {
[INFO] [stdout]     |          ----------------- `CommandParseError` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: the derive macro `Error` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]     = note: the derive macro `Error` may come from an old version of the `err_derive` crate, try updating your dependency with `cargo update -p err_derive`
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]     = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]     = note: this warning originates in the derive macro `Error` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/command.rs:102:24
[INFO] [stdout]     |
[INFO] [stdout] 102 | #[derive(Debug, Clone, Error, Serialize, Deserialize)]
[INFO] [stdout]     |                        ^----
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        `Display` is not local
[INFO] [stdout]     |                        move the `impl` block outside of this constant `_DERIVE_core_fmt_Display_FOR_CommandParseError`
[INFO] [stdout] 103 | pub enum CommandParseError {
[INFO] [stdout]     |          ----------------- `CommandParseError` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: the derive macro `Error` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]     = note: the derive macro `Error` may come from an old version of the `err_derive` crate, try updating your dependency with `cargo update -p err_derive`
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]     = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]     = note: this warning originates in the derive macro `Error` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `#[macro_use]` import
[INFO] [stdout]  --> src/bin/client.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #[macro_use]extern crate tokio;
[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: `AsyncReadExt`
[INFO] [stdout]   --> src/bin/client.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::io::{AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/bin/server.rs:182:5
[INFO] [stdout]     |
[INFO] [stdout] 126 | /     loop {
[INFO] [stdout] 127 | |         let (cmddata, bytes_read) = read_message(&mut stream).await?;
[INFO] [stdout] 128 | |         if bytes_read == 0 {
[INFO] [stdout] 129 | |             println!("client has disconnected");
[INFO] [stdout] ...   |
[INFO] [stdout] 180 | |     }
[INFO] [stdout]     | |_____- any code following this expression is unreachable
[INFO] [stdout] 181 |
[INFO] [stdout] 182 |       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: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/client.rs:31:10
[INFO] [stdout]    |
[INFO] [stdout] 31 |     let (mut sender, mut receiver): (Sender<String>, Receiver<String>) = channel(100);
[INFO] [stdout]    |          ----^^^^^^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `operator`
[INFO] [stdout]   --> src/bin/client.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let operator = CmdOperator::default();
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operator`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncReadExt`
[INFO] [stdout]  --> src/bin/server.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::io::{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] warning: unused variable: `bytes_read`
[INFO] [stdout]   --> src/bin/server.rs:69:16
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let (data, bytes_read) = read_message(&mut stream).await?;
[INFO] [stdout]    |                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bytes_read`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/bin/server.rs:178:17
[INFO] [stdout]     |
[INFO] [stdout] 178 |             Err(e) => {},
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/bin/client.rs:78:13
[INFO] [stdout]    |
[INFO] [stdout] 78 |             write.write(message.as_bytes()).await;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 78 |             let _ = write.write(message.as_bytes()).await;
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/bin/client.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 87 |         sender.send(input.clone()).await;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let _ = sender.send(input.clone()).await;
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `#[macro_use]` import
[INFO] [stdout]  --> src/bin/client.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #[macro_use]extern crate tokio;
[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: `AsyncReadExt`
[INFO] [stdout]   --> src/bin/client.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::io::{AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/bin/server.rs:202:10
[INFO] [stdout]     |
[INFO] [stdout] 202 |     for (id, user) in read.iter() {
[INFO] [stdout]     |          ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/bin/server.rs:182:5
[INFO] [stdout]     |
[INFO] [stdout] 126 | /     loop {
[INFO] [stdout] 127 | |         let (cmddata, bytes_read) = read_message(&mut stream).await?;
[INFO] [stdout] 128 | |         if bytes_read == 0 {
[INFO] [stdout] 129 | |             println!("client has disconnected");
[INFO] [stdout] ...   |
[INFO] [stdout] 180 | |     }
[INFO] [stdout]     | |_____- any code following this expression is unreachable
[INFO] [stdout] 181 |
[INFO] [stdout] 182 |       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: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/client.rs:31:10
[INFO] [stdout]    |
[INFO] [stdout] 31 |     let (mut sender, mut receiver): (Sender<String>, Receiver<String>) = channel(100);
[INFO] [stdout]    |          ----^^^^^^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `operator`
[INFO] [stdout]   --> src/bin/client.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let operator = CmdOperator::default();
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operator`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/bin/client.rs:78:13
[INFO] [stdout]    |
[INFO] [stdout] 78 |             write.write(message.as_bytes()).await;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 78 |             let _ = write.write(message.as_bytes()).await;
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/bin/client.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 87 |         sender.send(input.clone()).await;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let _ = sender.send(input.clone()).await;
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncReadExt`
[INFO] [stdout]  --> src/bin/server.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::io::{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] warning: unused variable: `bytes_read`
[INFO] [stdout]   --> src/bin/server.rs:69:16
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let (data, bytes_read) = read_message(&mut stream).await?;
[INFO] [stdout]    |                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bytes_read`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/bin/server.rs:178:17
[INFO] [stdout]     |
[INFO] [stdout] 178 |             Err(e) => {},
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/bin/server.rs:202:10
[INFO] [stdout]     |
[INFO] [stdout] 202 |     for (id, user) in read.iter() {
[INFO] [stdout]     |          ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 18.36s
[INFO] running `Command { std: "docker" "inspect" "4dbd20c84f08384203e2097568784b519547fa7ad5bf920f2f99177310f6df1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4dbd20c84f08384203e2097568784b519547fa7ad5bf920f2f99177310f6df1d", kill_on_drop: false }`
[INFO] [stdout] 4dbd20c84f08384203e2097568784b519547fa7ad5bf920f2f99177310f6df1d
