[INFO] cloning repository https://github.com/FauxFaux/badchat
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/FauxFaux/badchat" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFauxFaux%2Fbadchat", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFauxFaux%2Fbadchat'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 24a6a92c09f312d4f8123aa5e96d1f9164f8882b
[INFO] testing FauxFaux/badchat against master#1871252fc8bb672d40787e67404e6eaae7059369 for pr-125151
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFauxFaux%2Fbadchat" "/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/FauxFaux/badchat on toolchain 1871252fc8bb672d40787e67404e6eaae7059369
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/FauxFaux/badchat
[INFO] finished tweaking git repo https://github.com/FauxFaux/badchat
[INFO] tweaked toml for git repo https://github.com/FauxFaux/badchat written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/FauxFaux/badchat 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" "+1871252fc8bb672d40787e67404e6eaae7059369" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded bunyarrs v0.2.0
[INFO] [stderr]   Downloaded aws-lc-rs v1.6.4
[INFO] [stderr]   Downloaded aws-lc-sys v0.14.1
[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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ec22de42136593793b67ba1f67edd6df9148f9a0fd815159ef94a84313a38cec
[INFO] running `Command { std: "docker" "start" "-a" "ec22de42136593793b67ba1f67edd6df9148f9a0fd815159ef94a84313a38cec", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ec22de42136593793b67ba1f67edd6df9148f9a0fd815159ef94a84313a38cec", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ec22de42136593793b67ba1f67edd6df9148f9a0fd815159ef94a84313a38cec", kill_on_drop: false }`
[INFO] [stdout] ec22de42136593793b67ba1f67edd6df9148f9a0fd815159ef94a84313a38cec
[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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 275f5f54c89c9fb3b6e413a0ee7aaac07e00e48b7b42eae2e4282a7b8f509456
[INFO] running `Command { std: "docker" "start" "-a" "275f5f54c89c9fb3b6e413a0ee7aaac07e00e48b7b42eae2e4282a7b8f509456", kill_on_drop: false }`
[INFO] [stderr]    Compiling cc v1.0.94
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]    Compiling crunchy v0.2.2
[INFO] [stderr]    Compiling libc v0.2.153
[INFO] [stderr]    Compiling allocator-api2 v0.2.18
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling dunce v1.0.4
[INFO] [stderr]    Compiling getrandom v0.2.14
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling syn v2.0.58
[INFO] [stderr]    Compiling subtle v2.5.0
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling aws-lc-rs v1.6.4
[INFO] [stderr]    Compiling ucd-trie v0.1.6
[INFO] [stderr]    Compiling hashbrown v0.14.3
[INFO] [stderr]    Compiling futures-channel v0.3.30
[INFO] [stderr]    Compiling mirai-annotations v1.12.0
[INFO] [stderr]    Compiling regex-syntax v0.8.3
[INFO] [stderr]    Compiling rustls-pki-types v1.4.1
[INFO] [stderr]    Compiling zeroize v1.7.0
[INFO] [stderr]    Compiling serde_json v1.0.115
[INFO] [stderr]    Compiling cmake v0.1.50
[INFO] [stderr]    Compiling linked-hash-map v0.5.6
[INFO] [stderr]    Compiling indexmap v2.2.6
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]    Compiling rustls v0.23.4
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling winnow v0.6.6
[INFO] [stderr]    Compiling utf8parse v0.2.1
[INFO] [stderr]    Compiling hashbrown v0.13.2
[INFO] [stderr]    Compiling match_cfg v0.1.0
[INFO] [stderr]    Compiling hostname v0.3.1
[INFO] [stderr]    Compiling const-random v0.1.18
[INFO] [stderr]    Compiling anstyle-parse v0.2.3
[INFO] [stderr]    Compiling dlv-list v0.5.2
[INFO] [stderr]    Compiling aws-lc-sys v0.14.1
[INFO] [stderr]    Compiling regex-automata v0.4.6
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling ordered-multimap v0.6.0
[INFO] [stderr]    Compiling idna v0.4.0
[INFO] [stderr]    Compiling base64ct v1.6.0
[INFO] [stderr]    Compiling colorchoice v1.0.0
[INFO] [stderr]    Compiling anstyle-query v1.0.2
[INFO] [stderr]    Compiling anstyle v1.0.6
[INFO] [stderr]    Compiling data-encoding v2.5.0
[INFO] [stderr]    Compiling anyhow v1.0.82
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling virtue v0.0.13
[INFO] [stderr]    Compiling resolv-conf v0.7.0
[INFO] [stderr]    Compiling sha2 v0.10.8
[INFO] [stderr]    Compiling regex v1.10.4
[INFO] [stderr]    Compiling bincode_derive v2.0.0-rc.3
[INFO] [stderr]    Compiling anstream v0.6.13
[INFO] [stderr]    Compiling env_filter v0.1.0
[INFO] [stderr]    Compiling time v0.3.36
[INFO] [stderr]    Compiling password-hash v0.5.0
[INFO] [stderr]    Compiling rust-ini v0.19.0
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling yaml-rust v0.4.5
[INFO] [stderr]    Compiling serde_derive v1.0.197
[INFO] [stderr]    Compiling thiserror-impl v1.0.58
[INFO] [stderr]    Compiling tokio-macros v2.2.0
[INFO] [stderr]    Compiling futures-macro v0.3.30
[INFO] [stderr]    Compiling tokio v1.37.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.27
[INFO] [stderr]    Compiling async-trait v0.1.80
[INFO] [stderr]    Compiling thiserror v1.0.58
[INFO] [stderr]    Compiling pest v2.7.9
[INFO] [stderr]    Compiling futures-util v0.3.30
[INFO] [stderr]    Compiling enum-as-inner v0.6.0
[INFO] [stderr]    Compiling pest_meta v2.7.9
[INFO] [stderr]    Compiling tracing v0.1.40
[INFO] [stderr]    Compiling lru-cache v0.1.2
[INFO] [stderr]    Compiling hashlink v0.9.0
[INFO] [stderr]    Compiling gethostname v0.4.3
[INFO] [stderr]    Compiling serde v1.0.197
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling base64 v0.22.0
[INFO] [stderr]    Compiling humantime v2.1.0
[INFO] [stderr]    Compiling pest_generator v2.7.9
[INFO] [stderr]    Compiling atomic v0.5.3
[INFO] [stderr]    Compiling futures-executor v0.3.30
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling futures v0.3.30
[INFO] [stderr]    Compiling rustls-pemfile v2.1.2
[INFO] [stderr]    Compiling env_logger v0.11.3
[INFO] [stderr]    Compiling pbkdf2 v0.12.2
[INFO] [stderr]    Compiling dns-lookup v2.0.4
[INFO] [stderr]    Compiling maplit v1.0.2
[INFO] [stderr]    Compiling pest_derive v2.7.9
[INFO] [stderr]    Compiling hickory-proto v0.24.0
[INFO] [stderr]    Compiling tokio-util v0.7.10
[INFO] [stderr]    Compiling toml_datetime v0.6.5
[INFO] [stderr]    Compiling bitflags v2.5.0
[INFO] [stderr]    Compiling serde_spanned v0.6.5
[INFO] [stderr]    Compiling toml_edit v0.22.9
[INFO] [stderr]    Compiling ron v0.8.1
[INFO] [stderr]    Compiling json5 v0.4.1
[INFO] [stderr]    Compiling bunyarrs v0.2.0
[INFO] [stderr]    Compiling hickory-resolver v0.24.0
[INFO] [stderr]    Compiling toml v0.8.12
[INFO] [stderr]    Compiling config v0.14.0
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling bincode v2.0.0-rc.3
[INFO] [stderr]    Compiling uuid v1.8.0
[INFO] [stderr]    Compiling rustls-webpki v0.102.2
[INFO] [stderr]    Compiling tokio-rustls v0.26.0
[INFO] [stderr]    Compiling badchat v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `read_message`
[INFO] [stdout]   --> src/bad/two.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::lined::{read_message, FromLined, MessageIn, MessageOut, ToLined, Uid};
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/bad/mod.rs:757:9
[INFO] [stdout]     |
[INFO] [stdout] 752 | /         loop {
[INFO] [stdout] 753 | |             let value = read_message(&mut buf, &mut read).await?;
[INFO] [stdout] 754 | |             from_lined_tx.send(value).await?;
[INFO] [stdout] 755 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 756 |
[INFO] [stdout] 757 |           Ok::<(), anyhow::Error>(())
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `system`
[INFO] [stdout]    --> src/bad/mod.rs:739:13
[INFO] [stdout]     |
[INFO] [stdout] 739 |     let mut system = System::new()?;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_system`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `deadline`
[INFO] [stdout]   --> src/bad/two.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let deadline = sleep(deadline - Instant::now());
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_deadline`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bad/two.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let mut resolve = tokio::spawn(async move { resolver.reverse_lookup(host.ip()).await });
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/bad/mod.rs:739:9
[INFO] [stdout]     |
[INFO] [stdout] 739 |     let mut system = System::new()?;
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bad/mod.rs:745:25
[INFO] [stdout]     |
[INFO] [stdout] 745 |     let (from_lined_tx, mut from_lined_rx) = tokio::sync::mpsc::channel::<FromLined>(128);
[INFO] [stdout]     |                         ----^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/bad/mod.rs:385:13
[INFO] [stdout]     |
[INFO] [stdout] 385 |             PreAuthOp::Done => vec![Output {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer_addr`
[INFO] [stdout]   --> src/lined/admin.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     peer_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INPUT_LENGTH_LIMIT` is never used
[INFO] [stdout]   --> src/bad/mod.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const INPUT_LENGTH_LIMIT: usize = 4_096;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `data` and `next` are never read
[INFO] [stdout]   --> src/bad/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | struct Users {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 48 |     data: HashMap<UserId, User>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 49 |     next: u64,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `store`, `clients`, `users`, and `resolver` are never read
[INFO] [stdout]   --> src/bad/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct System {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout] 53 |     store: Store,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 54 |     clients: Clients,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 55 |     users: Users,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 56 |
[INFO] [stdout] 57 |     resolver: TokioAsyncResolver,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `WaitingForPong` and `Complete` are never constructed
[INFO] [stdout]   --> src/bad/mod.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | enum PreAuthPing {
[INFO] [stdout]    |      ----------- variants in this enum
[INFO] [stdout] 62 |     WaitingForNick,
[INFO] [stdout] 63 |     WaitingForPong,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     Complete,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuthPing` 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: fields `account` and `pass` are never read
[INFO] [stdout]   --> src/bad/mod.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct Pass {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 70 |     account: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 71 |     pass: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Pass` 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: fields `nick`, `pass`, `gecos`, `sending_caps`, `ping`, and `ping_token` are never read
[INFO] [stdout]   --> src/bad/mod.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct PreAuth {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 76 |     nick: Option<Nick>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 77 |     pass: Option<Pass>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 78 |     gecos: Option<(String, String)>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 79 |     sending_caps: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 80 |     ping: PreAuthPing,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 81 |     ping_token: PingToken,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuth` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_client_preamble_done` is never used
[INFO] [stdout]   --> src/bad/mod.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | impl PreAuth {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] 85 |     fn is_client_preamble_done(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `PreAuth`, `Singleton`, and `MultiAware` are never constructed
[INFO] [stdout]    --> src/bad/mod.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 109 | enum Client {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] 110 |     PreAuth {
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     Singleton {
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     MultiAware {
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Client` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nick`, `host_mask`, and `channels` are never read
[INFO] [stdout]    --> src/bad/mod.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | struct User {
[INFO] [stdout]     |        ---- fields in this struct
[INFO] [stdout] 126 |     nick: Nick,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 127 |     host_mask: HostMask,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 128 |     channels: HashSet<ChannelId>,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `User` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Req` is never used
[INFO] [stdout]    --> src/bad/mod.rs:132:6
[INFO] [stdout]     |
[INFO] [stdout] 132 | enum Req {
[INFO] [stdout]     |      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FromTo` is never used
[INFO] [stdout]    --> src/bad/mod.rs:140:6
[INFO] [stdout]     |
[INFO] [stdout] 140 | enum FromTo {
[INFO] [stdout]     |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Output` is never constructed
[INFO] [stdout]    --> src/bad/mod.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | struct Output {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u` is never used
[INFO] [stdout]    --> src/bad/mod.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn u<S: ToString, I: IntoIterator<Item = S>>(
[INFO] [stdout]     |    ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `s2u` is never used
[INFO] [stdout]    --> src/bad/mod.rs:179:4
[INFO] [stdout]     |
[INFO] [stdout] 179 | fn s2u<S: ToString, I: IntoIterator<Item = S>>(to: UserId, cmd: &'static str, args: I) -> Output {
[INFO] [stdout]     |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]    --> src/bad/mod.rs:203:14
[INFO] [stdout]     |
[INFO] [stdout] 188 | impl System {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 203 |     async fn run(&mut self, mut inp: Receiver<FromLined>, out: Sender<ToLined>) -> Result<()> {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_user` is never used
[INFO] [stdout]    --> src/bad/mod.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn find_user(clients: &Clients, which: UserId) -> Uid {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_client` is never used
[INFO] [stdout]    --> src/bad/mod.rs:282:4
[INFO] [stdout]     |
[INFO] [stdout] 282 | fn work_client(
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_single_client` is never used
[INFO] [stdout]    --> src/bad/mod.rs:421:4
[INFO] [stdout]     |
[INFO] [stdout] 421 | fn work_single_client(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_req` is never used
[INFO] [stdout]    --> src/bad/mod.rs:479:4
[INFO] [stdout]     |
[INFO] [stdout] 479 | fn work_req(store: &mut Store, users: &mut Users, us: UserId, req: Req) -> Vec<Output> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lookup_user` is never used
[INFO] [stdout]    --> src/bad/mod.rs:507:4
[INFO] [stdout]     |
[INFO] [stdout] 507 | fn lookup_user(users: &Users, nick: &Nick) -> Option<UserId> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `message_channel` is never used
[INFO] [stdout]    --> src/bad/mod.rs:515:4
[INFO] [stdout]     |
[INFO] [stdout] 515 | fn message_channel(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `joined` is never used
[INFO] [stdout]    --> src/bad/mod.rs:542:4
[INFO] [stdout]     |
[INFO] [stdout] 542 | fn joined(store: &mut Store, users: &mut Users, us: UserId, chan: &ChannelName) -> Vec<Output> {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unpack_command` is never used
[INFO] [stdout]    --> src/bad/mod.rs:608:4
[INFO] [stdout]     |
[INFO] [stdout] 608 | fn unpack_command(command: Result<Command, &'static str>) -> Result<Vec<Req>, OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wrapped` is never used
[INFO] [stdout]    --> src/bad/mod.rs:660:4
[INFO] [stdout]     |
[INFO] [stdout] 660 | fn wrapped<'i, I: IntoIterator<Item = &'i str>>(it: I) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_on_boarding` is never used
[INFO] [stdout]    --> src/bad/mod.rs:690:4
[INFO] [stdout]     |
[INFO] [stdout] 690 | fn send_on_boarding(nick: &str) -> Vec<OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line_to_message` is never used
[INFO] [stdout]    --> src/bad/mod.rs:729:4
[INFO] [stdout]     |
[INFO] [stdout] 729 | fn line_to_message(token: Uid, line: &str) -> Result<Option<Message>, OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_such_nick` is never used
[INFO] [stdout]   --> src/bad/err.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn no_such_nick<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_such_channel` is never used
[INFO] [stdout]   --> src/bad/err.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn no_such_channel<I: Ident>(ident: I, _channel: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `invalid_cap_command` is never used
[INFO] [stdout]   --> src/bad/err.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn invalid_cap_command<I: Ident>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_error` is never used
[INFO] [stdout]   --> src/bad/err.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn file_error<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `erroneous_nickname` is never used
[INFO] [stdout]   --> src/bad/err.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn erroneous_nickname<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nickname_in_use` is never used
[INFO] [stdout]   --> src/bad/err.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn nickname_in_use<I: Ident>(ident: I, nick: &Nick, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `not_registered` is never used
[INFO] [stdout]   --> src/bad/err.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn not_registered<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `password_mismatch` is never used
[INFO] [stdout]   --> src/bad/err.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn password_mismatch<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `inner` is never read
[INFO] [stdout]   --> src/bad/ids.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct HostMask {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 56 |     inner: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HostMask` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Nick {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 60 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<Nick, &'static str> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | impl ChannelName {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 72 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<ChannelName, &'static str> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl HostMask {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn new(raw_user_name: &str, host: &str) -> HostMask {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_channel` is never used
[INFO] [stdout]    --> src/bad/ids.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn valid_channel(chan: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_account` is never used
[INFO] [stdout]    --> src/bad/ids.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn valid_account(account: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_nick` is never used
[INFO] [stdout]    --> src/bad/ids.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn valid_nick(nick: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_nick_char` is never used
[INFO] [stdout]    --> src/bad/ids.rs:144:4
[INFO] [stdout]     |
[INFO] [stdout] 144 | fn valid_nick_char(c: char) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PreAuthOp` is never used
[INFO] [stdout]   --> src/bad/pre.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum PreAuthOp {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuthOp` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_pre_auth` is never used
[INFO] [stdout]   --> src/bad/pre.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn work_pre_auth(message: &Message, state: &mut PreAuth) -> PreAuthOp {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_http_verb` is never used
[INFO] [stdout]    --> src/bad/pre.rs:118:4
[INFO] [stdout]     |
[INFO] [stdout] 118 | fn is_http_verb(word: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, and `2` are never read
[INFO] [stdout]   --> src/bad/proto.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Join(&'s str, Option<&'s str>, Option<&'s str>),
[INFO] [stdout]    |     ---- ^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Join((), (), ()),
[INFO] [stdout]    |          ~~  ~~  ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/bad/proto.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Privmsg(&'s str, &'s str),
[INFO] [stdout]    |     ------- ^^^^^^^  ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Privmsg((), ()),
[INFO] [stdout]    |             ~~  ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Quit(Option<&'s str>),
[INFO] [stdout]    |     ---- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Quit(()),
[INFO] [stdout]    |          ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 |     CapLs(Option<&'s str>),
[INFO] [stdout]    |     ----- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 25 |     CapLs(()),
[INFO] [stdout]    |           ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Other(&'s str),
[INFO] [stdout]    |     ----- ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Other(()),
[INFO] [stdout]    |           ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `tags_str`, `source_str`, and `source_nick` are never used
[INFO] [stdout]    --> src/bad/proto.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl ParsedMessage {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] 135 |     fn tags_str(&self) -> Option<&str> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn source_str(&self) -> Option<&str> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn source_nick(&self) -> Result<Option<Nick>, &'static str> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `conn` is never read
[INFO] [stdout]   --> src/bad/store.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Store {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 16 |     conn: Connection,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `account` and `load_channel` are never used
[INFO] [stdout]   --> src/bad/store.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Store {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn account(&mut self, pass: &Pass) -> Option<i64> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn load_channel(&mut self, name: &ChannelName) -> ChannelId {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_id` is never used
[INFO] [stdout]   --> src/bad/store.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn load_id<P>(tx: &Transaction, query: &'static str, params: P) -> Option<i64>
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_account` is never used
[INFO] [stdout]   --> src/bad/store.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn create_account(tx: Transaction, pass: &Pass) -> i64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_channel` is never used
[INFO] [stdout]    --> src/bad/store.rs:112:4
[INFO] [stdout]     |
[INFO] [stdout] 112 | fn create_channel(tx: Transaction, name: &ChannelName) -> i64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_pass` is never used
[INFO] [stdout]    --> src/bad/store.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn check_pass(pass: &str, hashed: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unix_time` is never used
[INFO] [stdout]    --> src/bad/store.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn unix_time() -> i64 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `SystemError` is never used
[INFO] [stdout]    --> src/bad/store.rs:150:7
[INFO] [stdout]     |
[INFO] [stdout] 150 | trait SystemError<T, E> {
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `lazy_view_or_insert_with` is never used
[INFO] [stdout]  --> src/in_map.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub trait LazyView<K: Copy + hash::Hash + cmp::Eq, V> {
[INFO] [stdout]   |           -------- method in this trait
[INFO] [stdout] 6 |     fn lazy_view(&mut self, key: K) -> Option<MapBorrow<K, V>>;
[INFO] [stdout] 7 |     fn lazy_view_or_insert_with<F>(&mut self, key: K, default: F) -> MapBorrow<K, V>
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `view` is never used
[INFO] [stdout]   --> src/in_map.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl<'m, K: hash::Hash + cmp::Eq, V> MapBorrow<'m, K, V> {
[INFO] [stdout]    | -------------------------------------------------------- method in this implementation
[INFO] [stdout] 50 |     pub fn view(&self) -> &HashMap<K, V> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `peer_addr` is never read
[INFO] [stdout]   --> src/lined/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct Client {
[INFO] [stdout]    |        ------ field in this struct
[INFO] [stdout] 43 |     peer_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pbkdf2_simple` is never used
[INFO] [stdout]  --> src/pbkdf2.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn pbkdf2_simple(pass: &str) -> Result<String> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pbkdf2_check` is never used
[INFO] [stdout]   --> src/pbkdf2.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn pbkdf2_check(pass: &str, hash: &str) -> Result<bool> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 73 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 37.54s
[INFO] running `Command { std: "docker" "inspect" "275f5f54c89c9fb3b6e413a0ee7aaac07e00e48b7b42eae2e4282a7b8f509456", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "275f5f54c89c9fb3b6e413a0ee7aaac07e00e48b7b42eae2e4282a7b8f509456", kill_on_drop: false }`
[INFO] [stdout] 275f5f54c89c9fb3b6e413a0ee7aaac07e00e48b7b42eae2e4282a7b8f509456
[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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 156a0f0f2a06c48b168670c198faae46694b34732d8d46f505a2f40236e63b4a
[INFO] running `Command { std: "docker" "start" "-a" "156a0f0f2a06c48b168670c198faae46694b34732d8d46f505a2f40236e63b4a", kill_on_drop: false }`
[INFO] [stdout] warning: unused import: `read_message`
[INFO] [stdout]   --> src/bad/two.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::lined::{read_message, FromLined, MessageIn, MessageOut, ToLined, Uid};
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/bad/mod.rs:757:9
[INFO] [stdout]     |
[INFO] [stdout] 752 | /         loop {
[INFO] [stdout] 753 | |             let value = read_message(&mut buf, &mut read).await?;
[INFO] [stdout] 754 | |             from_lined_tx.send(value).await?;
[INFO] [stdout] 755 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 756 |
[INFO] [stdout] 757 |           Ok::<(), anyhow::Error>(())
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `system`
[INFO] [stdout]    --> src/bad/mod.rs:739:13
[INFO] [stdout]     |
[INFO] [stdout] 739 |     let mut system = System::new()?;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_system`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `deadline`
[INFO] [stdout]   --> src/bad/two.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let deadline = sleep(deadline - Instant::now());
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_deadline`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bad/two.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let mut resolve = tokio::spawn(async move { resolver.reverse_lookup(host.ip()).await });
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/bad/mod.rs:739:9
[INFO] [stdout]     |
[INFO] [stdout] 739 |     let mut system = System::new()?;
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bad/mod.rs:745:25
[INFO] [stdout]     |
[INFO] [stdout] 745 |     let (from_lined_tx, mut from_lined_rx) = tokio::sync::mpsc::channel::<FromLined>(128);
[INFO] [stdout]     |                         ----^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/bad/mod.rs:385:13
[INFO] [stdout]     |
[INFO] [stdout] 385 |             PreAuthOp::Done => vec![Output {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer_addr`
[INFO] [stdout]   --> src/lined/admin.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     peer_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INPUT_LENGTH_LIMIT` is never used
[INFO] [stdout]   --> src/bad/mod.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const INPUT_LENGTH_LIMIT: usize = 4_096;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `data` and `next` are never read
[INFO] [stdout]   --> src/bad/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | struct Users {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 48 |     data: HashMap<UserId, User>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 49 |     next: u64,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `store`, `clients`, `users`, and `resolver` are never read
[INFO] [stdout]   --> src/bad/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct System {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout] 53 |     store: Store,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 54 |     clients: Clients,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 55 |     users: Users,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 56 |
[INFO] [stdout] 57 |     resolver: TokioAsyncResolver,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `WaitingForPong` and `Complete` are never constructed
[INFO] [stdout]   --> src/bad/mod.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | enum PreAuthPing {
[INFO] [stdout]    |      ----------- variants in this enum
[INFO] [stdout] 62 |     WaitingForNick,
[INFO] [stdout] 63 |     WaitingForPong,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     Complete,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuthPing` 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: fields `account` and `pass` are never read
[INFO] [stdout]   --> src/bad/mod.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct Pass {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 70 |     account: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 71 |     pass: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Pass` 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: fields `nick`, `pass`, `gecos`, `sending_caps`, `ping`, and `ping_token` are never read
[INFO] [stdout]   --> src/bad/mod.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct PreAuth {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 76 |     nick: Option<Nick>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 77 |     pass: Option<Pass>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 78 |     gecos: Option<(String, String)>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 79 |     sending_caps: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 80 |     ping: PreAuthPing,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 81 |     ping_token: PingToken,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuth` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_client_preamble_done` is never used
[INFO] [stdout]   --> src/bad/mod.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | impl PreAuth {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] 85 |     fn is_client_preamble_done(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `PreAuth`, `Singleton`, and `MultiAware` are never constructed
[INFO] [stdout]    --> src/bad/mod.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 109 | enum Client {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] 110 |     PreAuth {
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     Singleton {
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     MultiAware {
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Client` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nick`, `host_mask`, and `channels` are never read
[INFO] [stdout]    --> src/bad/mod.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | struct User {
[INFO] [stdout]     |        ---- fields in this struct
[INFO] [stdout] 126 |     nick: Nick,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 127 |     host_mask: HostMask,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 128 |     channels: HashSet<ChannelId>,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `User` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Req` is never used
[INFO] [stdout]    --> src/bad/mod.rs:132:6
[INFO] [stdout]     |
[INFO] [stdout] 132 | enum Req {
[INFO] [stdout]     |      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FromTo` is never used
[INFO] [stdout]    --> src/bad/mod.rs:140:6
[INFO] [stdout]     |
[INFO] [stdout] 140 | enum FromTo {
[INFO] [stdout]     |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Output` is never constructed
[INFO] [stdout]    --> src/bad/mod.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | struct Output {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u` is never used
[INFO] [stdout]    --> src/bad/mod.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn u<S: ToString, I: IntoIterator<Item = S>>(
[INFO] [stdout]     |    ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `s2u` is never used
[INFO] [stdout]    --> src/bad/mod.rs:179:4
[INFO] [stdout]     |
[INFO] [stdout] 179 | fn s2u<S: ToString, I: IntoIterator<Item = S>>(to: UserId, cmd: &'static str, args: I) -> Output {
[INFO] [stdout]     |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]    --> src/bad/mod.rs:203:14
[INFO] [stdout]     |
[INFO] [stdout] 188 | impl System {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 203 |     async fn run(&mut self, mut inp: Receiver<FromLined>, out: Sender<ToLined>) -> Result<()> {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_user` is never used
[INFO] [stdout]    --> src/bad/mod.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn find_user(clients: &Clients, which: UserId) -> Uid {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_client` is never used
[INFO] [stdout]    --> src/bad/mod.rs:282:4
[INFO] [stdout]     |
[INFO] [stdout] 282 | fn work_client(
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_single_client` is never used
[INFO] [stdout]    --> src/bad/mod.rs:421:4
[INFO] [stdout]     |
[INFO] [stdout] 421 | fn work_single_client(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_req` is never used
[INFO] [stdout]    --> src/bad/mod.rs:479:4
[INFO] [stdout]     |
[INFO] [stdout] 479 | fn work_req(store: &mut Store, users: &mut Users, us: UserId, req: Req) -> Vec<Output> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lookup_user` is never used
[INFO] [stdout]    --> src/bad/mod.rs:507:4
[INFO] [stdout]     |
[INFO] [stdout] 507 | fn lookup_user(users: &Users, nick: &Nick) -> Option<UserId> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `message_channel` is never used
[INFO] [stdout]    --> src/bad/mod.rs:515:4
[INFO] [stdout]     |
[INFO] [stdout] 515 | fn message_channel(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `joined` is never used
[INFO] [stdout]    --> src/bad/mod.rs:542:4
[INFO] [stdout]     |
[INFO] [stdout] 542 | fn joined(store: &mut Store, users: &mut Users, us: UserId, chan: &ChannelName) -> Vec<Output> {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unpack_command` is never used
[INFO] [stdout]    --> src/bad/mod.rs:608:4
[INFO] [stdout]     |
[INFO] [stdout] 608 | fn unpack_command(command: Result<Command, &'static str>) -> Result<Vec<Req>, OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wrapped` is never used
[INFO] [stdout]    --> src/bad/mod.rs:660:4
[INFO] [stdout]     |
[INFO] [stdout] 660 | fn wrapped<'i, I: IntoIterator<Item = &'i str>>(it: I) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_on_boarding` is never used
[INFO] [stdout]    --> src/bad/mod.rs:690:4
[INFO] [stdout]     |
[INFO] [stdout] 690 | fn send_on_boarding(nick: &str) -> Vec<OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line_to_message` is never used
[INFO] [stdout]    --> src/bad/mod.rs:729:4
[INFO] [stdout]     |
[INFO] [stdout] 729 | fn line_to_message(token: Uid, line: &str) -> Result<Option<Message>, OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_such_nick` is never used
[INFO] [stdout]   --> src/bad/err.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn no_such_nick<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_such_channel` is never used
[INFO] [stdout]   --> src/bad/err.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn no_such_channel<I: Ident>(ident: I, _channel: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `invalid_cap_command` is never used
[INFO] [stdout]   --> src/bad/err.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn invalid_cap_command<I: Ident>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_error` is never used
[INFO] [stdout]   --> src/bad/err.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn file_error<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `erroneous_nickname` is never used
[INFO] [stdout]   --> src/bad/err.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn erroneous_nickname<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nickname_in_use` is never used
[INFO] [stdout]   --> src/bad/err.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn nickname_in_use<I: Ident>(ident: I, nick: &Nick, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `not_registered` is never used
[INFO] [stdout]   --> src/bad/err.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn not_registered<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `password_mismatch` is never used
[INFO] [stdout]   --> src/bad/err.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn password_mismatch<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `inner` is never read
[INFO] [stdout]   --> src/bad/ids.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct HostMask {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 56 |     inner: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HostMask` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Nick {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 60 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<Nick, &'static str> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | impl ChannelName {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 72 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<ChannelName, &'static str> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl HostMask {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn new(raw_user_name: &str, host: &str) -> HostMask {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_channel` is never used
[INFO] [stdout]    --> src/bad/ids.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn valid_channel(chan: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_account` is never used
[INFO] [stdout]    --> src/bad/ids.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn valid_account(account: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_nick` is never used
[INFO] [stdout]    --> src/bad/ids.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn valid_nick(nick: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_nick_char` is never used
[INFO] [stdout]    --> src/bad/ids.rs:144:4
[INFO] [stdout]     |
[INFO] [stdout] 144 | fn valid_nick_char(c: char) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PreAuthOp` is never used
[INFO] [stdout]   --> src/bad/pre.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum PreAuthOp {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuthOp` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_pre_auth` is never used
[INFO] [stdout]   --> src/bad/pre.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn work_pre_auth(message: &Message, state: &mut PreAuth) -> PreAuthOp {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_http_verb` is never used
[INFO] [stdout]    --> src/bad/pre.rs:118:4
[INFO] [stdout]     |
[INFO] [stdout] 118 | fn is_http_verb(word: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, and `2` are never read
[INFO] [stdout]   --> src/bad/proto.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Join(&'s str, Option<&'s str>, Option<&'s str>),
[INFO] [stdout]    |     ---- ^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Join((), (), ()),
[INFO] [stdout]    |          ~~  ~~  ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/bad/proto.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Privmsg(&'s str, &'s str),
[INFO] [stdout]    |     ------- ^^^^^^^  ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Privmsg((), ()),
[INFO] [stdout]    |             ~~  ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Quit(Option<&'s str>),
[INFO] [stdout]    |     ---- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Quit(()),
[INFO] [stdout]    |          ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 |     CapLs(Option<&'s str>),
[INFO] [stdout]    |     ----- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 25 |     CapLs(()),
[INFO] [stdout]    |           ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Other(&'s str),
[INFO] [stdout]    |     ----- ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Other(()),
[INFO] [stdout]    |           ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `tags_str`, `source_str`, and `source_nick` are never used
[INFO] [stdout]    --> src/bad/proto.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl ParsedMessage {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] 135 |     fn tags_str(&self) -> Option<&str> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn source_str(&self) -> Option<&str> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn source_nick(&self) -> Result<Option<Nick>, &'static str> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `conn` is never read
[INFO] [stdout]   --> src/bad/store.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Store {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 16 |     conn: Connection,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `account` and `load_channel` are never used
[INFO] [stdout]   --> src/bad/store.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Store {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn account(&mut self, pass: &Pass) -> Option<i64> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn load_channel(&mut self, name: &ChannelName) -> ChannelId {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_id` is never used
[INFO] [stdout]   --> src/bad/store.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn load_id<P>(tx: &Transaction, query: &'static str, params: P) -> Option<i64>
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_account` is never used
[INFO] [stdout]   --> src/bad/store.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn create_account(tx: Transaction, pass: &Pass) -> i64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_channel` is never used
[INFO] [stdout]    --> src/bad/store.rs:112:4
[INFO] [stdout]     |
[INFO] [stdout] 112 | fn create_channel(tx: Transaction, name: &ChannelName) -> i64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_pass` is never used
[INFO] [stdout]    --> src/bad/store.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn check_pass(pass: &str, hashed: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unix_time` is never used
[INFO] [stdout]    --> src/bad/store.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn unix_time() -> i64 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `SystemError` is never used
[INFO] [stdout]    --> src/bad/store.rs:150:7
[INFO] [stdout]     |
[INFO] [stdout] 150 | trait SystemError<T, E> {
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `lazy_view_or_insert_with` is never used
[INFO] [stdout]  --> src/in_map.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub trait LazyView<K: Copy + hash::Hash + cmp::Eq, V> {
[INFO] [stdout]   |           -------- method in this trait
[INFO] [stdout] 6 |     fn lazy_view(&mut self, key: K) -> Option<MapBorrow<K, V>>;
[INFO] [stdout] 7 |     fn lazy_view_or_insert_with<F>(&mut self, key: K, default: F) -> MapBorrow<K, V>
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `view` is never used
[INFO] [stdout]   --> src/in_map.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl<'m, K: hash::Hash + cmp::Eq, V> MapBorrow<'m, K, V> {
[INFO] [stdout]    | -------------------------------------------------------- method in this implementation
[INFO] [stdout] 50 |     pub fn view(&self) -> &HashMap<K, V> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `peer_addr` is never read
[INFO] [stdout]   --> src/lined/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct Client {
[INFO] [stdout]    |        ------ field in this struct
[INFO] [stdout] 43 |     peer_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pbkdf2_simple` is never used
[INFO] [stdout]  --> src/pbkdf2.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn pbkdf2_simple(pass: &str) -> Result<String> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling badchat v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: function `pbkdf2_check` is never used
[INFO] [stdout]   --> src/pbkdf2.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn pbkdf2_check(pass: &str, hash: &str) -> Result<bool> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 73 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `read_message`
[INFO] [stdout]   --> src/bad/two.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::lined::{read_message, FromLined, MessageIn, MessageOut, ToLined, Uid};
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/bad/mod.rs:757:9
[INFO] [stdout]     |
[INFO] [stdout] 752 | /         loop {
[INFO] [stdout] 753 | |             let value = read_message(&mut buf, &mut read).await?;
[INFO] [stdout] 754 | |             from_lined_tx.send(value).await?;
[INFO] [stdout] 755 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 756 |
[INFO] [stdout] 757 |           Ok::<(), anyhow::Error>(())
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `system`
[INFO] [stdout]    --> src/bad/mod.rs:739:13
[INFO] [stdout]     |
[INFO] [stdout] 739 |     let mut system = System::new()?;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_system`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `deadline`
[INFO] [stdout]   --> src/bad/two.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let deadline = sleep(deadline - Instant::now());
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_deadline`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bad/two.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let mut resolve = tokio::spawn(async move { resolver.reverse_lookup(host.ip()).await });
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/bad/mod.rs:739:9
[INFO] [stdout]     |
[INFO] [stdout] 739 |     let mut system = System::new()?;
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bad/mod.rs:745:25
[INFO] [stdout]     |
[INFO] [stdout] 745 |     let (from_lined_tx, mut from_lined_rx) = tokio::sync::mpsc::channel::<FromLined>(128);
[INFO] [stdout]     |                         ----^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/bad/mod.rs:385:13
[INFO] [stdout]     |
[INFO] [stdout] 385 |             PreAuthOp::Done => vec![Output {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer_addr`
[INFO] [stdout]   --> src/lined/admin.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     peer_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INPUT_LENGTH_LIMIT` is never used
[INFO] [stdout]   --> src/bad/mod.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const INPUT_LENGTH_LIMIT: usize = 4_096;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `data` and `next` are never read
[INFO] [stdout]   --> src/bad/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | struct Users {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 48 |     data: HashMap<UserId, User>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 49 |     next: u64,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `store`, `clients`, `users`, and `resolver` are never read
[INFO] [stdout]   --> src/bad/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct System {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout] 53 |     store: Store,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 54 |     clients: Clients,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 55 |     users: Users,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 56 |
[INFO] [stdout] 57 |     resolver: TokioAsyncResolver,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `WaitingForPong` and `Complete` are never constructed
[INFO] [stdout]   --> src/bad/mod.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | enum PreAuthPing {
[INFO] [stdout]    |      ----------- variants in this enum
[INFO] [stdout] 62 |     WaitingForNick,
[INFO] [stdout] 63 |     WaitingForPong,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     Complete,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuthPing` 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: fields `account` and `pass` are never read
[INFO] [stdout]   --> src/bad/mod.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct Pass {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 70 |     account: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 71 |     pass: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Pass` 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: fields `nick`, `pass`, `gecos`, `sending_caps`, `ping`, and `ping_token` are never read
[INFO] [stdout]   --> src/bad/mod.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct PreAuth {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 76 |     nick: Option<Nick>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 77 |     pass: Option<Pass>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 78 |     gecos: Option<(String, String)>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 79 |     sending_caps: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 80 |     ping: PreAuthPing,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 81 |     ping_token: PingToken,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuth` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_client_preamble_done` is never used
[INFO] [stdout]   --> src/bad/mod.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | impl PreAuth {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] 85 |     fn is_client_preamble_done(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `PreAuth`, `Singleton`, and `MultiAware` are never constructed
[INFO] [stdout]    --> src/bad/mod.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 109 | enum Client {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] 110 |     PreAuth {
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     Singleton {
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     MultiAware {
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Client` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nick`, `host_mask`, and `channels` are never read
[INFO] [stdout]    --> src/bad/mod.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | struct User {
[INFO] [stdout]     |        ---- fields in this struct
[INFO] [stdout] 126 |     nick: Nick,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 127 |     host_mask: HostMask,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 128 |     channels: HashSet<ChannelId>,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `User` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Req` is never used
[INFO] [stdout]    --> src/bad/mod.rs:132:6
[INFO] [stdout]     |
[INFO] [stdout] 132 | enum Req {
[INFO] [stdout]     |      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FromTo` is never used
[INFO] [stdout]    --> src/bad/mod.rs:140:6
[INFO] [stdout]     |
[INFO] [stdout] 140 | enum FromTo {
[INFO] [stdout]     |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Output` is never constructed
[INFO] [stdout]    --> src/bad/mod.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | struct Output {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u` is never used
[INFO] [stdout]    --> src/bad/mod.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn u<S: ToString, I: IntoIterator<Item = S>>(
[INFO] [stdout]     |    ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `s2u` is never used
[INFO] [stdout]    --> src/bad/mod.rs:179:4
[INFO] [stdout]     |
[INFO] [stdout] 179 | fn s2u<S: ToString, I: IntoIterator<Item = S>>(to: UserId, cmd: &'static str, args: I) -> Output {
[INFO] [stdout]     |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]    --> src/bad/mod.rs:203:14
[INFO] [stdout]     |
[INFO] [stdout] 188 | impl System {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 203 |     async fn run(&mut self, mut inp: Receiver<FromLined>, out: Sender<ToLined>) -> Result<()> {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_user` is never used
[INFO] [stdout]    --> src/bad/mod.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn find_user(clients: &Clients, which: UserId) -> Uid {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_client` is never used
[INFO] [stdout]    --> src/bad/mod.rs:282:4
[INFO] [stdout]     |
[INFO] [stdout] 282 | fn work_client(
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_single_client` is never used
[INFO] [stdout]    --> src/bad/mod.rs:421:4
[INFO] [stdout]     |
[INFO] [stdout] 421 | fn work_single_client(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_req` is never used
[INFO] [stdout]    --> src/bad/mod.rs:479:4
[INFO] [stdout]     |
[INFO] [stdout] 479 | fn work_req(store: &mut Store, users: &mut Users, us: UserId, req: Req) -> Vec<Output> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lookup_user` is never used
[INFO] [stdout]    --> src/bad/mod.rs:507:4
[INFO] [stdout]     |
[INFO] [stdout] 507 | fn lookup_user(users: &Users, nick: &Nick) -> Option<UserId> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `message_channel` is never used
[INFO] [stdout]    --> src/bad/mod.rs:515:4
[INFO] [stdout]     |
[INFO] [stdout] 515 | fn message_channel(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `joined` is never used
[INFO] [stdout]    --> src/bad/mod.rs:542:4
[INFO] [stdout]     |
[INFO] [stdout] 542 | fn joined(store: &mut Store, users: &mut Users, us: UserId, chan: &ChannelName) -> Vec<Output> {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unpack_command` is never used
[INFO] [stdout]    --> src/bad/mod.rs:608:4
[INFO] [stdout]     |
[INFO] [stdout] 608 | fn unpack_command(command: Result<Command, &'static str>) -> Result<Vec<Req>, OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wrapped` is never used
[INFO] [stdout]    --> src/bad/mod.rs:660:4
[INFO] [stdout]     |
[INFO] [stdout] 660 | fn wrapped<'i, I: IntoIterator<Item = &'i str>>(it: I) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_on_boarding` is never used
[INFO] [stdout]    --> src/bad/mod.rs:690:4
[INFO] [stdout]     |
[INFO] [stdout] 690 | fn send_on_boarding(nick: &str) -> Vec<OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line_to_message` is never used
[INFO] [stdout]    --> src/bad/mod.rs:729:4
[INFO] [stdout]     |
[INFO] [stdout] 729 | fn line_to_message(token: Uid, line: &str) -> Result<Option<Message>, OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_such_nick` is never used
[INFO] [stdout]   --> src/bad/err.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn no_such_nick<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_such_channel` is never used
[INFO] [stdout]   --> src/bad/err.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn no_such_channel<I: Ident>(ident: I, _channel: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `invalid_cap_command` is never used
[INFO] [stdout]   --> src/bad/err.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn invalid_cap_command<I: Ident>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_error` is never used
[INFO] [stdout]   --> src/bad/err.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn file_error<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `erroneous_nickname` is never used
[INFO] [stdout]   --> src/bad/err.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn erroneous_nickname<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nickname_in_use` is never used
[INFO] [stdout]   --> src/bad/err.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn nickname_in_use<I: Ident>(ident: I, nick: &Nick, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `not_registered` is never used
[INFO] [stdout]   --> src/bad/err.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn not_registered<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `password_mismatch` is never used
[INFO] [stdout]   --> src/bad/err.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn password_mismatch<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `inner` is never read
[INFO] [stdout]   --> src/bad/ids.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct HostMask {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 56 |     inner: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HostMask` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Nick {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 60 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<Nick, &'static str> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | impl ChannelName {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 72 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<ChannelName, &'static str> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl HostMask {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn new(raw_user_name: &str, host: &str) -> HostMask {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_channel` is never used
[INFO] [stdout]    --> src/bad/ids.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn valid_channel(chan: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_account` is never used
[INFO] [stdout]    --> src/bad/ids.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn valid_account(account: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_nick` is never used
[INFO] [stdout]    --> src/bad/ids.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn valid_nick(nick: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_nick_char` is never used
[INFO] [stdout]    --> src/bad/ids.rs:144:4
[INFO] [stdout]     |
[INFO] [stdout] 144 | fn valid_nick_char(c: char) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PreAuthOp` is never used
[INFO] [stdout]   --> src/bad/pre.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum PreAuthOp {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuthOp` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_pre_auth` is never used
[INFO] [stdout]   --> src/bad/pre.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn work_pre_auth(message: &Message, state: &mut PreAuth) -> PreAuthOp {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_http_verb` is never used
[INFO] [stdout]    --> src/bad/pre.rs:118:4
[INFO] [stdout]     |
[INFO] [stdout] 118 | fn is_http_verb(word: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, and `2` are never read
[INFO] [stdout]   --> src/bad/proto.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Join(&'s str, Option<&'s str>, Option<&'s str>),
[INFO] [stdout]    |     ---- ^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Join((), (), ()),
[INFO] [stdout]    |          ~~  ~~  ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/bad/proto.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Privmsg(&'s str, &'s str),
[INFO] [stdout]    |     ------- ^^^^^^^  ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Privmsg((), ()),
[INFO] [stdout]    |             ~~  ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Quit(Option<&'s str>),
[INFO] [stdout]    |     ---- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Quit(()),
[INFO] [stdout]    |          ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 |     CapLs(Option<&'s str>),
[INFO] [stdout]    |     ----- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 25 |     CapLs(()),
[INFO] [stdout]    |           ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Other(&'s str),
[INFO] [stdout]    |     ----- ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Other(()),
[INFO] [stdout]    |           ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `source_nick` is never used
[INFO] [stdout]    --> src/bad/proto.rs:186:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl ParsedMessage {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn source_nick(&self) -> Result<Option<Nick>, &'static str> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `conn` is never read
[INFO] [stdout]   --> src/bad/store.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Store {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 16 |     conn: Connection,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `account` and `load_channel` are never used
[INFO] [stdout]   --> src/bad/store.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Store {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn account(&mut self, pass: &Pass) -> Option<i64> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn load_channel(&mut self, name: &ChannelName) -> ChannelId {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_id` is never used
[INFO] [stdout]   --> src/bad/store.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn load_id<P>(tx: &Transaction, query: &'static str, params: P) -> Option<i64>
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_account` is never used
[INFO] [stdout]   --> src/bad/store.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn create_account(tx: Transaction, pass: &Pass) -> i64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_channel` is never used
[INFO] [stdout]    --> src/bad/store.rs:112:4
[INFO] [stdout]     |
[INFO] [stdout] 112 | fn create_channel(tx: Transaction, name: &ChannelName) -> i64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_pass` is never used
[INFO] [stdout]    --> src/bad/store.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn check_pass(pass: &str, hashed: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unix_time` is never used
[INFO] [stdout]    --> src/bad/store.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn unix_time() -> i64 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `SystemError` is never used
[INFO] [stdout]    --> src/bad/store.rs:150:7
[INFO] [stdout]     |
[INFO] [stdout] 150 | trait SystemError<T, E> {
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `lazy_view_or_insert_with` is never used
[INFO] [stdout]  --> src/in_map.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub trait LazyView<K: Copy + hash::Hash + cmp::Eq, V> {
[INFO] [stdout]   |           -------- method in this trait
[INFO] [stdout] 6 |     fn lazy_view(&mut self, key: K) -> Option<MapBorrow<K, V>>;
[INFO] [stdout] 7 |     fn lazy_view_or_insert_with<F>(&mut self, key: K, default: F) -> MapBorrow<K, V>
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `view` is never used
[INFO] [stdout]   --> src/in_map.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl<'m, K: hash::Hash + cmp::Eq, V> MapBorrow<'m, K, V> {
[INFO] [stdout]    | -------------------------------------------------------- method in this implementation
[INFO] [stdout] 50 |     pub fn view(&self) -> &HashMap<K, V> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `peer_addr` is never read
[INFO] [stdout]   --> src/lined/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct Client {
[INFO] [stdout]    |        ------ field in this struct
[INFO] [stdout] 43 |     peer_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 71 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 3.77s
[INFO] running `Command { std: "docker" "inspect" "156a0f0f2a06c48b168670c198faae46694b34732d8d46f505a2f40236e63b4a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "156a0f0f2a06c48b168670c198faae46694b34732d8d46f505a2f40236e63b4a", kill_on_drop: false }`
[INFO] [stdout] 156a0f0f2a06c48b168670c198faae46694b34732d8d46f505a2f40236e63b4a
[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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 072486ab57507131024b75e2aee91f6035b492231c8585862faba7d689800fe7
[INFO] running `Command { std: "docker" "start" "-a" "072486ab57507131024b75e2aee91f6035b492231c8585862faba7d689800fe7", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `read_message`
[INFO] [stderr]   --> src/bad/two.rs:14:20
[INFO] [stderr]    |
[INFO] [stderr] 14 | use crate::lined::{read_message, FromLined, MessageIn, MessageOut, ToLined, Uid};
[INFO] [stderr]    |                    ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable expression
[INFO] [stderr]    --> src/bad/mod.rs:757:9
[INFO] [stderr]     |
[INFO] [stderr] 752 | /         loop {
[INFO] [stderr] 753 | |             let value = read_message(&mut buf, &mut read).await?;
[INFO] [stderr] 754 | |             from_lined_tx.send(value).await?;
[INFO] [stderr] 755 | |         }
[INFO] [stderr]     | |_________- any code following this expression is unreachable
[INFO] [stderr] 756 |
[INFO] [stderr] 757 |           Ok::<(), anyhow::Error>(())
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `system`
[INFO] [stderr]    --> src/bad/mod.rs:739:13
[INFO] [stderr]     |
[INFO] [stderr] 739 |     let mut system = System::new()?;
[INFO] [stderr]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_system`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `deadline`
[INFO] [stderr]   --> src/bad/two.rs:82:9
[INFO] [stderr]    |
[INFO] [stderr] 82 |     let deadline = sleep(deadline - Instant::now());
[INFO] [stderr]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_deadline`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/bad/two.rs:79:9
[INFO] [stderr]    |
[INFO] [stderr] 79 |     let mut resolve = tokio::spawn(async move { resolver.reverse_lookup(host.ip()).await });
[INFO] [stderr]    |         ----^^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/bad/mod.rs:739:9
[INFO] [stderr]     |
[INFO] [stderr] 739 |     let mut system = System::new()?;
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/bad/mod.rs:745:25
[INFO] [stderr]     |
[INFO] [stderr] 745 |     let (from_lined_tx, mut from_lined_rx) = tokio::sync::mpsc::channel::<FromLined>(128);
[INFO] [stderr]     |                         ----^^^^^^^^^^^^^
[INFO] [stderr]     |                         |
[INFO] [stderr]     |                         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/bad/mod.rs:385:13
[INFO] [stderr]     |
[INFO] [stderr] 385 |             PreAuthOp::Done => vec![Output {
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `peer_addr`
[INFO] [stderr]   --> src/lined/admin.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr] 14 |     peer_addr: SocketAddr,
[INFO] [stderr]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_addr`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `INPUT_LENGTH_LIMIT` is never used
[INFO] [stderr]   --> src/bad/mod.rs:34:7
[INFO] [stderr]    |
[INFO] [stderr] 34 | const INPUT_LENGTH_LIMIT: usize = 4_096;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `data` and `next` are never read
[INFO] [stderr]   --> src/bad/mod.rs:48:5
[INFO] [stderr]    |
[INFO] [stderr] 47 | struct Users {
[INFO] [stderr]    |        ----- fields in this struct
[INFO] [stderr] 48 |     data: HashMap<UserId, User>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 49 |     next: u64,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `store`, `clients`, `users`, and `resolver` are never read
[INFO] [stderr]   --> src/bad/mod.rs:53:5
[INFO] [stderr]    |
[INFO] [stderr] 52 | struct System {
[INFO] [stderr]    |        ------ fields in this struct
[INFO] [stderr] 53 |     store: Store,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 54 |     clients: Clients,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 55 |     users: Users,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 56 |
[INFO] [stderr] 57 |     resolver: TokioAsyncResolver,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `WaitingForPong` and `Complete` are never constructed
[INFO] [stderr]   --> src/bad/mod.rs:63:5
[INFO] [stderr]    |
[INFO] [stderr] 61 | enum PreAuthPing {
[INFO] [stderr]    |      ----------- variants in this enum
[INFO] [stderr] 62 |     WaitingForNick,
[INFO] [stderr] 63 |     WaitingForPong,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 64 |     Complete,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PreAuthPing` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `account` and `pass` are never read
[INFO] [stderr]   --> src/bad/mod.rs:70:5
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub struct Pass {
[INFO] [stderr]    |            ---- fields in this struct
[INFO] [stderr] 70 |     account: String,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 71 |     pass: String,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Pass` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `nick`, `pass`, `gecos`, `sending_caps`, `ping`, and `ping_token` are never read
[INFO] [stderr]   --> src/bad/mod.rs:76:5
[INFO] [stderr]    |
[INFO] [stderr] 75 | pub struct PreAuth {
[INFO] [stderr]    |            ------- fields in this struct
[INFO] [stderr] 76 |     nick: Option<Nick>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 77 |     pass: Option<Pass>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 78 |     gecos: Option<(String, String)>,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 79 |     sending_caps: bool,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 80 |     ping: PreAuthPing,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 81 |     ping_token: PingToken,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PreAuth` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_client_preamble_done` is never used
[INFO] [stderr]   --> src/bad/mod.rs:85:8
[INFO] [stderr]    |
[INFO] [stderr] 84 | impl PreAuth {
[INFO] [stderr]    | ------------ method in this implementation
[INFO] [stderr] 85 |     fn is_client_preamble_done(&self) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `PreAuth`, `Singleton`, and `MultiAware` are never constructed
[INFO] [stderr]    --> src/bad/mod.rs:110:5
[INFO] [stderr]     |
[INFO] [stderr] 109 | enum Client {
[INFO] [stderr]     |      ------ variants in this enum
[INFO] [stderr] 110 |     PreAuth {
[INFO] [stderr]     |     ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 114 |     Singleton {
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 118 |     MultiAware {
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `Client` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `nick`, `host_mask`, and `channels` are never read
[INFO] [stderr]    --> src/bad/mod.rs:126:5
[INFO] [stderr]     |
[INFO] [stderr] 125 | struct User {
[INFO] [stderr]     |        ---- fields in this struct
[INFO] [stderr] 126 |     nick: Nick,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 127 |     host_mask: HostMask,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 128 |     channels: HashSet<ChannelId>,
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `User` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Req` is never used
[INFO] [stderr]    --> src/bad/mod.rs:132:6
[INFO] [stderr]     |
[INFO] [stderr] 132 | enum Req {
[INFO] [stderr]     |      ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `FromTo` is never used
[INFO] [stderr]    --> src/bad/mod.rs:140:6
[INFO] [stderr]     |
[INFO] [stderr] 140 | enum FromTo {
[INFO] [stderr]     |      ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Output` is never constructed
[INFO] [stderr]    --> src/bad/mod.rs:154:8
[INFO] [stderr]     |
[INFO] [stderr] 154 | struct Output {
[INFO] [stderr]     |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `u` is never used
[INFO] [stderr]    --> src/bad/mod.rs:164:4
[INFO] [stderr]     |
[INFO] [stderr] 164 | fn u<S: ToString, I: IntoIterator<Item = S>>(
[INFO] [stderr]     |    ^
[INFO] [stderr] 
[INFO] [stderr] warning: function `s2u` is never used
[INFO] [stderr]    --> src/bad/mod.rs:179:4
[INFO] [stderr]     |
[INFO] [stderr] 179 | fn s2u<S: ToString, I: IntoIterator<Item = S>>(to: UserId, cmd: &'static str, args: I) -> Output {
[INFO] [stderr]     |    ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `run` is never used
[INFO] [stderr]    --> src/bad/mod.rs:203:14
[INFO] [stderr]     |
[INFO] [stderr] 188 | impl System {
[INFO] [stderr]     | ----------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 203 |     async fn run(&mut self, mut inp: Receiver<FromLined>, out: Sender<ToLined>) -> Result<()> {
[INFO] [stderr]     |              ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `find_user` is never used
[INFO] [stderr]    --> src/bad/mod.rs:230:4
[INFO] [stderr]     |
[INFO] [stderr] 230 | fn find_user(clients: &Clients, which: UserId) -> Uid {
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `work_client` is never used
[INFO] [stderr]    --> src/bad/mod.rs:282:4
[INFO] [stderr]     |
[INFO] [stderr] 282 | fn work_client(
[INFO] [stderr]     |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `work_single_client` is never used
[INFO] [stderr]    --> src/bad/mod.rs:421:4
[INFO] [stderr]     |
[INFO] [stderr] 421 | fn work_single_client(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `work_req` is never used
[INFO] [stderr]    --> src/bad/mod.rs:479:4
[INFO] [stderr]     |
[INFO] [stderr] 479 | fn work_req(store: &mut Store, users: &mut Users, us: UserId, req: Req) -> Vec<Output> {
[INFO] [stderr]     |    ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `lookup_user` is never used
[INFO] [stderr]    --> src/bad/mod.rs:507:4
[INFO] [stderr]     |
[INFO] [stderr] 507 | fn lookup_user(users: &Users, nick: &Nick) -> Option<UserId> {
[INFO] [stderr]     |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `message_channel` is never used
[INFO] [stderr]    --> src/bad/mod.rs:515:4
[INFO] [stderr]     |
[INFO] [stderr] 515 | fn message_channel(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `joined` is never used
[INFO] [stderr]    --> src/bad/mod.rs:542:4
[INFO] [stderr]     |
[INFO] [stderr] 542 | fn joined(store: &mut Store, users: &mut Users, us: UserId, chan: &ChannelName) -> Vec<Output> {
[INFO] [stderr]     |    ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `unpack_command` is never used
[INFO] [stderr]    --> src/bad/mod.rs:608:4
[INFO] [stderr]     |
[INFO] [stderr] 608 | fn unpack_command(command: Result<Command, &'static str>) -> Result<Vec<Req>, OutCommand> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `wrapped` is never used
[INFO] [stderr]    --> src/bad/mod.rs:660:4
[INFO] [stderr]     |
[INFO] [stderr] 660 | fn wrapped<'i, I: IntoIterator<Item = &'i str>>(it: I) -> Vec<String> {
[INFO] [stderr]     |    ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_on_boarding` is never used
[INFO] [stderr]    --> src/bad/mod.rs:690:4
[INFO] [stderr]     |
[INFO] [stderr] 690 | fn send_on_boarding(nick: &str) -> Vec<OutCommand> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `line_to_message` is never used
[INFO] [stderr]    --> src/bad/mod.rs:729:4
[INFO] [stderr]     |
[INFO] [stderr] 729 | fn line_to_message(token: Uid, line: &str) -> Result<Option<Message>, OutCommand> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `no_such_nick` is never used
[INFO] [stderr]   --> src/bad/err.rs:16:8
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub fn no_such_nick<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `no_such_channel` is never used
[INFO] [stderr]   --> src/bad/err.rs:22:8
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub fn no_such_channel<I: Ident>(ident: I, _channel: String, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `invalid_cap_command` is never used
[INFO] [stderr]   --> src/bad/err.rs:28:8
[INFO] [stderr]    |
[INFO] [stderr] 28 | pub fn invalid_cap_command<I: Ident>(
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `file_error` is never used
[INFO] [stderr]   --> src/bad/err.rs:50:8
[INFO] [stderr]    |
[INFO] [stderr] 50 | pub fn file_error<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `erroneous_nickname` is never used
[INFO] [stderr]   --> src/bad/err.rs:56:8
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub fn erroneous_nickname<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `nickname_in_use` is never used
[INFO] [stderr]   --> src/bad/err.rs:62:8
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub fn nickname_in_use<I: Ident>(ident: I, nick: &Nick, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `not_registered` is never used
[INFO] [stderr]   --> src/bad/err.rs:68:8
[INFO] [stderr]    |
[INFO] [stderr] 68 | pub fn not_registered<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `password_mismatch` is never used
[INFO] [stderr]   --> src/bad/err.rs:74:8
[INFO] [stderr]    |
[INFO] [stderr] 74 | pub fn password_mismatch<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `inner` is never read
[INFO] [stderr]   --> src/bad/ids.rs:56:5
[INFO] [stderr]    |
[INFO] [stderr] 55 | pub struct HostMask {
[INFO] [stderr]    |            -------- field in this struct
[INFO] [stderr] 56 |     inner: String,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `HostMask` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/bad/ids.rs:60:12
[INFO] [stderr]    |
[INFO] [stderr] 59 | impl Nick {
[INFO] [stderr]    | --------- associated function in this implementation
[INFO] [stderr] 60 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<Nick, &'static str> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/bad/ids.rs:72:12
[INFO] [stderr]    |
[INFO] [stderr] 71 | impl ChannelName {
[INFO] [stderr]    | ---------------- associated function in this implementation
[INFO] [stderr] 72 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<ChannelName, &'static str> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/bad/ids.rs:84:12
[INFO] [stderr]    |
[INFO] [stderr] 83 | impl HostMask {
[INFO] [stderr]    | ------------- associated function in this implementation
[INFO] [stderr] 84 |     pub fn new(raw_user_name: &str, host: &str) -> HostMask {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `valid_channel` is never used
[INFO] [stderr]    --> src/bad/ids.rs:116:4
[INFO] [stderr]     |
[INFO] [stderr] 116 | fn valid_channel(chan: &str) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `valid_account` is never used
[INFO] [stderr]    --> src/bad/ids.rs:124:8
[INFO] [stderr]     |
[INFO] [stderr] 124 | pub fn valid_account(account: &str) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `valid_nick` is never used
[INFO] [stderr]    --> src/bad/ids.rs:128:4
[INFO] [stderr]     |
[INFO] [stderr] 128 | fn valid_nick(nick: &str) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `valid_nick_char` is never used
[INFO] [stderr]    --> src/bad/ids.rs:144:4
[INFO] [stderr]     |
[INFO] [stderr] 144 | fn valid_nick_char(c: char) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `PreAuthOp` is never used
[INFO] [stderr]   --> src/bad/pre.rs:13:10
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub enum PreAuthOp {
[INFO] [stderr]    |          ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PreAuthOp` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `work_pre_auth` is never used
[INFO] [stderr]   --> src/bad/pre.rs:21:8
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub fn work_pre_auth(message: &Message, state: &mut PreAuth) -> PreAuthOp {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_http_verb` is never used
[INFO] [stderr]    --> src/bad/pre.rs:118:4
[INFO] [stderr]     |
[INFO] [stderr] 118 | fn is_http_verb(word: &str) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `0`, `1`, and `2` are never read
[INFO] [stderr]   --> src/bad/proto.rs:17:10
[INFO] [stderr]    |
[INFO] [stderr] 17 |     Join(&'s str, Option<&'s str>, Option<&'s str>),
[INFO] [stderr]    |     ---- ^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     fields in this variant
[INFO] [stderr]    |
[INFO] [stderr] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stderr]    |
[INFO] [stderr] 17 |     Join((), (), ()),
[INFO] [stderr]    |          ~~  ~~  ~~
[INFO] [stderr] 
[INFO] [stderr] warning: fields `0` and `1` are never read
[INFO] [stderr]   --> src/bad/proto.rs:20:13
[INFO] [stderr]    |
[INFO] [stderr] 20 |     Privmsg(&'s str, &'s str),
[INFO] [stderr]    |     ------- ^^^^^^^  ^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     fields in this variant
[INFO] [stderr]    |
[INFO] [stderr] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stderr]    |
[INFO] [stderr] 20 |     Privmsg((), ()),
[INFO] [stderr]    |             ~~  ~~
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/bad/proto.rs:22:10
[INFO] [stderr]    |
[INFO] [stderr] 22 |     Quit(Option<&'s str>),
[INFO] [stderr]    |     ---- ^^^^^^^^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 22 |     Quit(()),
[INFO] [stderr]    |          ~~
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/bad/proto.rs:25:11
[INFO] [stderr]    |
[INFO] [stderr] 25 |     CapLs(Option<&'s str>),
[INFO] [stderr]    |     ----- ^^^^^^^^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 25 |     CapLs(()),
[INFO] [stderr]    |           ~~
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/bad/proto.rs:30:11
[INFO] [stderr]    |
[INFO] [stderr] 30 |     Other(&'s str),
[INFO] [stderr]    |     ----- ^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 30 |     Other(()),
[INFO] [stderr]    |           ~~
[INFO] [stderr] 
[INFO] [stderr] warning: methods `tags_str`, `source_str`, and `source_nick` are never used
[INFO] [stderr]    --> src/bad/proto.rs:135:8
[INFO] [stderr]     |
[INFO] [stderr] 134 | impl ParsedMessage {
[INFO] [stderr]     | ------------------ methods in this implementation
[INFO] [stderr] 135 |     fn tags_str(&self) -> Option<&str> {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 139 |     fn source_str(&self) -> Option<&str> {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 186 |     pub fn source_nick(&self) -> Result<Option<Nick>, &'static str> {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `conn` is never read
[INFO] [stderr]   --> src/bad/store.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub struct Store {
[INFO] [stderr]    |            ----- field in this struct
[INFO] [stderr] 16 |     conn: Connection,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `account` and `load_channel` are never used
[INFO] [stderr]   --> src/bad/store.rs:26:12
[INFO] [stderr]    |
[INFO] [stderr] 19 | impl Store {
[INFO] [stderr]    | ---------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 26 |     pub fn account(&mut self, pass: &Pass) -> Option<i64> {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 57 |     pub fn load_channel(&mut self, name: &ChannelName) -> ChannelId {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `load_id` is never used
[INFO] [stderr]   --> src/bad/store.rs:68:4
[INFO] [stderr]    |
[INFO] [stderr] 68 | fn load_id<P>(tx: &Transaction, query: &'static str, params: P) -> Option<i64>
[INFO] [stderr]    |    ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_account` is never used
[INFO] [stderr]   --> src/bad/store.rs:85:4
[INFO] [stderr]    |
[INFO] [stderr] 85 | fn create_account(tx: Transaction, pass: &Pass) -> i64 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_channel` is never used
[INFO] [stderr]    --> src/bad/store.rs:112:4
[INFO] [stderr]     |
[INFO] [stderr] 112 | fn create_channel(tx: Transaction, name: &ChannelName) -> i64 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `check_pass` is never used
[INFO] [stderr]    --> src/bad/store.rs:130:4
[INFO] [stderr]     |
[INFO] [stderr] 130 | fn check_pass(pass: &str, hashed: &str) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `unix_time` is never used
[INFO] [stderr]    --> src/bad/store.rs:140:4
[INFO] [stderr]     |
[INFO] [stderr] 140 | fn unix_time() -> i64 {
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `SystemError` is never used
[INFO] [stderr]    --> src/bad/store.rs:150:7
[INFO] [stderr]     |
[INFO] [stderr] 150 | trait SystemError<T, E> {
[INFO] [stderr]     |       ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `lazy_view_or_insert_with` is never used
[INFO] [stderr]  --> src/in_map.rs:7:8
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub trait LazyView<K: Copy + hash::Hash + cmp::Eq, V> {
[INFO] [stderr]   |           -------- method in this trait
[INFO] [stderr] 6 |     fn lazy_view(&mut self, key: K) -> Option<MapBorrow<K, V>>;
[INFO] [stderr] 7 |     fn lazy_view_or_insert_with<F>(&mut self, key: K, default: F) -> MapBorrow<K, V>
[INFO] [stderr]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `view` is never used
[INFO] [stderr]   --> src/in_map.rs:50:12
[INFO] [stderr]    |
[INFO] [stderr] 49 | impl<'m, K: hash::Hash + cmp::Eq, V> MapBorrow<'m, K, V> {
[INFO] [stderr]    | -------------------------------------------------------- method in this implementation
[INFO] [stderr] 50 |     pub fn view(&self) -> &HashMap<K, V> {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `peer_addr` is never read
[INFO] [stderr]   --> src/lined/mod.rs:43:5
[INFO] [stderr]    |
[INFO] [stderr] 42 | struct Client {
[INFO] [stderr]    |        ------ field in this struct
[INFO] [stderr] 43 |     peer_addr: SocketAddr,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `pbkdf2_simple` is never used
[INFO] [stderr]  --> src/pbkdf2.rs:8:8
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub fn pbkdf2_simple(pass: &str) -> Result<String> {
[INFO] [stderr]   |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `pbkdf2_check` is never used
[INFO] [stderr]   --> src/pbkdf2.rs:23:8
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub fn pbkdf2_check(pass: &str, hash: &str) -> Result<bool> {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `source_nick` is never used
[INFO] [stderr]    --> src/bad/proto.rs:186:12
[INFO] [stderr]     |
[INFO] [stderr] 134 | impl ParsedMessage {
[INFO] [stderr]     | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 186 |     pub fn source_nick(&self) -> Result<Option<Nick>, &'static str> {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `badchat` (lib) generated 73 warnings (run `cargo fix --lib -p badchat` to apply 4 suggestions)
[INFO] [stderr] warning: `badchat` (lib test) generated 71 warnings (70 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.12s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/badchat-235ad99f79bc8431)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test bad::proto::tests::parse_commands ... ok
[INFO] [stdout] test bad::proto::tests::parse_args ... ok
[INFO] [stdout] test pbkdf2::test_pbkdf2 ... ok
[INFO] [stdout] test lined::test_plain_chat ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- lined::test_plain_chat stdout ----
[INFO] [stdout] Error: channel closed
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: anyhow::error::<impl core::convert::From<E> for anyhow::Error>::from
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/anyhow-1.0.82/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<T,F> as core::ops::try_trait::FromResidual<core::result::Result<core::convert::Infallible,E>>>::from_residual
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/result.rs:1964:27
[INFO] [stdout]    2: badchat::lined::test_plain_chat::{{closure}}
[INFO] [stdout]              at ./src/lined/mod.rs:317:18
[INFO] [stdout]    3: <core::pin::Pin<P> as core::future::future::Future>::poll
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/future/future.rs:123:9
[INFO] [stdout]    4: <core::pin::Pin<P> as core::future::future::Future>::poll
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/future/future.rs:123:9
[INFO] [stdout]    5: tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:659:57
[INFO] [stdout]    6: tokio::runtime::coop::with_budget
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/coop.rs:107:5
[INFO] [stdout]    7: tokio::runtime::coop::budget
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/coop.rs:73:5
[INFO] [stdout]    8: tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:659:25
[INFO] [stdout]    9: tokio::runtime::scheduler::current_thread::Context::enter
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:404:19
[INFO] [stdout]   10: tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:658:36
[INFO] [stdout]   11: tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:737:68
[INFO] [stdout]   12: tokio::runtime::context::scoped::Scoped<T>::set
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   13: tokio::runtime::context::set_scheduler::{{closure}}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context.rs:176:26
[INFO] [stdout]   14: std::thread::local::LocalKey<T>::try_with
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/thread/local.rs:286:12
[INFO] [stdout]   15: std::thread::local::LocalKey<T>::with
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/thread/local.rs:262:9
[INFO] [stdout]   16: tokio::runtime::context::set_scheduler
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context.rs:176:9
[INFO] [stdout]   17: tokio::runtime::scheduler::current_thread::CoreGuard::enter
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:737:27
[INFO] [stdout]   18: tokio::runtime::scheduler::current_thread::CoreGuard::block_on
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:646:19
[INFO] [stdout]   19: tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:175:28
[INFO] [stdout]   20: tokio::runtime::context::runtime::enter_runtime
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   21: tokio::runtime::scheduler::current_thread::CurrentThread::block_on
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:167:9
[INFO] [stdout]   22: tokio::runtime::runtime::Runtime::block_on
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/runtime.rs:349:47
[INFO] [stdout]   23: badchat::lined::test_plain_chat
[INFO] [stdout]              at ./src/lined/mod.rs:345:5
[INFO] [stdout]   24: badchat::lined::test_plain_chat::{{closure}}
[INFO] [stdout]              at ./src/lined/mod.rs:289:31
[INFO] [stdout]   25: core::ops::function::FnOnce::call_once
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26: core::ops::function::FnOnce::call_once
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   27: test::__rust_begin_short_backtrace
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:625:18
[INFO] [stdout]   28: test::run_test_in_process::{{closure}}
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:648:60
[INFO] [stdout]   29: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   30: std::panicking::try::do_call
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:559:40
[INFO] [stdout]   31: std::panicking::try
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:523:19
[INFO] [stdout]   32: std::panic::catch_unwind
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panic.rs:149:14
[INFO] [stdout]   33: test::run_test_in_process
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:648:27
[INFO] [stdout]   34: test::run_test::{{closure}}
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:569:43
[INFO] [stdout]   35: test::run_test::{{closure}}
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:599:41
[INFO] [stdout]   36: std::sys_common::backtrace::__rust_begin_short_backtrace
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:155:18
[INFO] [stdout]   37: std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/thread/mod.rs:542:17
[INFO] [stdout]   38: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   39: std::panicking::try::do_call
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:559:40
[INFO] [stdout]   40: std::panicking::try
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:523:19
[INFO] [stdout]   41: std::panic::catch_unwind
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panic.rs:149:14
[INFO] [stdout]   42: std::thread::Builder::spawn_unchecked_::{{closure}}
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/thread/mod.rs:541:30
[INFO] [stdout]   43: core::ops::function::FnOnce::call_once{{vtable.shim}}
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   44: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2022:9
[INFO] [stdout]   45: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2022:9
[INFO] [stdout]   46: std::sys::pal::unix::thread::Thread::new::thread_start
[INFO] [stdout]              at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys/pal/unix/thread.rs:108:17
[INFO] [stdout]   47: <unknown>
[INFO] [stdout]   48: __clone
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     lined::test_plain_chat
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 3 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "072486ab57507131024b75e2aee91f6035b492231c8585862faba7d689800fe7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "072486ab57507131024b75e2aee91f6035b492231c8585862faba7d689800fe7", kill_on_drop: false }`
[INFO] [stdout] 072486ab57507131024b75e2aee91f6035b492231c8585862faba7d689800fe7
[INFO] testing FauxFaux/badchat against try#b642703cf9526da1e72c0b6755753b939a9c6b6d for pr-125151
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFauxFaux%2Fbadchat" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/FauxFaux/badchat on toolchain b642703cf9526da1e72c0b6755753b939a9c6b6d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b642703cf9526da1e72c0b6755753b939a9c6b6d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/FauxFaux/badchat
[INFO] finished tweaking git repo https://github.com/FauxFaux/badchat
[INFO] tweaked toml for git repo https://github.com/FauxFaux/badchat written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/FauxFaux/badchat 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" "+b642703cf9526da1e72c0b6755753b939a9c6b6d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+b642703cf9526da1e72c0b6755753b939a9c6b6d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 61dbf57429d9b09f187c497f9d9a2efcbe78606c95f444407b940057ac66b4b7
[INFO] running `Command { std: "docker" "start" "-a" "61dbf57429d9b09f187c497f9d9a2efcbe78606c95f444407b940057ac66b4b7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "61dbf57429d9b09f187c497f9d9a2efcbe78606c95f444407b940057ac66b4b7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "61dbf57429d9b09f187c497f9d9a2efcbe78606c95f444407b940057ac66b4b7", kill_on_drop: false }`
[INFO] [stdout] 61dbf57429d9b09f187c497f9d9a2efcbe78606c95f444407b940057ac66b4b7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+b642703cf9526da1e72c0b6755753b939a9c6b6d" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 40f80cf04ef2cd9fd517c08b10b7c9cc78a35ab9e3c92ebcc93e2e485d14d6c7
[INFO] running `Command { std: "docker" "start" "-a" "40f80cf04ef2cd9fd517c08b10b7c9cc78a35ab9e3c92ebcc93e2e485d14d6c7", kill_on_drop: false }`
[INFO] [stderr]    Compiling cc v1.0.94
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]    Compiling crunchy v0.2.2
[INFO] [stderr]    Compiling libc v0.2.153
[INFO] [stderr]    Compiling allocator-api2 v0.2.18
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling dunce v1.0.4
[INFO] [stderr]    Compiling getrandom v0.2.14
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling syn v2.0.58
[INFO] [stderr]    Compiling subtle v2.5.0
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling ucd-trie v0.1.6
[INFO] [stderr]    Compiling hashbrown v0.14.3
[INFO] [stderr]    Compiling aws-lc-rs v1.6.4
[INFO] [stderr]    Compiling futures-channel v0.3.30
[INFO] [stderr]    Compiling rustls-pki-types v1.4.1
[INFO] [stderr]    Compiling mirai-annotations v1.12.0
[INFO] [stderr]    Compiling cmake v0.1.50
[INFO] [stderr]    Compiling regex-syntax v0.8.3
[INFO] [stderr]    Compiling serde_json v1.0.115
[INFO] [stderr]    Compiling linked-hash-map v0.5.6
[INFO] [stderr]    Compiling zeroize v1.7.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling indexmap v2.2.6
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling utf8parse v0.2.1
[INFO] [stderr]    Compiling rustls v0.23.4
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling winnow v0.6.6
[INFO] [stderr]    Compiling aws-lc-sys v0.14.1
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]    Compiling hashbrown v0.13.2
[INFO] [stderr]    Compiling match_cfg v0.1.0
[INFO] [stderr]    Compiling hostname v0.3.1
[INFO] [stderr]    Compiling regex-automata v0.4.6
[INFO] [stderr]    Compiling const-random v0.1.18
[INFO] [stderr]    Compiling dlv-list v0.5.2
[INFO] [stderr]    Compiling anstyle-parse v0.2.3
[INFO] [stderr]    Compiling ordered-multimap v0.6.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling idna v0.4.0
[INFO] [stderr]    Compiling data-encoding v2.5.0
[INFO] [stderr]    Compiling anstyle v1.0.6
[INFO] [stderr]    Compiling anstyle-query v1.0.2
[INFO] [stderr]    Compiling colorchoice v1.0.0
[INFO] [stderr]    Compiling base64ct v1.6.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling anyhow v1.0.82
[INFO] [stderr]    Compiling virtue v0.0.13
[INFO] [stderr]    Compiling regex v1.10.4
[INFO] [stderr]    Compiling password-hash v0.5.0
[INFO] [stderr]    Compiling bincode_derive v2.0.0-rc.3
[INFO] [stderr]    Compiling env_filter v0.1.0
[INFO] [stderr]    Compiling resolv-conf v0.7.0
[INFO] [stderr]    Compiling time v0.3.36
[INFO] [stderr]    Compiling anstream v0.6.13
[INFO] [stderr]    Compiling sha2 v0.10.8
[INFO] [stderr]    Compiling rust-ini v0.19.0
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling hashlink v0.9.0
[INFO] [stderr]    Compiling yaml-rust v0.4.5
[INFO] [stderr]    Compiling serde_derive v1.0.197
[INFO] [stderr]    Compiling thiserror-impl v1.0.58
[INFO] [stderr]    Compiling futures-macro v0.3.30
[INFO] [stderr]    Compiling tokio-macros v2.2.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.27
[INFO] [stderr]    Compiling futures-util v0.3.30
[INFO] [stderr]    Compiling async-trait v0.1.80
[INFO] [stderr]    Compiling thiserror v1.0.58
[INFO] [stderr]    Compiling pest v2.7.9
[INFO] [stderr]    Compiling tokio v1.37.0
[INFO] [stderr]    Compiling pest_meta v2.7.9
[INFO] [stderr]    Compiling enum-as-inner v0.6.0
[INFO] [stderr]    Compiling tracing v0.1.40
[INFO] [stderr]    Compiling lru-cache v0.1.2
[INFO] [stderr]    Compiling gethostname v0.4.3
[INFO] [stderr]    Compiling pest_generator v2.7.9
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling humantime v2.1.0
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling atomic v0.5.3
[INFO] [stderr]    Compiling serde v1.0.197
[INFO] [stderr]    Compiling futures-executor v0.3.30
[INFO] [stderr]    Compiling base64 v0.22.0
[INFO] [stderr]    Compiling env_logger v0.11.3
[INFO] [stderr]    Compiling futures v0.3.30
[INFO] [stderr]    Compiling pbkdf2 v0.12.2
[INFO] [stderr]    Compiling rustls-pemfile v2.1.2
[INFO] [stderr]    Compiling dns-lookup v2.0.4
[INFO] [stderr]    Compiling maplit v1.0.2
[INFO] [stderr]    Compiling pest_derive v2.7.9
[INFO] [stderr]    Compiling serde_spanned v0.6.5
[INFO] [stderr]    Compiling bitflags v2.5.0
[INFO] [stderr]    Compiling toml_datetime v0.6.5
[INFO] [stderr]    Compiling ron v0.8.1
[INFO] [stderr]    Compiling toml_edit v0.22.9
[INFO] [stderr]    Compiling json5 v0.4.1
[INFO] [stderr]    Compiling hickory-proto v0.24.0
[INFO] [stderr]    Compiling bunyarrs v0.2.0
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling bincode v2.0.0-rc.3
[INFO] [stderr]    Compiling uuid v1.8.0
[INFO] [stderr]    Compiling toml v0.8.12
[INFO] [stderr]    Compiling config v0.14.0
[INFO] [stderr]    Compiling tokio-util v0.7.10
[INFO] [stderr]    Compiling hickory-resolver v0.24.0
[INFO] [stderr]    Compiling rustls-webpki v0.102.2
[INFO] [stderr]    Compiling tokio-rustls v0.26.0
[INFO] [stderr]    Compiling badchat v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `read_message`
[INFO] [stdout]   --> src/bad/two.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::lined::{read_message, FromLined, MessageIn, MessageOut, ToLined, Uid};
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/bad/mod.rs:757:9
[INFO] [stdout]     |
[INFO] [stdout] 752 | /         loop {
[INFO] [stdout] 753 | |             let value = read_message(&mut buf, &mut read).await?;
[INFO] [stdout] 754 | |             from_lined_tx.send(value).await?;
[INFO] [stdout] 755 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 756 |
[INFO] [stdout] 757 |           Ok::<(), anyhow::Error>(())
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `system`
[INFO] [stdout]    --> src/bad/mod.rs:739:13
[INFO] [stdout]     |
[INFO] [stdout] 739 |     let mut system = System::new()?;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_system`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `deadline`
[INFO] [stdout]   --> src/bad/two.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let deadline = sleep(deadline - Instant::now());
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_deadline`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bad/two.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let mut resolve = tokio::spawn(async move { resolver.reverse_lookup(host.ip()).await });
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/bad/mod.rs:739:9
[INFO] [stdout]     |
[INFO] [stdout] 739 |     let mut system = System::new()?;
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bad/mod.rs:745:25
[INFO] [stdout]     |
[INFO] [stdout] 745 |     let (from_lined_tx, mut from_lined_rx) = tokio::sync::mpsc::channel::<FromLined>(128);
[INFO] [stdout]     |                         ----^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/bad/mod.rs:385:13
[INFO] [stdout]     |
[INFO] [stdout] 385 |             PreAuthOp::Done => vec![Output {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer_addr`
[INFO] [stdout]   --> src/lined/admin.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     peer_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INPUT_LENGTH_LIMIT` is never used
[INFO] [stdout]   --> src/bad/mod.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const INPUT_LENGTH_LIMIT: usize = 4_096;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `data` and `next` are never read
[INFO] [stdout]   --> src/bad/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | struct Users {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 48 |     data: HashMap<UserId, User>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 49 |     next: u64,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `store`, `clients`, `users`, and `resolver` are never read
[INFO] [stdout]   --> src/bad/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct System {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout] 53 |     store: Store,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 54 |     clients: Clients,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 55 |     users: Users,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 56 |
[INFO] [stdout] 57 |     resolver: TokioAsyncResolver,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `WaitingForPong` and `Complete` are never constructed
[INFO] [stdout]   --> src/bad/mod.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | enum PreAuthPing {
[INFO] [stdout]    |      ----------- variants in this enum
[INFO] [stdout] 62 |     WaitingForNick,
[INFO] [stdout] 63 |     WaitingForPong,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     Complete,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuthPing` 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: fields `account` and `pass` are never read
[INFO] [stdout]   --> src/bad/mod.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct Pass {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 70 |     account: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 71 |     pass: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Pass` 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: fields `nick`, `pass`, `gecos`, `sending_caps`, `ping`, and `ping_token` are never read
[INFO] [stdout]   --> src/bad/mod.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct PreAuth {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 76 |     nick: Option<Nick>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 77 |     pass: Option<Pass>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 78 |     gecos: Option<(String, String)>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 79 |     sending_caps: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 80 |     ping: PreAuthPing,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 81 |     ping_token: PingToken,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuth` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_client_preamble_done` is never used
[INFO] [stdout]   --> src/bad/mod.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | impl PreAuth {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] 85 |     fn is_client_preamble_done(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `PreAuth`, `Singleton`, and `MultiAware` are never constructed
[INFO] [stdout]    --> src/bad/mod.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 109 | enum Client {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] 110 |     PreAuth {
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     Singleton {
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     MultiAware {
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Client` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nick`, `host_mask`, and `channels` are never read
[INFO] [stdout]    --> src/bad/mod.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | struct User {
[INFO] [stdout]     |        ---- fields in this struct
[INFO] [stdout] 126 |     nick: Nick,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 127 |     host_mask: HostMask,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 128 |     channels: HashSet<ChannelId>,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `User` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Req` is never used
[INFO] [stdout]    --> src/bad/mod.rs:132:6
[INFO] [stdout]     |
[INFO] [stdout] 132 | enum Req {
[INFO] [stdout]     |      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FromTo` is never used
[INFO] [stdout]    --> src/bad/mod.rs:140:6
[INFO] [stdout]     |
[INFO] [stdout] 140 | enum FromTo {
[INFO] [stdout]     |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Output` is never constructed
[INFO] [stdout]    --> src/bad/mod.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | struct Output {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u` is never used
[INFO] [stdout]    --> src/bad/mod.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn u<S: ToString, I: IntoIterator<Item = S>>(
[INFO] [stdout]     |    ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `s2u` is never used
[INFO] [stdout]    --> src/bad/mod.rs:179:4
[INFO] [stdout]     |
[INFO] [stdout] 179 | fn s2u<S: ToString, I: IntoIterator<Item = S>>(to: UserId, cmd: &'static str, args: I) -> Output {
[INFO] [stdout]     |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]    --> src/bad/mod.rs:203:14
[INFO] [stdout]     |
[INFO] [stdout] 188 | impl System {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 203 |     async fn run(&mut self, mut inp: Receiver<FromLined>, out: Sender<ToLined>) -> Result<()> {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_user` is never used
[INFO] [stdout]    --> src/bad/mod.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn find_user(clients: &Clients, which: UserId) -> Uid {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_client` is never used
[INFO] [stdout]    --> src/bad/mod.rs:282:4
[INFO] [stdout]     |
[INFO] [stdout] 282 | fn work_client(
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_single_client` is never used
[INFO] [stdout]    --> src/bad/mod.rs:421:4
[INFO] [stdout]     |
[INFO] [stdout] 421 | fn work_single_client(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_req` is never used
[INFO] [stdout]    --> src/bad/mod.rs:479:4
[INFO] [stdout]     |
[INFO] [stdout] 479 | fn work_req(store: &mut Store, users: &mut Users, us: UserId, req: Req) -> Vec<Output> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lookup_user` is never used
[INFO] [stdout]    --> src/bad/mod.rs:507:4
[INFO] [stdout]     |
[INFO] [stdout] 507 | fn lookup_user(users: &Users, nick: &Nick) -> Option<UserId> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `message_channel` is never used
[INFO] [stdout]    --> src/bad/mod.rs:515:4
[INFO] [stdout]     |
[INFO] [stdout] 515 | fn message_channel(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `joined` is never used
[INFO] [stdout]    --> src/bad/mod.rs:542:4
[INFO] [stdout]     |
[INFO] [stdout] 542 | fn joined(store: &mut Store, users: &mut Users, us: UserId, chan: &ChannelName) -> Vec<Output> {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unpack_command` is never used
[INFO] [stdout]    --> src/bad/mod.rs:608:4
[INFO] [stdout]     |
[INFO] [stdout] 608 | fn unpack_command(command: Result<Command, &'static str>) -> Result<Vec<Req>, OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wrapped` is never used
[INFO] [stdout]    --> src/bad/mod.rs:660:4
[INFO] [stdout]     |
[INFO] [stdout] 660 | fn wrapped<'i, I: IntoIterator<Item = &'i str>>(it: I) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_on_boarding` is never used
[INFO] [stdout]    --> src/bad/mod.rs:690:4
[INFO] [stdout]     |
[INFO] [stdout] 690 | fn send_on_boarding(nick: &str) -> Vec<OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line_to_message` is never used
[INFO] [stdout]    --> src/bad/mod.rs:729:4
[INFO] [stdout]     |
[INFO] [stdout] 729 | fn line_to_message(token: Uid, line: &str) -> Result<Option<Message>, OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_such_nick` is never used
[INFO] [stdout]   --> src/bad/err.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn no_such_nick<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_such_channel` is never used
[INFO] [stdout]   --> src/bad/err.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn no_such_channel<I: Ident>(ident: I, _channel: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `invalid_cap_command` is never used
[INFO] [stdout]   --> src/bad/err.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn invalid_cap_command<I: Ident>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_error` is never used
[INFO] [stdout]   --> src/bad/err.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn file_error<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `erroneous_nickname` is never used
[INFO] [stdout]   --> src/bad/err.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn erroneous_nickname<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nickname_in_use` is never used
[INFO] [stdout]   --> src/bad/err.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn nickname_in_use<I: Ident>(ident: I, nick: &Nick, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `not_registered` is never used
[INFO] [stdout]   --> src/bad/err.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn not_registered<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `password_mismatch` is never used
[INFO] [stdout]   --> src/bad/err.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn password_mismatch<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `inner` is never read
[INFO] [stdout]   --> src/bad/ids.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct HostMask {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 56 |     inner: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HostMask` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Nick {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 60 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<Nick, &'static str> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | impl ChannelName {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 72 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<ChannelName, &'static str> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl HostMask {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn new(raw_user_name: &str, host: &str) -> HostMask {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_channel` is never used
[INFO] [stdout]    --> src/bad/ids.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn valid_channel(chan: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_account` is never used
[INFO] [stdout]    --> src/bad/ids.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn valid_account(account: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_nick` is never used
[INFO] [stdout]    --> src/bad/ids.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn valid_nick(nick: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_nick_char` is never used
[INFO] [stdout]    --> src/bad/ids.rs:144:4
[INFO] [stdout]     |
[INFO] [stdout] 144 | fn valid_nick_char(c: char) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PreAuthOp` is never used
[INFO] [stdout]   --> src/bad/pre.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum PreAuthOp {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuthOp` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_pre_auth` is never used
[INFO] [stdout]   --> src/bad/pre.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn work_pre_auth(message: &Message, state: &mut PreAuth) -> PreAuthOp {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_http_verb` is never used
[INFO] [stdout]    --> src/bad/pre.rs:118:4
[INFO] [stdout]     |
[INFO] [stdout] 118 | fn is_http_verb(word: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, and `2` are never read
[INFO] [stdout]   --> src/bad/proto.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Join(&'s str, Option<&'s str>, Option<&'s str>),
[INFO] [stdout]    |     ---- ^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Join((), (), ()),
[INFO] [stdout]    |          ~~  ~~  ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/bad/proto.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Privmsg(&'s str, &'s str),
[INFO] [stdout]    |     ------- ^^^^^^^  ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Privmsg((), ()),
[INFO] [stdout]    |             ~~  ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Quit(Option<&'s str>),
[INFO] [stdout]    |     ---- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Quit(()),
[INFO] [stdout]    |          ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 |     CapLs(Option<&'s str>),
[INFO] [stdout]    |     ----- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 25 |     CapLs(()),
[INFO] [stdout]    |           ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Other(&'s str),
[INFO] [stdout]    |     ----- ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Other(()),
[INFO] [stdout]    |           ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `tags_str`, `source_str`, and `source_nick` are never used
[INFO] [stdout]    --> src/bad/proto.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl ParsedMessage {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] 135 |     fn tags_str(&self) -> Option<&str> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn source_str(&self) -> Option<&str> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn source_nick(&self) -> Result<Option<Nick>, &'static str> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `conn` is never read
[INFO] [stdout]   --> src/bad/store.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Store {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 16 |     conn: Connection,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `account` and `load_channel` are never used
[INFO] [stdout]   --> src/bad/store.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Store {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn account(&mut self, pass: &Pass) -> Option<i64> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn load_channel(&mut self, name: &ChannelName) -> ChannelId {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_id` is never used
[INFO] [stdout]   --> src/bad/store.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn load_id<P>(tx: &Transaction, query: &'static str, params: P) -> Option<i64>
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_account` is never used
[INFO] [stdout]   --> src/bad/store.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn create_account(tx: Transaction, pass: &Pass) -> i64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_channel` is never used
[INFO] [stdout]    --> src/bad/store.rs:112:4
[INFO] [stdout]     |
[INFO] [stdout] 112 | fn create_channel(tx: Transaction, name: &ChannelName) -> i64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_pass` is never used
[INFO] [stdout]    --> src/bad/store.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn check_pass(pass: &str, hashed: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unix_time` is never used
[INFO] [stdout]    --> src/bad/store.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn unix_time() -> i64 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `SystemError` is never used
[INFO] [stdout]    --> src/bad/store.rs:150:7
[INFO] [stdout]     |
[INFO] [stdout] 150 | trait SystemError<T, E> {
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `lazy_view_or_insert_with` is never used
[INFO] [stdout]  --> src/in_map.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub trait LazyView<K: Copy + hash::Hash + cmp::Eq, V> {
[INFO] [stdout]   |           -------- method in this trait
[INFO] [stdout] 6 |     fn lazy_view(&mut self, key: K) -> Option<MapBorrow<K, V>>;
[INFO] [stdout] 7 |     fn lazy_view_or_insert_with<F>(&mut self, key: K, default: F) -> MapBorrow<K, V>
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `view` is never used
[INFO] [stdout]   --> src/in_map.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl<'m, K: hash::Hash + cmp::Eq, V> MapBorrow<'m, K, V> {
[INFO] [stdout]    | -------------------------------------------------------- method in this implementation
[INFO] [stdout] 50 |     pub fn view(&self) -> &HashMap<K, V> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `peer_addr` is never read
[INFO] [stdout]   --> src/lined/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct Client {
[INFO] [stdout]    |        ------ field in this struct
[INFO] [stdout] 43 |     peer_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pbkdf2_simple` is never used
[INFO] [stdout]  --> src/pbkdf2.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn pbkdf2_simple(pass: &str) -> Result<String> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pbkdf2_check` is never used
[INFO] [stdout]   --> src/pbkdf2.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn pbkdf2_check(pass: &str, hash: &str) -> Result<bool> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 73 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 08s
[INFO] running `Command { std: "docker" "inspect" "40f80cf04ef2cd9fd517c08b10b7c9cc78a35ab9e3c92ebcc93e2e485d14d6c7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "40f80cf04ef2cd9fd517c08b10b7c9cc78a35ab9e3c92ebcc93e2e485d14d6c7", kill_on_drop: false }`
[INFO] [stdout] 40f80cf04ef2cd9fd517c08b10b7c9cc78a35ab9e3c92ebcc93e2e485d14d6c7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+b642703cf9526da1e72c0b6755753b939a9c6b6d" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7c3e08b96c73b3e8ebba16b87d98ae487df590e0e8686220f4c75a01aee3c64f
[INFO] running `Command { std: "docker" "start" "-a" "7c3e08b96c73b3e8ebba16b87d98ae487df590e0e8686220f4c75a01aee3c64f", kill_on_drop: false }`
[INFO] [stdout] warning: unused import: `read_message`
[INFO] [stdout]   --> src/bad/two.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::lined::{read_message, FromLined, MessageIn, MessageOut, ToLined, Uid};
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/bad/mod.rs:757:9
[INFO] [stdout]     |
[INFO] [stdout] 752 | /         loop {
[INFO] [stdout] 753 | |             let value = read_message(&mut buf, &mut read).await?;
[INFO] [stdout] 754 | |             from_lined_tx.send(value).await?;
[INFO] [stdout] 755 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 756 |
[INFO] [stdout] 757 |           Ok::<(), anyhow::Error>(())
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `system`
[INFO] [stdout]    --> src/bad/mod.rs:739:13
[INFO] [stdout]     |
[INFO] [stdout] 739 |     let mut system = System::new()?;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_system`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `deadline`
[INFO] [stdout]   --> src/bad/two.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let deadline = sleep(deadline - Instant::now());
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_deadline`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bad/two.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let mut resolve = tokio::spawn(async move { resolver.reverse_lookup(host.ip()).await });
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/bad/mod.rs:739:9
[INFO] [stdout]     |
[INFO] [stdout] 739 |     let mut system = System::new()?;
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bad/mod.rs:745:25
[INFO] [stdout]     |
[INFO] [stdout] 745 |     let (from_lined_tx, mut from_lined_rx) = tokio::sync::mpsc::channel::<FromLined>(128);
[INFO] [stdout]     |                         ----^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/bad/mod.rs:385:13
[INFO] [stdout]     |
[INFO] [stdout] 385 |             PreAuthOp::Done => vec![Output {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer_addr`
[INFO] [stdout]   --> src/lined/admin.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     peer_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INPUT_LENGTH_LIMIT` is never used
[INFO] [stdout]   --> src/bad/mod.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const INPUT_LENGTH_LIMIT: usize = 4_096;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `data` and `next` are never read
[INFO] [stdout]   --> src/bad/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | struct Users {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 48 |     data: HashMap<UserId, User>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 49 |     next: u64,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `store`, `clients`, `users`, and `resolver` are never read
[INFO] [stdout]   --> src/bad/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct System {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout] 53 |     store: Store,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 54 |     clients: Clients,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 55 |     users: Users,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 56 |
[INFO] [stdout] 57 |     resolver: TokioAsyncResolver,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `WaitingForPong` and `Complete` are never constructed
[INFO] [stdout]   --> src/bad/mod.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | enum PreAuthPing {
[INFO] [stdout]    |      ----------- variants in this enum
[INFO] [stdout] 62 |     WaitingForNick,
[INFO] [stdout] 63 |     WaitingForPong,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     Complete,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuthPing` 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: fields `account` and `pass` are never read
[INFO] [stdout]   --> src/bad/mod.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct Pass {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 70 |     account: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 71 |     pass: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Pass` 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: fields `nick`, `pass`, `gecos`, `sending_caps`, `ping`, and `ping_token` are never read
[INFO] [stdout]   --> src/bad/mod.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct PreAuth {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 76 |     nick: Option<Nick>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 77 |     pass: Option<Pass>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 78 |     gecos: Option<(String, String)>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 79 |     sending_caps: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 80 |     ping: PreAuthPing,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 81 |     ping_token: PingToken,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuth` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_client_preamble_done` is never used
[INFO] [stdout]   --> src/bad/mod.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | impl PreAuth {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] 85 |     fn is_client_preamble_done(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `PreAuth`, `Singleton`, and `MultiAware` are never constructed
[INFO] [stdout]    --> src/bad/mod.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 109 | enum Client {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] 110 |     PreAuth {
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     Singleton {
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     MultiAware {
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Client` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nick`, `host_mask`, and `channels` are never read
[INFO] [stdout]    --> src/bad/mod.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | struct User {
[INFO] [stdout]     |        ---- fields in this struct
[INFO] [stdout] 126 |     nick: Nick,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 127 |     host_mask: HostMask,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 128 |     channels: HashSet<ChannelId>,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `User` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Req` is never used
[INFO] [stdout]    --> src/bad/mod.rs:132:6
[INFO] [stdout]     |
[INFO] [stdout] 132 | enum Req {
[INFO] [stdout]     |      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FromTo` is never used
[INFO] [stdout]    --> src/bad/mod.rs:140:6
[INFO] [stdout]     |
[INFO] [stdout] 140 | enum FromTo {
[INFO] [stdout]     |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Output` is never constructed
[INFO] [stdout]    --> src/bad/mod.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | struct Output {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u` is never used
[INFO] [stdout]    --> src/bad/mod.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn u<S: ToString, I: IntoIterator<Item = S>>(
[INFO] [stdout]     |    ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `s2u` is never used
[INFO] [stdout]    --> src/bad/mod.rs:179:4
[INFO] [stdout]     |
[INFO] [stdout] 179 | fn s2u<S: ToString, I: IntoIterator<Item = S>>(to: UserId, cmd: &'static str, args: I) -> Output {
[INFO] [stdout]     |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]    --> src/bad/mod.rs:203:14
[INFO] [stdout]     |
[INFO] [stdout] 188 | impl System {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 203 |     async fn run(&mut self, mut inp: Receiver<FromLined>, out: Sender<ToLined>) -> Result<()> {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_user` is never used
[INFO] [stdout]    --> src/bad/mod.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn find_user(clients: &Clients, which: UserId) -> Uid {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_client` is never used
[INFO] [stdout]    --> src/bad/mod.rs:282:4
[INFO] [stdout]     |
[INFO] [stdout] 282 | fn work_client(
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_single_client` is never used
[INFO] [stdout]    --> src/bad/mod.rs:421:4
[INFO] [stdout]     |
[INFO] [stdout] 421 | fn work_single_client(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_req` is never used
[INFO] [stdout]    --> src/bad/mod.rs:479:4
[INFO] [stdout]     |
[INFO] [stdout] 479 | fn work_req(store: &mut Store, users: &mut Users, us: UserId, req: Req) -> Vec<Output> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lookup_user` is never used
[INFO] [stdout]    --> src/bad/mod.rs:507:4
[INFO] [stdout]     |
[INFO] [stdout] 507 | fn lookup_user(users: &Users, nick: &Nick) -> Option<UserId> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `message_channel` is never used
[INFO] [stdout]    --> src/bad/mod.rs:515:4
[INFO] [stdout]     |
[INFO] [stdout] 515 | fn message_channel(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `joined` is never used
[INFO] [stdout]    --> src/bad/mod.rs:542:4
[INFO] [stdout]     |
[INFO] [stdout] 542 | fn joined(store: &mut Store, users: &mut Users, us: UserId, chan: &ChannelName) -> Vec<Output> {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unpack_command` is never used
[INFO] [stdout]    --> src/bad/mod.rs:608:4
[INFO] [stdout]     |
[INFO] [stdout] 608 | fn unpack_command(command: Result<Command, &'static str>) -> Result<Vec<Req>, OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wrapped` is never used
[INFO] [stdout]    --> src/bad/mod.rs:660:4
[INFO] [stdout]     |
[INFO] [stdout] 660 | fn wrapped<'i, I: IntoIterator<Item = &'i str>>(it: I) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_on_boarding` is never used
[INFO] [stdout]    --> src/bad/mod.rs:690:4
[INFO] [stdout]     |
[INFO] [stdout] 690 | fn send_on_boarding(nick: &str) -> Vec<OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line_to_message` is never used
[INFO] [stdout]    --> src/bad/mod.rs:729:4
[INFO] [stdout]     |
[INFO] [stdout] 729 | fn line_to_message(token: Uid, line: &str) -> Result<Option<Message>, OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_such_nick` is never used
[INFO] [stdout]   --> src/bad/err.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn no_such_nick<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_such_channel` is never used
[INFO] [stdout]   --> src/bad/err.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn no_such_channel<I: Ident>(ident: I, _channel: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `invalid_cap_command` is never used
[INFO] [stdout]   --> src/bad/err.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn invalid_cap_command<I: Ident>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_error` is never used
[INFO] [stdout]   --> src/bad/err.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn file_error<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `erroneous_nickname` is never used
[INFO] [stdout]   --> src/bad/err.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn erroneous_nickname<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nickname_in_use` is never used
[INFO] [stdout]   --> src/bad/err.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn nickname_in_use<I: Ident>(ident: I, nick: &Nick, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `not_registered` is never used
[INFO] [stdout]   --> src/bad/err.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn not_registered<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `password_mismatch` is never used
[INFO] [stdout]   --> src/bad/err.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn password_mismatch<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling badchat v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: field `inner` is never read
[INFO] [stdout]   --> src/bad/ids.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct HostMask {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 56 |     inner: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HostMask` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Nick {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 60 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<Nick, &'static str> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | impl ChannelName {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 72 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<ChannelName, &'static str> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl HostMask {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn new(raw_user_name: &str, host: &str) -> HostMask {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_channel` is never used
[INFO] [stdout]    --> src/bad/ids.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn valid_channel(chan: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_account` is never used
[INFO] [stdout]    --> src/bad/ids.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn valid_account(account: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_nick` is never used
[INFO] [stdout]    --> src/bad/ids.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn valid_nick(nick: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_nick_char` is never used
[INFO] [stdout]    --> src/bad/ids.rs:144:4
[INFO] [stdout]     |
[INFO] [stdout] 144 | fn valid_nick_char(c: char) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PreAuthOp` is never used
[INFO] [stdout]   --> src/bad/pre.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum PreAuthOp {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuthOp` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_pre_auth` is never used
[INFO] [stdout]   --> src/bad/pre.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn work_pre_auth(message: &Message, state: &mut PreAuth) -> PreAuthOp {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_http_verb` is never used
[INFO] [stdout]    --> src/bad/pre.rs:118:4
[INFO] [stdout]     |
[INFO] [stdout] 118 | fn is_http_verb(word: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, and `2` are never read
[INFO] [stdout]   --> src/bad/proto.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Join(&'s str, Option<&'s str>, Option<&'s str>),
[INFO] [stdout]    |     ---- ^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Join((), (), ()),
[INFO] [stdout]    |          ~~  ~~  ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/bad/proto.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Privmsg(&'s str, &'s str),
[INFO] [stdout]    |     ------- ^^^^^^^  ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Privmsg((), ()),
[INFO] [stdout]    |             ~~  ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Quit(Option<&'s str>),
[INFO] [stdout]    |     ---- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Quit(()),
[INFO] [stdout]    |          ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 |     CapLs(Option<&'s str>),
[INFO] [stdout]    |     ----- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 25 |     CapLs(()),
[INFO] [stdout]    |           ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Other(&'s str),
[INFO] [stdout]    |     ----- ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Other(()),
[INFO] [stdout]    |           ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `tags_str`, `source_str`, and `source_nick` are never used
[INFO] [stdout]    --> src/bad/proto.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl ParsedMessage {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] 135 |     fn tags_str(&self) -> Option<&str> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn source_str(&self) -> Option<&str> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn source_nick(&self) -> Result<Option<Nick>, &'static str> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `conn` is never read
[INFO] [stdout]   --> src/bad/store.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Store {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 16 |     conn: Connection,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `account` and `load_channel` are never used
[INFO] [stdout]   --> src/bad/store.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Store {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn account(&mut self, pass: &Pass) -> Option<i64> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn load_channel(&mut self, name: &ChannelName) -> ChannelId {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_id` is never used
[INFO] [stdout]   --> src/bad/store.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn load_id<P>(tx: &Transaction, query: &'static str, params: P) -> Option<i64>
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_account` is never used
[INFO] [stdout]   --> src/bad/store.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn create_account(tx: Transaction, pass: &Pass) -> i64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_channel` is never used
[INFO] [stdout]    --> src/bad/store.rs:112:4
[INFO] [stdout]     |
[INFO] [stdout] 112 | fn create_channel(tx: Transaction, name: &ChannelName) -> i64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_pass` is never used
[INFO] [stdout]    --> src/bad/store.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn check_pass(pass: &str, hashed: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unix_time` is never used
[INFO] [stdout]    --> src/bad/store.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn unix_time() -> i64 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `SystemError` is never used
[INFO] [stdout]    --> src/bad/store.rs:150:7
[INFO] [stdout]     |
[INFO] [stdout] 150 | trait SystemError<T, E> {
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `lazy_view_or_insert_with` is never used
[INFO] [stdout]  --> src/in_map.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub trait LazyView<K: Copy + hash::Hash + cmp::Eq, V> {
[INFO] [stdout]   |           -------- method in this trait
[INFO] [stdout] 6 |     fn lazy_view(&mut self, key: K) -> Option<MapBorrow<K, V>>;
[INFO] [stdout] 7 |     fn lazy_view_or_insert_with<F>(&mut self, key: K, default: F) -> MapBorrow<K, V>
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `view` is never used
[INFO] [stdout]   --> src/in_map.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl<'m, K: hash::Hash + cmp::Eq, V> MapBorrow<'m, K, V> {
[INFO] [stdout]    | -------------------------------------------------------- method in this implementation
[INFO] [stdout] 50 |     pub fn view(&self) -> &HashMap<K, V> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `peer_addr` is never read
[INFO] [stdout]   --> src/lined/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct Client {
[INFO] [stdout]    |        ------ field in this struct
[INFO] [stdout] 43 |     peer_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pbkdf2_simple` is never used
[INFO] [stdout]  --> src/pbkdf2.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn pbkdf2_simple(pass: &str) -> Result<String> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pbkdf2_check` is never used
[INFO] [stdout]   --> src/pbkdf2.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn pbkdf2_check(pass: &str, hash: &str) -> Result<bool> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 73 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `read_message`
[INFO] [stdout]   --> src/bad/two.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::lined::{read_message, FromLined, MessageIn, MessageOut, ToLined, Uid};
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/bad/mod.rs:757:9
[INFO] [stdout]     |
[INFO] [stdout] 752 | /         loop {
[INFO] [stdout] 753 | |             let value = read_message(&mut buf, &mut read).await?;
[INFO] [stdout] 754 | |             from_lined_tx.send(value).await?;
[INFO] [stdout] 755 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 756 |
[INFO] [stdout] 757 |           Ok::<(), anyhow::Error>(())
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `system`
[INFO] [stdout]    --> src/bad/mod.rs:739:13
[INFO] [stdout]     |
[INFO] [stdout] 739 |     let mut system = System::new()?;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_system`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `deadline`
[INFO] [stdout]   --> src/bad/two.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let deadline = sleep(deadline - Instant::now());
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_deadline`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bad/two.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let mut resolve = tokio::spawn(async move { resolver.reverse_lookup(host.ip()).await });
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/bad/mod.rs:739:9
[INFO] [stdout]     |
[INFO] [stdout] 739 |     let mut system = System::new()?;
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bad/mod.rs:745:25
[INFO] [stdout]     |
[INFO] [stdout] 745 |     let (from_lined_tx, mut from_lined_rx) = tokio::sync::mpsc::channel::<FromLined>(128);
[INFO] [stdout]     |                         ----^^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/bad/mod.rs:385:13
[INFO] [stdout]     |
[INFO] [stdout] 385 |             PreAuthOp::Done => vec![Output {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer_addr`
[INFO] [stdout]   --> src/lined/admin.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     peer_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INPUT_LENGTH_LIMIT` is never used
[INFO] [stdout]   --> src/bad/mod.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const INPUT_LENGTH_LIMIT: usize = 4_096;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `data` and `next` are never read
[INFO] [stdout]   --> src/bad/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | struct Users {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 48 |     data: HashMap<UserId, User>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 49 |     next: u64,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `store`, `clients`, `users`, and `resolver` are never read
[INFO] [stdout]   --> src/bad/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct System {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout] 53 |     store: Store,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 54 |     clients: Clients,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 55 |     users: Users,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 56 |
[INFO] [stdout] 57 |     resolver: TokioAsyncResolver,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `WaitingForPong` and `Complete` are never constructed
[INFO] [stdout]   --> src/bad/mod.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | enum PreAuthPing {
[INFO] [stdout]    |      ----------- variants in this enum
[INFO] [stdout] 62 |     WaitingForNick,
[INFO] [stdout] 63 |     WaitingForPong,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     Complete,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuthPing` 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: fields `account` and `pass` are never read
[INFO] [stdout]   --> src/bad/mod.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct Pass {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 70 |     account: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 71 |     pass: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Pass` 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: fields `nick`, `pass`, `gecos`, `sending_caps`, `ping`, and `ping_token` are never read
[INFO] [stdout]   --> src/bad/mod.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct PreAuth {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 76 |     nick: Option<Nick>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 77 |     pass: Option<Pass>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 78 |     gecos: Option<(String, String)>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 79 |     sending_caps: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 80 |     ping: PreAuthPing,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 81 |     ping_token: PingToken,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuth` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_client_preamble_done` is never used
[INFO] [stdout]   --> src/bad/mod.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | impl PreAuth {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] 85 |     fn is_client_preamble_done(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `PreAuth`, `Singleton`, and `MultiAware` are never constructed
[INFO] [stdout]    --> src/bad/mod.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 109 | enum Client {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] 110 |     PreAuth {
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     Singleton {
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     MultiAware {
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Client` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nick`, `host_mask`, and `channels` are never read
[INFO] [stdout]    --> src/bad/mod.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | struct User {
[INFO] [stdout]     |        ---- fields in this struct
[INFO] [stdout] 126 |     nick: Nick,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 127 |     host_mask: HostMask,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 128 |     channels: HashSet<ChannelId>,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `User` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Req` is never used
[INFO] [stdout]    --> src/bad/mod.rs:132:6
[INFO] [stdout]     |
[INFO] [stdout] 132 | enum Req {
[INFO] [stdout]     |      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FromTo` is never used
[INFO] [stdout]    --> src/bad/mod.rs:140:6
[INFO] [stdout]     |
[INFO] [stdout] 140 | enum FromTo {
[INFO] [stdout]     |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Output` is never constructed
[INFO] [stdout]    --> src/bad/mod.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | struct Output {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u` is never used
[INFO] [stdout]    --> src/bad/mod.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn u<S: ToString, I: IntoIterator<Item = S>>(
[INFO] [stdout]     |    ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `s2u` is never used
[INFO] [stdout]    --> src/bad/mod.rs:179:4
[INFO] [stdout]     |
[INFO] [stdout] 179 | fn s2u<S: ToString, I: IntoIterator<Item = S>>(to: UserId, cmd: &'static str, args: I) -> Output {
[INFO] [stdout]     |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]    --> src/bad/mod.rs:203:14
[INFO] [stdout]     |
[INFO] [stdout] 188 | impl System {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 203 |     async fn run(&mut self, mut inp: Receiver<FromLined>, out: Sender<ToLined>) -> Result<()> {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_user` is never used
[INFO] [stdout]    --> src/bad/mod.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn find_user(clients: &Clients, which: UserId) -> Uid {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_client` is never used
[INFO] [stdout]    --> src/bad/mod.rs:282:4
[INFO] [stdout]     |
[INFO] [stdout] 282 | fn work_client(
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_single_client` is never used
[INFO] [stdout]    --> src/bad/mod.rs:421:4
[INFO] [stdout]     |
[INFO] [stdout] 421 | fn work_single_client(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_req` is never used
[INFO] [stdout]    --> src/bad/mod.rs:479:4
[INFO] [stdout]     |
[INFO] [stdout] 479 | fn work_req(store: &mut Store, users: &mut Users, us: UserId, req: Req) -> Vec<Output> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lookup_user` is never used
[INFO] [stdout]    --> src/bad/mod.rs:507:4
[INFO] [stdout]     |
[INFO] [stdout] 507 | fn lookup_user(users: &Users, nick: &Nick) -> Option<UserId> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `message_channel` is never used
[INFO] [stdout]    --> src/bad/mod.rs:515:4
[INFO] [stdout]     |
[INFO] [stdout] 515 | fn message_channel(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `joined` is never used
[INFO] [stdout]    --> src/bad/mod.rs:542:4
[INFO] [stdout]     |
[INFO] [stdout] 542 | fn joined(store: &mut Store, users: &mut Users, us: UserId, chan: &ChannelName) -> Vec<Output> {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unpack_command` is never used
[INFO] [stdout]    --> src/bad/mod.rs:608:4
[INFO] [stdout]     |
[INFO] [stdout] 608 | fn unpack_command(command: Result<Command, &'static str>) -> Result<Vec<Req>, OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wrapped` is never used
[INFO] [stdout]    --> src/bad/mod.rs:660:4
[INFO] [stdout]     |
[INFO] [stdout] 660 | fn wrapped<'i, I: IntoIterator<Item = &'i str>>(it: I) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_on_boarding` is never used
[INFO] [stdout]    --> src/bad/mod.rs:690:4
[INFO] [stdout]     |
[INFO] [stdout] 690 | fn send_on_boarding(nick: &str) -> Vec<OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line_to_message` is never used
[INFO] [stdout]    --> src/bad/mod.rs:729:4
[INFO] [stdout]     |
[INFO] [stdout] 729 | fn line_to_message(token: Uid, line: &str) -> Result<Option<Message>, OutCommand> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_such_nick` is never used
[INFO] [stdout]   --> src/bad/err.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn no_such_nick<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_such_channel` is never used
[INFO] [stdout]   --> src/bad/err.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn no_such_channel<I: Ident>(ident: I, _channel: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `invalid_cap_command` is never used
[INFO] [stdout]   --> src/bad/err.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn invalid_cap_command<I: Ident>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_error` is never used
[INFO] [stdout]   --> src/bad/err.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn file_error<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `erroneous_nickname` is never used
[INFO] [stdout]   --> src/bad/err.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn erroneous_nickname<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nickname_in_use` is never used
[INFO] [stdout]   --> src/bad/err.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn nickname_in_use<I: Ident>(ident: I, nick: &Nick, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `not_registered` is never used
[INFO] [stdout]   --> src/bad/err.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn not_registered<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `password_mismatch` is never used
[INFO] [stdout]   --> src/bad/err.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn password_mismatch<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `inner` is never read
[INFO] [stdout]   --> src/bad/ids.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct HostMask {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 56 |     inner: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HostMask` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Nick {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 60 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<Nick, &'static str> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | impl ChannelName {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 72 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<ChannelName, &'static str> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bad/ids.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl HostMask {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn new(raw_user_name: &str, host: &str) -> HostMask {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_channel` is never used
[INFO] [stdout]    --> src/bad/ids.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn valid_channel(chan: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_account` is never used
[INFO] [stdout]    --> src/bad/ids.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn valid_account(account: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_nick` is never used
[INFO] [stdout]    --> src/bad/ids.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn valid_nick(nick: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `valid_nick_char` is never used
[INFO] [stdout]    --> src/bad/ids.rs:144:4
[INFO] [stdout]     |
[INFO] [stdout] 144 | fn valid_nick_char(c: char) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PreAuthOp` is never used
[INFO] [stdout]   --> src/bad/pre.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum PreAuthOp {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PreAuthOp` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `work_pre_auth` is never used
[INFO] [stdout]   --> src/bad/pre.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn work_pre_auth(message: &Message, state: &mut PreAuth) -> PreAuthOp {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_http_verb` is never used
[INFO] [stdout]    --> src/bad/pre.rs:118:4
[INFO] [stdout]     |
[INFO] [stdout] 118 | fn is_http_verb(word: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, and `2` are never read
[INFO] [stdout]   --> src/bad/proto.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Join(&'s str, Option<&'s str>, Option<&'s str>),
[INFO] [stdout]    |     ---- ^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Join((), (), ()),
[INFO] [stdout]    |          ~~  ~~  ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/bad/proto.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Privmsg(&'s str, &'s str),
[INFO] [stdout]    |     ------- ^^^^^^^  ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Privmsg((), ()),
[INFO] [stdout]    |             ~~  ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Quit(Option<&'s str>),
[INFO] [stdout]    |     ---- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Quit(()),
[INFO] [stdout]    |          ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 |     CapLs(Option<&'s str>),
[INFO] [stdout]    |     ----- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 25 |     CapLs(()),
[INFO] [stdout]    |           ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bad/proto.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Other(&'s str),
[INFO] [stdout]    |     ----- ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Other(()),
[INFO] [stdout]    |           ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `source_nick` is never used
[INFO] [stdout]    --> src/bad/proto.rs:186:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl ParsedMessage {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn source_nick(&self) -> Result<Option<Nick>, &'static str> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `conn` is never read
[INFO] [stdout]   --> src/bad/store.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Store {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 16 |     conn: Connection,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `account` and `load_channel` are never used
[INFO] [stdout]   --> src/bad/store.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Store {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn account(&mut self, pass: &Pass) -> Option<i64> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn load_channel(&mut self, name: &ChannelName) -> ChannelId {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_id` is never used
[INFO] [stdout]   --> src/bad/store.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn load_id<P>(tx: &Transaction, query: &'static str, params: P) -> Option<i64>
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_account` is never used
[INFO] [stdout]   --> src/bad/store.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn create_account(tx: Transaction, pass: &Pass) -> i64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_channel` is never used
[INFO] [stdout]    --> src/bad/store.rs:112:4
[INFO] [stdout]     |
[INFO] [stdout] 112 | fn create_channel(tx: Transaction, name: &ChannelName) -> i64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_pass` is never used
[INFO] [stdout]    --> src/bad/store.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn check_pass(pass: &str, hashed: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unix_time` is never used
[INFO] [stdout]    --> src/bad/store.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn unix_time() -> i64 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `SystemError` is never used
[INFO] [stdout]    --> src/bad/store.rs:150:7
[INFO] [stdout]     |
[INFO] [stdout] 150 | trait SystemError<T, E> {
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `lazy_view_or_insert_with` is never used
[INFO] [stdout]  --> src/in_map.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub trait LazyView<K: Copy + hash::Hash + cmp::Eq, V> {
[INFO] [stdout]   |           -------- method in this trait
[INFO] [stdout] 6 |     fn lazy_view(&mut self, key: K) -> Option<MapBorrow<K, V>>;
[INFO] [stdout] 7 |     fn lazy_view_or_insert_with<F>(&mut self, key: K, default: F) -> MapBorrow<K, V>
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `view` is never used
[INFO] [stdout]   --> src/in_map.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl<'m, K: hash::Hash + cmp::Eq, V> MapBorrow<'m, K, V> {
[INFO] [stdout]    | -------------------------------------------------------- method in this implementation
[INFO] [stdout] 50 |     pub fn view(&self) -> &HashMap<K, V> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `peer_addr` is never read
[INFO] [stdout]   --> src/lined/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct Client {
[INFO] [stdout]    |        ------ field in this struct
[INFO] [stdout] 43 |     peer_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 71 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 6.58s
[INFO] running `Command { std: "docker" "inspect" "7c3e08b96c73b3e8ebba16b87d98ae487df590e0e8686220f4c75a01aee3c64f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7c3e08b96c73b3e8ebba16b87d98ae487df590e0e8686220f4c75a01aee3c64f", kill_on_drop: false }`
[INFO] [stdout] 7c3e08b96c73b3e8ebba16b87d98ae487df590e0e8686220f4c75a01aee3c64f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+b642703cf9526da1e72c0b6755753b939a9c6b6d" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 514641297c4982a2d003dbd3b3812dd277d43af6015facc2de3eb5d4fafdd4a0
[INFO] running `Command { std: "docker" "start" "-a" "514641297c4982a2d003dbd3b3812dd277d43af6015facc2de3eb5d4fafdd4a0", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `read_message`
[INFO] [stderr]   --> src/bad/two.rs:14:20
[INFO] [stderr]    |
[INFO] [stderr] 14 | use crate::lined::{read_message, FromLined, MessageIn, MessageOut, ToLined, Uid};
[INFO] [stderr]    |                    ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable expression
[INFO] [stderr]    --> src/bad/mod.rs:757:9
[INFO] [stderr]     |
[INFO] [stderr] 752 | /         loop {
[INFO] [stderr] 753 | |             let value = read_message(&mut buf, &mut read).await?;
[INFO] [stderr] 754 | |             from_lined_tx.send(value).await?;
[INFO] [stderr] 755 | |         }
[INFO] [stderr]     | |_________- any code following this expression is unreachable
[INFO] [stderr] 756 |
[INFO] [stderr] 757 |           Ok::<(), anyhow::Error>(())
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `system`
[INFO] [stderr]    --> src/bad/mod.rs:739:13
[INFO] [stderr]     |
[INFO] [stderr] 739 |     let mut system = System::new()?;
[INFO] [stderr]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_system`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `deadline`
[INFO] [stderr]   --> src/bad/two.rs:82:9
[INFO] [stderr]    |
[INFO] [stderr] 82 |     let deadline = sleep(deadline - Instant::now());
[INFO] [stderr]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_deadline`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/bad/two.rs:79:9
[INFO] [stderr]    |
[INFO] [stderr] 79 |     let mut resolve = tokio::spawn(async move { resolver.reverse_lookup(host.ip()).await });
[INFO] [stderr]    |         ----^^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/bad/mod.rs:739:9
[INFO] [stderr]     |
[INFO] [stderr] 739 |     let mut system = System::new()?;
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/bad/mod.rs:745:25
[INFO] [stderr]     |
[INFO] [stderr] 745 |     let (from_lined_tx, mut from_lined_rx) = tokio::sync::mpsc::channel::<FromLined>(128);
[INFO] [stderr]     |                         ----^^^^^^^^^^^^^
[INFO] [stderr]     |                         |
[INFO] [stderr]     |                         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/bad/mod.rs:385:13
[INFO] [stderr]     |
[INFO] [stderr] 385 |             PreAuthOp::Done => vec![Output {
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `peer_addr`
[INFO] [stderr]   --> src/lined/admin.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr] 14 |     peer_addr: SocketAddr,
[INFO] [stderr]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_addr`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `INPUT_LENGTH_LIMIT` is never used
[INFO] [stderr]   --> src/bad/mod.rs:34:7
[INFO] [stderr]    |
[INFO] [stderr] 34 | const INPUT_LENGTH_LIMIT: usize = 4_096;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `data` and `next` are never read
[INFO] [stderr]   --> src/bad/mod.rs:48:5
[INFO] [stderr]    |
[INFO] [stderr] 47 | struct Users {
[INFO] [stderr]    |        ----- fields in this struct
[INFO] [stderr] 48 |     data: HashMap<UserId, User>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 49 |     next: u64,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `store`, `clients`, `users`, and `resolver` are never read
[INFO] [stderr]   --> src/bad/mod.rs:53:5
[INFO] [stderr]    |
[INFO] [stderr] 52 | struct System {
[INFO] [stderr]    |        ------ fields in this struct
[INFO] [stderr] 53 |     store: Store,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 54 |     clients: Clients,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 55 |     users: Users,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 56 |
[INFO] [stderr] 57 |     resolver: TokioAsyncResolver,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `WaitingForPong` and `Complete` are never constructed
[INFO] [stderr]   --> src/bad/mod.rs:63:5
[INFO] [stderr]    |
[INFO] [stderr] 61 | enum PreAuthPing {
[INFO] [stderr]    |      ----------- variants in this enum
[INFO] [stderr] 62 |     WaitingForNick,
[INFO] [stderr] 63 |     WaitingForPong,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 64 |     Complete,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PreAuthPing` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `account` and `pass` are never read
[INFO] [stderr]   --> src/bad/mod.rs:70:5
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub struct Pass {
[INFO] [stderr]    |            ---- fields in this struct
[INFO] [stderr] 70 |     account: String,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 71 |     pass: String,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Pass` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `nick`, `pass`, `gecos`, `sending_caps`, `ping`, and `ping_token` are never read
[INFO] [stderr]   --> src/bad/mod.rs:76:5
[INFO] [stderr]    |
[INFO] [stderr] 75 | pub struct PreAuth {
[INFO] [stderr]    |            ------- fields in this struct
[INFO] [stderr] 76 |     nick: Option<Nick>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 77 |     pass: Option<Pass>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 78 |     gecos: Option<(String, String)>,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 79 |     sending_caps: bool,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 80 |     ping: PreAuthPing,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 81 |     ping_token: PingToken,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PreAuth` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_client_preamble_done` is never used
[INFO] [stderr]   --> src/bad/mod.rs:85:8
[INFO] [stderr]    |
[INFO] [stderr] 84 | impl PreAuth {
[INFO] [stderr]    | ------------ method in this implementation
[INFO] [stderr] 85 |     fn is_client_preamble_done(&self) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `PreAuth`, `Singleton`, and `MultiAware` are never constructed
[INFO] [stderr]    --> src/bad/mod.rs:110:5
[INFO] [stderr]     |
[INFO] [stderr] 109 | enum Client {
[INFO] [stderr]     |      ------ variants in this enum
[INFO] [stderr] 110 |     PreAuth {
[INFO] [stderr]     |     ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 114 |     Singleton {
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 118 |     MultiAware {
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `Client` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `nick`, `host_mask`, and `channels` are never read
[INFO] [stderr]    --> src/bad/mod.rs:126:5
[INFO] [stderr]     |
[INFO] [stderr] 125 | struct User {
[INFO] [stderr]     |        ---- fields in this struct
[INFO] [stderr] 126 |     nick: Nick,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 127 |     host_mask: HostMask,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 128 |     channels: HashSet<ChannelId>,
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `User` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Req` is never used
[INFO] [stderr]    --> src/bad/mod.rs:132:6
[INFO] [stderr]     |
[INFO] [stderr] 132 | enum Req {
[INFO] [stderr]     |      ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `FromTo` is never used
[INFO] [stderr]    --> src/bad/mod.rs:140:6
[INFO] [stderr]     |
[INFO] [stderr] 140 | enum FromTo {
[INFO] [stderr]     |      ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Output` is never constructed
[INFO] [stderr]    --> src/bad/mod.rs:154:8
[INFO] [stderr]     |
[INFO] [stderr] 154 | struct Output {
[INFO] [stderr]     |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `u` is never used
[INFO] [stderr]    --> src/bad/mod.rs:164:4
[INFO] [stderr]     |
[INFO] [stderr] 164 | fn u<S: ToString, I: IntoIterator<Item = S>>(
[INFO] [stderr]     |    ^
[INFO] [stderr] 
[INFO] [stderr] warning: function `s2u` is never used
[INFO] [stderr]    --> src/bad/mod.rs:179:4
[INFO] [stderr]     |
[INFO] [stderr] 179 | fn s2u<S: ToString, I: IntoIterator<Item = S>>(to: UserId, cmd: &'static str, args: I) -> Output {
[INFO] [stderr]     |    ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `run` is never used
[INFO] [stderr]    --> src/bad/mod.rs:203:14
[INFO] [stderr]     |
[INFO] [stderr] 188 | impl System {
[INFO] [stderr]     | ----------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 203 |     async fn run(&mut self, mut inp: Receiver<FromLined>, out: Sender<ToLined>) -> Result<()> {
[INFO] [stderr]     |              ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `find_user` is never used
[INFO] [stderr]    --> src/bad/mod.rs:230:4
[INFO] [stderr]     |
[INFO] [stderr] 230 | fn find_user(clients: &Clients, which: UserId) -> Uid {
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `work_client` is never used
[INFO] [stderr]    --> src/bad/mod.rs:282:4
[INFO] [stderr]     |
[INFO] [stderr] 282 | fn work_client(
[INFO] [stderr]     |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `work_single_client` is never used
[INFO] [stderr]    --> src/bad/mod.rs:421:4
[INFO] [stderr]     |
[INFO] [stderr] 421 | fn work_single_client(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `work_req` is never used
[INFO] [stderr]    --> src/bad/mod.rs:479:4
[INFO] [stderr]     |
[INFO] [stderr] 479 | fn work_req(store: &mut Store, users: &mut Users, us: UserId, req: Req) -> Vec<Output> {
[INFO] [stderr]     |    ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `lookup_user` is never used
[INFO] [stderr]    --> src/bad/mod.rs:507:4
[INFO] [stderr]     |
[INFO] [stderr] 507 | fn lookup_user(users: &Users, nick: &Nick) -> Option<UserId> {
[INFO] [stderr]     |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `message_channel` is never used
[INFO] [stderr]    --> src/bad/mod.rs:515:4
[INFO] [stderr]     |
[INFO] [stderr] 515 | fn message_channel(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `joined` is never used
[INFO] [stderr]    --> src/bad/mod.rs:542:4
[INFO] [stderr]     |
[INFO] [stderr] 542 | fn joined(store: &mut Store, users: &mut Users, us: UserId, chan: &ChannelName) -> Vec<Output> {
[INFO] [stderr]     |    ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `unpack_command` is never used
[INFO] [stderr]    --> src/bad/mod.rs:608:4
[INFO] [stderr]     |
[INFO] [stderr] 608 | fn unpack_command(command: Result<Command, &'static str>) -> Result<Vec<Req>, OutCommand> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `wrapped` is never used
[INFO] [stderr]    --> src/bad/mod.rs:660:4
[INFO] [stderr]     |
[INFO] [stderr] 660 | fn wrapped<'i, I: IntoIterator<Item = &'i str>>(it: I) -> Vec<String> {
[INFO] [stderr]     |    ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_on_boarding` is never used
[INFO] [stderr]    --> src/bad/mod.rs:690:4
[INFO] [stderr]     |
[INFO] [stderr] 690 | fn send_on_boarding(nick: &str) -> Vec<OutCommand> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `line_to_message` is never used
[INFO] [stderr]    --> src/bad/mod.rs:729:4
[INFO] [stderr]     |
[INFO] [stderr] 729 | fn line_to_message(token: Uid, line: &str) -> Result<Option<Message>, OutCommand> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `no_such_nick` is never used
[INFO] [stderr]   --> src/bad/err.rs:16:8
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub fn no_such_nick<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `no_such_channel` is never used
[INFO] [stderr]   --> src/bad/err.rs:22:8
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub fn no_such_channel<I: Ident>(ident: I, _channel: String, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `invalid_cap_command` is never used
[INFO] [stderr]   --> src/bad/err.rs:28:8
[INFO] [stderr]    |
[INFO] [stderr] 28 | pub fn invalid_cap_command<I: Ident>(
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `file_error` is never used
[INFO] [stderr]   --> src/bad/err.rs:50:8
[INFO] [stderr]    |
[INFO] [stderr] 50 | pub fn file_error<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `erroneous_nickname` is never used
[INFO] [stderr]   --> src/bad/err.rs:56:8
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub fn erroneous_nickname<I: Ident>(ident: I, _nick: String, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `nickname_in_use` is never used
[INFO] [stderr]   --> src/bad/err.rs:62:8
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub fn nickname_in_use<I: Ident>(ident: I, nick: &Nick, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `not_registered` is never used
[INFO] [stderr]   --> src/bad/err.rs:68:8
[INFO] [stderr]    |
[INFO] [stderr] 68 | pub fn not_registered<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `password_mismatch` is never used
[INFO] [stderr]   --> src/bad/err.rs:74:8
[INFO] [stderr]    |
[INFO] [stderr] 74 | pub fn password_mismatch<I: Ident>(ident: I, reason: &'static str) -> OutCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `inner` is never read
[INFO] [stderr]   --> src/bad/ids.rs:56:5
[INFO] [stderr]    |
[INFO] [stderr] 55 | pub struct HostMask {
[INFO] [stderr]    |            -------- field in this struct
[INFO] [stderr] 56 |     inner: String,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `HostMask` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/bad/ids.rs:60:12
[INFO] [stderr]    |
[INFO] [stderr] 59 | impl Nick {
[INFO] [stderr]    | --------- associated function in this implementation
[INFO] [stderr] 60 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<Nick, &'static str> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/bad/ids.rs:72:12
[INFO] [stderr]    |
[INFO] [stderr] 71 | impl ChannelName {
[INFO] [stderr]    | ---------------- associated function in this implementation
[INFO] [stderr] 72 |     pub fn new<S: AsRef<str> + ToString>(from: S) -> Result<ChannelName, &'static str> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/bad/ids.rs:84:12
[INFO] [stderr]    |
[INFO] [stderr] 83 | impl HostMask {
[INFO] [stderr]    | ------------- associated function in this implementation
[INFO] [stderr] 84 |     pub fn new(raw_user_name: &str, host: &str) -> HostMask {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `valid_channel` is never used
[INFO] [stderr]    --> src/bad/ids.rs:116:4
[INFO] [stderr]     |
[INFO] [stderr] 116 | fn valid_channel(chan: &str) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `valid_account` is never used
[INFO] [stderr]    --> src/bad/ids.rs:124:8
[INFO] [stderr]     |
[INFO] [stderr] 124 | pub fn valid_account(account: &str) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `valid_nick` is never used
[INFO] [stderr]    --> src/bad/ids.rs:128:4
[INFO] [stderr]     |
[INFO] [stderr] 128 | fn valid_nick(nick: &str) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `valid_nick_char` is never used
[INFO] [stderr]    --> src/bad/ids.rs:144:4
[INFO] [stderr]     |
[INFO] [stderr] 144 | fn valid_nick_char(c: char) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `PreAuthOp` is never used
[INFO] [stderr]   --> src/bad/pre.rs:13:10
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub enum PreAuthOp {
[INFO] [stderr]    |          ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PreAuthOp` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `work_pre_auth` is never used
[INFO] [stderr]   --> src/bad/pre.rs:21:8
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub fn work_pre_auth(message: &Message, state: &mut PreAuth) -> PreAuthOp {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_http_verb` is never used
[INFO] [stderr]    --> src/bad/pre.rs:118:4
[INFO] [stderr]     |
[INFO] [stderr] 118 | fn is_http_verb(word: &str) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `0`, `1`, and `2` are never read
[INFO] [stderr]   --> src/bad/proto.rs:17:10
[INFO] [stderr]    |
[INFO] [stderr] 17 |     Join(&'s str, Option<&'s str>, Option<&'s str>),
[INFO] [stderr]    |     ---- ^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     fields in this variant
[INFO] [stderr]    |
[INFO] [stderr] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stderr]    |
[INFO] [stderr] 17 |     Join((), (), ()),
[INFO] [stderr]    |          ~~  ~~  ~~
[INFO] [stderr] 
[INFO] [stderr] warning: fields `0` and `1` are never read
[INFO] [stderr]   --> src/bad/proto.rs:20:13
[INFO] [stderr]    |
[INFO] [stderr] 20 |     Privmsg(&'s str, &'s str),
[INFO] [stderr]    |     ------- ^^^^^^^  ^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     fields in this variant
[INFO] [stderr]    |
[INFO] [stderr] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stderr]    |
[INFO] [stderr] 20 |     Privmsg((), ()),
[INFO] [stderr]    |             ~~  ~~
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/bad/proto.rs:22:10
[INFO] [stderr]    |
[INFO] [stderr] 22 |     Quit(Option<&'s str>),
[INFO] [stderr]    |     ---- ^^^^^^^^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 22 |     Quit(()),
[INFO] [stderr]    |          ~~
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/bad/proto.rs:25:11
[INFO] [stderr]    |
[INFO] [stderr] 25 |     CapLs(Option<&'s str>),
[INFO] [stderr]    |     ----- ^^^^^^^^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 25 |     CapLs(()),
[INFO] [stderr]    |           ~~
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/bad/proto.rs:30:11
[INFO] [stderr]    |
[INFO] [stderr] 30 |     Other(&'s str),
[INFO] [stderr]    |     ----- ^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 30 |     Other(()),
[INFO] [stderr]    |           ~~
[INFO] [stderr] 
[INFO] [stderr] warning: methods `tags_str`, `source_str`, and `source_nick` are never used
[INFO] [stderr]    --> src/bad/proto.rs:135:8
[INFO] [stderr]     |
[INFO] [stderr] 134 | impl ParsedMessage {
[INFO] [stderr]     | ------------------ methods in this implementation
[INFO] [stderr] 135 |     fn tags_str(&self) -> Option<&str> {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 139 |     fn source_str(&self) -> Option<&str> {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 186 |     pub fn source_nick(&self) -> Result<Option<Nick>, &'static str> {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `conn` is never read
[INFO] [stderr]   --> src/bad/store.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub struct Store {
[INFO] [stderr]    |            ----- field in this struct
[INFO] [stderr] 16 |     conn: Connection,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `account` and `load_channel` are never used
[INFO] [stderr]   --> src/bad/store.rs:26:12
[INFO] [stderr]    |
[INFO] [stderr] 19 | impl Store {
[INFO] [stderr]    | ---------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 26 |     pub fn account(&mut self, pass: &Pass) -> Option<i64> {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 57 |     pub fn load_channel(&mut self, name: &ChannelName) -> ChannelId {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `load_id` is never used
[INFO] [stderr]   --> src/bad/store.rs:68:4
[INFO] [stderr]    |
[INFO] [stderr] 68 | fn load_id<P>(tx: &Transaction, query: &'static str, params: P) -> Option<i64>
[INFO] [stderr]    |    ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_account` is never used
[INFO] [stderr]   --> src/bad/store.rs:85:4
[INFO] [stderr]    |
[INFO] [stderr] 85 | fn create_account(tx: Transaction, pass: &Pass) -> i64 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_channel` is never used
[INFO] [stderr]    --> src/bad/store.rs:112:4
[INFO] [stderr]     |
[INFO] [stderr] 112 | fn create_channel(tx: Transaction, name: &ChannelName) -> i64 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `check_pass` is never used
[INFO] [stderr]    --> src/bad/store.rs:130:4
[INFO] [stderr]     |
[INFO] [stderr] 130 | fn check_pass(pass: &str, hashed: &str) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `unix_time` is never used
[INFO] [stderr]    --> src/bad/store.rs:140:4
[INFO] [stderr]     |
[INFO] [stderr] 140 | fn unix_time() -> i64 {
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `SystemError` is never used
[INFO] [stderr]    --> src/bad/store.rs:150:7
[INFO] [stderr]     |
[INFO] [stderr] 150 | trait SystemError<T, E> {
[INFO] [stderr]     |       ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `lazy_view_or_insert_with` is never used
[INFO] [stderr]  --> src/in_map.rs:7:8
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub trait LazyView<K: Copy + hash::Hash + cmp::Eq, V> {
[INFO] [stderr]   |           -------- method in this trait
[INFO] [stderr] 6 |     fn lazy_view(&mut self, key: K) -> Option<MapBorrow<K, V>>;
[INFO] [stderr] 7 |     fn lazy_view_or_insert_with<F>(&mut self, key: K, default: F) -> MapBorrow<K, V>
[INFO] [stderr]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `view` is never used
[INFO] [stderr]   --> src/in_map.rs:50:12
[INFO] [stderr]    |
[INFO] [stderr] 49 | impl<'m, K: hash::Hash + cmp::Eq, V> MapBorrow<'m, K, V> {
[INFO] [stderr]    | -------------------------------------------------------- method in this implementation
[INFO] [stderr] 50 |     pub fn view(&self) -> &HashMap<K, V> {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `peer_addr` is never read
[INFO] [stderr]   --> src/lined/mod.rs:43:5
[INFO] [stderr]    |
[INFO] [stderr] 42 | struct Client {
[INFO] [stderr]    |        ------ field in this struct
[INFO] [stderr] 43 |     peer_addr: SocketAddr,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `pbkdf2_simple` is never used
[INFO] [stderr]  --> src/pbkdf2.rs:8:8
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub fn pbkdf2_simple(pass: &str) -> Result<String> {
[INFO] [stderr]   |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `pbkdf2_check` is never used
[INFO] [stderr]   --> src/pbkdf2.rs:23:8
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub fn pbkdf2_check(pass: &str, hash: &str) -> Result<bool> {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `source_nick` is never used
[INFO] [stderr]    --> src/bad/proto.rs:186:12
[INFO] [stderr]     |
[INFO] [stderr] 134 | impl ParsedMessage {
[INFO] [stderr]     | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 186 |     pub fn source_nick(&self) -> Result<Option<Nick>, &'static str> {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `badchat` (lib) generated 73 warnings (run `cargo fix --lib -p badchat` to apply 4 suggestions)
[INFO] [stderr] warning: `badchat` (lib test) generated 71 warnings (70 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.20s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/badchat-235ad99f79bc8431)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test bad::proto::tests::parse_args ... ok
[INFO] [stdout] test bad::proto::tests::parse_commands ... ok
[INFO] [stdout] test pbkdf2::test_pbkdf2 ... ok
[INFO] [stdout] test lined::test_plain_chat ... FAILED
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- lined::test_plain_chat stdout ----
[INFO] [stdout] Error: channel closed
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: anyhow::error::<impl core::convert::From<E> for anyhow::Error>::from
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/anyhow-1.0.82/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<T,F> as core::ops::try_trait::FromResidual<core::result::Result<core::convert::Infallible,E>>>::from_residual
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/core/src/result.rs:1964:27
[INFO] [stdout]    2: badchat::lined::test_plain_chat::{{closure}}
[INFO] [stdout]              at ./src/lined/mod.rs:317:18
[INFO] [stdout]    3: <core::pin::Pin<P> as core::future::future::Future>::poll
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/core/src/future/future.rs:123:9
[INFO] [stdout]    4: <core::pin::Pin<P> as core::future::future::Future>::poll
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/core/src/future/future.rs:123:9
[INFO] [stdout]    5: tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:659:57
[INFO] [stdout]    6: tokio::runtime::coop::with_budget
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/coop.rs:107:5
[INFO] [stdout]    7: tokio::runtime::coop::budget
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/coop.rs:73:5
[INFO] [stdout]    8: tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:659:25
[INFO] [stdout]    9: tokio::runtime::scheduler::current_thread::Context::enter
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:404:19
[INFO] [stdout]   10: tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:658:36
[INFO] [stdout]   11: tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:737:68
[INFO] [stdout]   12: tokio::runtime::context::scoped::Scoped<T>::set
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   13: tokio::runtime::context::set_scheduler::{{closure}}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context.rs:176:26
[INFO] [stdout]   14: std::thread::local::LocalKey<T>::try_with
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/std/src/thread/local.rs:286:12
[INFO] [stdout]   15: std::thread::local::LocalKey<T>::with
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/std/src/thread/local.rs:262:9
[INFO] [stdout]   16: tokio::runtime::context::set_scheduler
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context.rs:176:9
[INFO] [stdout]   17: tokio::runtime::scheduler::current_thread::CoreGuard::enter
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:737:27
[INFO] [stdout]   18: tokio::runtime::scheduler::current_thread::CoreGuard::block_on
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:646:19
[INFO] [stdout]   19: tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:175:28
[INFO] [stdout]   20: tokio::runtime::context::runtime::enter_runtime
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   21: tokio::runtime::scheduler::current_thread::CurrentThread::block_on
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/current_thread/mod.rs:167:9
[INFO] [stdout]   22: tokio::runtime::runtime::Runtime::block_on
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/runtime.rs:349:47
[INFO] [stdout]   23: badchat::lined::test_plain_chat
[INFO] [stdout]              at ./src/lined/mod.rs:345:5
[INFO] [stdout]   24: badchat::lined::test_plain_chat::{{closure}}
[INFO] [stdout]              at ./src/lined/mod.rs:289:31
[INFO] [stdout]   25: core::ops::function::FnOnce::call_once
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26: core::ops::function::FnOnce::call_once
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   27: test::__rust_begin_short_backtrace
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/test/src/lib.rs:625:18
[INFO] [stdout]   28: test::run_test_in_process::{{closure}}
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/test/src/lib.rs:648:60
[INFO] [stdout]   29: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   30: std::panicking::try::do_call
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/std/src/panicking.rs:559:40
[INFO] [stdout]   31: std::panicking::try
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/std/src/panicking.rs:523:19
[INFO] [stdout]   32: std::panic::catch_unwind
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/std/src/panic.rs:149:14
[INFO] [stdout]   33: test::run_test_in_process
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/test/src/lib.rs:648:27
[INFO] [stdout]   34: test::run_test::{{closure}}
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/test/src/lib.rs:569:43
[INFO] [stdout]   35: test::run_test::{{closure}}
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/test/src/lib.rs:599:41
[INFO] [stdout]   36: std::sys_common::backtrace::__rust_begin_short_backtrace
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/std/src/sys_common/backtrace.rs:155:18
[INFO] [stdout]   37: std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/std/src/thread/mod.rs:542:17
[INFO] [stdout]   38: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   39: std::panicking::try::do_call
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/std/src/panicking.rs:559:40
[INFO] [stdout]   40: std::panicking::try
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/std/src/panicking.rs:523:19
[INFO] [stdout]   41: std::panic::catch_unwind
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/std/src/panic.rs:149:14
[INFO] [stdout]   42: std::thread::Builder::spawn_unchecked_::{{closure}}
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/std/src/thread/mod.rs:541:30
[INFO] [stdout]   43: core::ops::function::FnOnce::call_once{{vtable.shim}}
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   44: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/alloc/src/boxed.rs:2022:9
[INFO] [stdout]   45: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/alloc/src/boxed.rs:2022:9
[INFO] [stdout]   46: std::sys::pal::unix::thread::Thread::new::thread_start
[INFO] [stdout]              at /rustc/b642703cf9526da1e72c0b6755753b939a9c6b6d/library/std/src/sys/pal/unix/thread.rs:108:17
[INFO] [stdout]   47: <unknown>
[INFO] [stdout]   48: __clone
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     lined::test_plain_chat
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 3 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "514641297c4982a2d003dbd3b3812dd277d43af6015facc2de3eb5d4fafdd4a0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "514641297c4982a2d003dbd3b3812dd277d43af6015facc2de3eb5d4fafdd4a0", kill_on_drop: false }`
[INFO] [stdout] 514641297c4982a2d003dbd3b3812dd277d43af6015facc2de3eb5d4fafdd4a0
