[INFO] updating cached repository bqv/carbon [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/bqv/carbon [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/bqv/carbon" "work/ex/clippy-test-run/sources/stable/gh/bqv/carbon"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/bqv/carbon'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/bqv/carbon" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/bqv/carbon"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/bqv/carbon'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 290a5532d1f667e5ba7a18dc4bdc3959293773e8 [INFO] sha for GitHub repo bqv/carbon: 290a5532d1f667e5ba7a18dc4bdc3959293773e8 [INFO] validating manifest of bqv/carbon on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of bqv/carbon on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing bqv/carbon [INFO] finished frobbing bqv/carbon [INFO] frobbed toml for bqv/carbon written to work/ex/clippy-test-run/sources/stable/gh/bqv/carbon/Cargo.toml [INFO] started frobbing bqv/carbon [INFO] finished frobbing bqv/carbon [INFO] frobbed toml for bqv/carbon written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/bqv/carbon/Cargo.toml [INFO] crate bqv/carbon has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting bqv/carbon against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/bqv/carbon:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dclippy::into_iter_on_array" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 35e07cafba862477c45228206d2b806c951d08af18071027216ba09e8c3e4ba6 [INFO] running `"docker" "start" "-a" "35e07cafba862477c45228206d2b806c951d08af18071027216ba09e8c3e4ba6"` [INFO] [stderr] Checking carbon v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:49:19 [INFO] [stderr] | [INFO] [stderr] 49 | Message { hostmask: hostmask, command: Command::RPL_WELCOME(param.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:57:19 [INFO] [stderr] | [INFO] [stderr] 57 | Message { hostmask: hostmask, command: Command::PING(param.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:65:19 [INFO] [stderr] | [INFO] [stderr] 65 | Message { hostmask: hostmask, command: Command::PONG(param.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:75:19 [INFO] [stderr] | [INFO] [stderr] 75 | Message { hostmask: hostmask, command: Command::USER(username.to_string(), hostname.to_string(), servername.to_string(), realname.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:83:19 [INFO] [stderr] | [INFO] [stderr] 83 | Message { hostmask: hostmask, command: Command::NICK(nickname.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:91:19 [INFO] [stderr] | [INFO] [stderr] 91 | Message { hostmask: hostmask, command: Command::PASS(password.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:99:19 [INFO] [stderr] | [INFO] [stderr] 99 | Message { hostmask: hostmask, command: Command::JOIN(chan.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:107:19 [INFO] [stderr] | [INFO] [stderr] 107 | Message { hostmask: hostmask, command: Command::PART(chan.to_string(), message.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:115:19 [INFO] [stderr] | [INFO] [stderr] 115 | Message { hostmask: hostmask, command: Command::QUIT(chan.to_string(), message.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:123:19 [INFO] [stderr] | [INFO] [stderr] 123 | Message { hostmask: hostmask, command: Command::PRIVMSG(chan.to_string(), message.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:131:19 [INFO] [stderr] | [INFO] [stderr] 131 | Message { hostmask: hostmask, command: Command::NOTICE(chan.to_string(), message.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:214:19 [INFO] [stderr] | [INFO] [stderr] 214 | Message { hostmask: hostmask, command: command, raw: line.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:214:39 [INFO] [stderr] | [INFO] [stderr] 214 | Message { hostmask: hostmask, command: command, raw: line.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `command` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/server.rs:34:29 [INFO] [stderr] | [INFO] [stderr] 34 | Ok(Server { id: id, config: config, stream: sock, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), channels: Arc::new(Mutex::new(Vec::new())) }) [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/server.rs:34:37 [INFO] [stderr] | [INFO] [stderr] 34 | Ok(Server { id: id, config: config, stream: sock, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), channels: Arc::new(Mutex::new(Vec::new())) }) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/server.rs:42:81 [INFO] [stderr] | [INFO] [stderr] 42 | Ok(stream) => Ok(Server { id: self.id, config: self.config.clone(), stream: stream, connected: self.connected.clone(), userdata: self.userdata.clone(), nick: self.nick.clone(), ping_active: self.ping_active.clone(), channels: self.channels.clone() }), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `stream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/client.rs:31:18 [INFO] [stderr] | [INFO] [stderr] 31 | Client { id: id, stream: stream, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), name: "Client".to_string(), channels: Arc::new(Mutex::new(Vec::new())) } [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/client.rs:31:26 [INFO] [stderr] | [INFO] [stderr] 31 | Client { id: id, stream: stream, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), name: "Client".to_string(), channels: Arc::new(Mutex::new(Vec::new())) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `stream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/client.rs:36:52 [INFO] [stderr] | [INFO] [stderr] 36 | Ok(stream) => Ok(Client { id: self.id, stream: stream, connected: self.connected.clone(), userdata: self.userdata.clone(), nick: self.nick.clone(), ping_active: self.ping_active.clone(), name: self.name.clone(), channels: self.channels.clone() }), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `stream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:22:22 [INFO] [stderr] | [INFO] [stderr] 22 | PingWorker { conn: conn } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:44:22 [INFO] [stderr] | [INFO] [stderr] 44 | SendWorker { conn: conn, rx: rx } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:44:34 [INFO] [stderr] | [INFO] [stderr] 44 | SendWorker { conn: conn, rx: rx } [INFO] [stderr] | ^^^^^^ help: replace it with: `rx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:68:22 [INFO] [stderr] | [INFO] [stderr] 68 | ReadWorker { conn: conn, tx: tx } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:68:34 [INFO] [stderr] | [INFO] [stderr] 68 | ReadWorker { conn: conn, tx: tx } [INFO] [stderr] | ^^^^^^ help: replace it with: `tx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:87:22 [INFO] [stderr] | [INFO] [stderr] 87 | ReadWorker { conn: conn, tx: tx } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:87:34 [INFO] [stderr] | [INFO] [stderr] 87 | ReadWorker { conn: conn, tx: tx } [INFO] [stderr] | ^^^^^^ help: replace it with: `tx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:111:20 [INFO] [stderr] | [INFO] [stderr] 111 | Listener { listener: listener, eventtx: eventtx } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `listener` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:111:40 [INFO] [stderr] | [INFO] [stderr] 111 | Listener { listener: listener, eventtx: eventtx } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `eventtx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/mod.rs:46:217 [INFO] [stderr] | [INFO] [stderr] 46 | Ok(Bouncer { hostmask: Hostmask::Server("carbon.fron.io".to_string()), configs: cfgs, srvsendtxs: Vec::new(), clntsendtxs: Vec::new(), servers: Vec::new(), clients: Vec::new(), names: HashMap::new(), eventrx: eventrx, eventtx: eventtx }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `eventrx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/mod.rs:46:235 [INFO] [stderr] | [INFO] [stderr] 46 | Ok(Bouncer { hostmask: Hostmask::Server("carbon.fron.io".to_string()), configs: cfgs, srvsendtxs: Vec::new(), clntsendtxs: Vec::new(), servers: Vec::new(), clients: Vec::new(), names: HashMap::new(), eventrx: eventrx, eventtx: eventtx }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `eventtx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:111:72 [INFO] [stderr] | [INFO] [stderr] 111 | let cfg = irc::Config {name: name.clone(), nick: nick, host: host, port: port, pass: pass, ssl: ssl, chans: chans}; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `nick` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:111:84 [INFO] [stderr] | [INFO] [stderr] 111 | let cfg = irc::Config {name: name.clone(), nick: nick, host: host, port: port, pass: pass, ssl: ssl, chans: chans}; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `host` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:111:96 [INFO] [stderr] | [INFO] [stderr] 111 | let cfg = irc::Config {name: name.clone(), nick: nick, host: host, port: port, pass: pass, ssl: ssl, chans: chans}; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:111:108 [INFO] [stderr] | [INFO] [stderr] 111 | let cfg = irc::Config {name: name.clone(), nick: nick, host: host, port: port, pass: pass, ssl: ssl, chans: chans}; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `pass` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:111:120 [INFO] [stderr] | [INFO] [stderr] 111 | let cfg = irc::Config {name: name.clone(), nick: nick, host: host, port: port, pass: pass, ssl: ssl, chans: chans}; [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ssl` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:111:130 [INFO] [stderr] | [INFO] [stderr] 111 | let cfg = irc::Config {name: name.clone(), nick: nick, host: host, port: port, pass: pass, ssl: ssl, chans: chans}; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `chans` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:49:19 [INFO] [stderr] | [INFO] [stderr] 49 | Message { hostmask: hostmask, command: Command::RPL_WELCOME(param.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:57:19 [INFO] [stderr] | [INFO] [stderr] 57 | Message { hostmask: hostmask, command: Command::PING(param.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:65:19 [INFO] [stderr] | [INFO] [stderr] 65 | Message { hostmask: hostmask, command: Command::PONG(param.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:75:19 [INFO] [stderr] | [INFO] [stderr] 75 | Message { hostmask: hostmask, command: Command::USER(username.to_string(), hostname.to_string(), servername.to_string(), realname.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:83:19 [INFO] [stderr] | [INFO] [stderr] 83 | Message { hostmask: hostmask, command: Command::NICK(nickname.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:91:19 [INFO] [stderr] | [INFO] [stderr] 91 | Message { hostmask: hostmask, command: Command::PASS(password.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:99:19 [INFO] [stderr] | [INFO] [stderr] 99 | Message { hostmask: hostmask, command: Command::JOIN(chan.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:107:19 [INFO] [stderr] | [INFO] [stderr] 107 | Message { hostmask: hostmask, command: Command::PART(chan.to_string(), message.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:115:19 [INFO] [stderr] | [INFO] [stderr] 115 | Message { hostmask: hostmask, command: Command::QUIT(chan.to_string(), message.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:123:19 [INFO] [stderr] | [INFO] [stderr] 123 | Message { hostmask: hostmask, command: Command::PRIVMSG(chan.to_string(), message.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:131:19 [INFO] [stderr] | [INFO] [stderr] 131 | Message { hostmask: hostmask, command: Command::NOTICE(chan.to_string(), message.to_string()), raw: raw.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:214:19 [INFO] [stderr] | [INFO] [stderr] 214 | Message { hostmask: hostmask, command: command, raw: line.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostmask` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/message.rs:214:39 [INFO] [stderr] | [INFO] [stderr] 214 | Message { hostmask: hostmask, command: command, raw: line.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `command` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/server.rs:34:29 [INFO] [stderr] | [INFO] [stderr] 34 | Ok(Server { id: id, config: config, stream: sock, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), channels: Arc::new(Mutex::new(Vec::new())) }) [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/server.rs:34:37 [INFO] [stderr] | [INFO] [stderr] 34 | Ok(Server { id: id, config: config, stream: sock, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), channels: Arc::new(Mutex::new(Vec::new())) }) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/server.rs:42:81 [INFO] [stderr] | [INFO] [stderr] 42 | Ok(stream) => Ok(Server { id: self.id, config: self.config.clone(), stream: stream, connected: self.connected.clone(), userdata: self.userdata.clone(), nick: self.nick.clone(), ping_active: self.ping_active.clone(), channels: self.channels.clone() }), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `stream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/client.rs:31:18 [INFO] [stderr] | [INFO] [stderr] 31 | Client { id: id, stream: stream, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), name: "Client".to_string(), channels: Arc::new(Mutex::new(Vec::new())) } [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/client.rs:31:26 [INFO] [stderr] | [INFO] [stderr] 31 | Client { id: id, stream: stream, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), name: "Client".to_string(), channels: Arc::new(Mutex::new(Vec::new())) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `stream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irc/client.rs:36:52 [INFO] [stderr] | [INFO] [stderr] 36 | Ok(stream) => Ok(Client { id: self.id, stream: stream, connected: self.connected.clone(), userdata: self.userdata.clone(), nick: self.nick.clone(), ping_active: self.ping_active.clone(), name: self.name.clone(), channels: self.channels.clone() }), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `stream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:22:22 [INFO] [stderr] | [INFO] [stderr] 22 | PingWorker { conn: conn } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:44:22 [INFO] [stderr] | [INFO] [stderr] 44 | SendWorker { conn: conn, rx: rx } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:44:34 [INFO] [stderr] | [INFO] [stderr] 44 | SendWorker { conn: conn, rx: rx } [INFO] [stderr] | ^^^^^^ help: replace it with: `rx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:68:22 [INFO] [stderr] | [INFO] [stderr] 68 | ReadWorker { conn: conn, tx: tx } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:68:34 [INFO] [stderr] | [INFO] [stderr] 68 | ReadWorker { conn: conn, tx: tx } [INFO] [stderr] | ^^^^^^ help: replace it with: `tx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:87:22 [INFO] [stderr] | [INFO] [stderr] 87 | ReadWorker { conn: conn, tx: tx } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:87:34 [INFO] [stderr] | [INFO] [stderr] 87 | ReadWorker { conn: conn, tx: tx } [INFO] [stderr] | ^^^^^^ help: replace it with: `tx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:111:20 [INFO] [stderr] | [INFO] [stderr] 111 | Listener { listener: listener, eventtx: eventtx } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `listener` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/threadworker.rs:111:40 [INFO] [stderr] | [INFO] [stderr] 111 | Listener { listener: listener, eventtx: eventtx } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `eventtx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/mod.rs:46:217 [INFO] [stderr] | [INFO] [stderr] 46 | Ok(Bouncer { hostmask: Hostmask::Server("carbon.fron.io".to_string()), configs: cfgs, srvsendtxs: Vec::new(), clntsendtxs: Vec::new(), servers: Vec::new(), clients: Vec::new(), names: HashMap::new(), eventrx: eventrx, eventtx: eventtx }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `eventrx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bouncer/mod.rs:46:235 [INFO] [stderr] | [INFO] [stderr] 46 | Ok(Bouncer { hostmask: Hostmask::Server("carbon.fron.io".to_string()), configs: cfgs, srvsendtxs: Vec::new(), clntsendtxs: Vec::new(), servers: Vec::new(), clients: Vec::new(), names: HashMap::new(), eventrx: eventrx, eventtx: eventtx }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `eventtx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:111:72 [INFO] [stderr] | [INFO] [stderr] 111 | let cfg = irc::Config {name: name.clone(), nick: nick, host: host, port: port, pass: pass, ssl: ssl, chans: chans}; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `nick` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:111:84 [INFO] [stderr] | [INFO] [stderr] 111 | let cfg = irc::Config {name: name.clone(), nick: nick, host: host, port: port, pass: pass, ssl: ssl, chans: chans}; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `host` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:111:96 [INFO] [stderr] | [INFO] [stderr] 111 | let cfg = irc::Config {name: name.clone(), nick: nick, host: host, port: port, pass: pass, ssl: ssl, chans: chans}; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:111:108 [INFO] [stderr] | [INFO] [stderr] 111 | let cfg = irc::Config {name: name.clone(), nick: nick, host: host, port: port, pass: pass, ssl: ssl, chans: chans}; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `pass` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:111:120 [INFO] [stderr] | [INFO] [stderr] 111 | let cfg = irc::Config {name: name.clone(), nick: nick, host: host, port: port, pass: pass, ssl: ssl, chans: chans}; [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ssl` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:111:130 [INFO] [stderr] | [INFO] [stderr] 111 | let cfg = irc::Config {name: name.clone(), nick: nick, host: host, port: port, pass: pass, ssl: ssl, chans: chans}; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `chans` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unused import: `TcpListener` [INFO] [stderr] --> src/irc/client.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | use std::net::{TcpListener, TcpStream}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `DerefMut`, `Deref` [INFO] [stderr] --> src/bouncer/mod.rs:5:16 [INFO] [stderr] | [INFO] [stderr] 5 | use std::ops::{Deref, DerefMut}; [INFO] [stderr] | ^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `channel` [INFO] [stderr] --> src/bouncer/threadworker.rs:2:23 [INFO] [stderr] | [INFO] [stderr] 2 | use std::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Borrow` [INFO] [stderr] --> src/bouncer/threadworker.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::borrow::Borrow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `TcpStream` [INFO] [stderr] --> src/bouncer/threadworker.rs:5:29 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::{TcpListener, TcpStream}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `DerefMut`, `Deref` [INFO] [stderr] --> src/bouncer/threadworker.rs:6:16 [INFO] [stderr] | [INFO] [stderr] 6 | use std::ops::{Deref, DerefMut}; [INFO] [stderr] | ^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `TcpListener` [INFO] [stderr] --> src/irc/client.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | use std::net::{TcpListener, TcpStream}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `DerefMut`, `Deref` [INFO] [stderr] --> src/bouncer/mod.rs:5:16 [INFO] [stderr] | [INFO] [stderr] 5 | use std::ops::{Deref, DerefMut}; [INFO] [stderr] | ^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `channel` [INFO] [stderr] --> src/bouncer/threadworker.rs:2:23 [INFO] [stderr] | [INFO] [stderr] 2 | use std::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Borrow` [INFO] [stderr] --> src/bouncer/threadworker.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::borrow::Borrow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `TcpStream` [INFO] [stderr] --> src/bouncer/threadworker.rs:5:29 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::{TcpListener, TcpStream}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `DerefMut`, `Deref` [INFO] [stderr] --> src/bouncer/threadworker.rs:6:16 [INFO] [stderr] | [INFO] [stderr] 6 | use std::ops::{Deref, DerefMut}; [INFO] [stderr] | ^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/bouncer/threadworker.rs:120:21 [INFO] [stderr] | [INFO] [stderr] 120 | Err(e) => { [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/bouncer/mod.rs:70:29 [INFO] [stderr] | [INFO] [stderr] 70 | Err(err) => { [INFO] [stderr] | ^^^ help: consider using `_err` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `readthread` [INFO] [stderr] --> src/bouncer/mod.rs:91:21 [INFO] [stderr] | [INFO] [stderr] 91 | let readthread = thread::Builder::new().name(readthreadname).spawn(move || { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_readthread` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/bouncer/mod.rs:95:17 [INFO] [stderr] | [INFO] [stderr] 95 | Err(err) => { [INFO] [stderr] | ^^^ help: consider using `_err` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sendthread` [INFO] [stderr] --> src/bouncer/mod.rs:102:21 [INFO] [stderr] | [INFO] [stderr] 102 | let sendthread = thread::Builder::new().name(sendthreadname).spawn(move || { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_sendthread` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/bouncer/mod.rs:106:17 [INFO] [stderr] | [INFO] [stderr] 106 | Err(err) => { [INFO] [stderr] | ^^^ help: consider using `_err` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pingthread` [INFO] [stderr] --> src/bouncer/mod.rs:113:21 [INFO] [stderr] | [INFO] [stderr] 113 | let pingthread = thread::Builder::new().name(pingthreadname).spawn(move || { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_pingthread` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/bouncer/mod.rs:117:17 [INFO] [stderr] | [INFO] [stderr] 117 | Err(err) => { [INFO] [stderr] | ^^^ help: consider using `_err` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `readthread` [INFO] [stderr] --> src/bouncer/mod.rs:131:21 [INFO] [stderr] | [INFO] [stderr] 131 | let readthread = thread::Builder::new().name(readthreadname).spawn(move || { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_readthread` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sendthread` [INFO] [stderr] --> src/bouncer/mod.rs:139:21 [INFO] [stderr] | [INFO] [stderr] 139 | let sendthread = thread::Builder::new().name(sendthreadname).spawn(move || { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_sendthread` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pingthread` [INFO] [stderr] --> src/bouncer/mod.rs:165:25 [INFO] [stderr] | [INFO] [stderr] 165 | let pingthread = thread::Builder::new().name(pingthreadname).spawn(move || { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_pingthread` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `param` [INFO] [stderr] --> src/bouncer/mod.rs:183:31 [INFO] [stderr] | [INFO] [stderr] 183 | Command::PONG(ref param) => { [INFO] [stderr] | ^^^^^ help: consider using `_param` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `param` [INFO] [stderr] --> src/bouncer/mod.rs:282:31 [INFO] [stderr] | [INFO] [stderr] 282 | Command::PONG(ref param) => { [INFO] [stderr] | ^^^^^ help: consider using `_param` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/bouncer/threadworker.rs:120:21 [INFO] [stderr] | [INFO] [stderr] 120 | Err(e) => { [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/bouncer/mod.rs:70:29 [INFO] [stderr] | [INFO] [stderr] 70 | Err(err) => { [INFO] [stderr] | ^^^ help: consider using `_err` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `readthread` [INFO] [stderr] --> src/bouncer/mod.rs:91:21 [INFO] [stderr] | [INFO] [stderr] 91 | let readthread = thread::Builder::new().name(readthreadname).spawn(move || { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_readthread` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/bouncer/mod.rs:95:17 [INFO] [stderr] | [INFO] [stderr] 95 | Err(err) => { [INFO] [stderr] | ^^^ help: consider using `_err` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sendthread` [INFO] [stderr] --> src/bouncer/mod.rs:102:21 [INFO] [stderr] | [INFO] [stderr] 102 | let sendthread = thread::Builder::new().name(sendthreadname).spawn(move || { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_sendthread` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/bouncer/mod.rs:106:17 [INFO] [stderr] | [INFO] [stderr] 106 | Err(err) => { [INFO] [stderr] | ^^^ help: consider using `_err` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pingthread` [INFO] [stderr] --> src/bouncer/mod.rs:113:21 [INFO] [stderr] | [INFO] [stderr] 113 | let pingthread = thread::Builder::new().name(pingthreadname).spawn(move || { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_pingthread` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/bouncer/mod.rs:117:17 [INFO] [stderr] | [INFO] [stderr] 117 | Err(err) => { [INFO] [stderr] | ^^^ help: consider using `_err` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `readthread` [INFO] [stderr] --> src/bouncer/mod.rs:131:21 [INFO] [stderr] | [INFO] [stderr] 131 | let readthread = thread::Builder::new().name(readthreadname).spawn(move || { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_readthread` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `sendthread` [INFO] [stderr] --> src/bouncer/mod.rs:139:21 [INFO] [stderr] | [INFO] [stderr] 139 | let sendthread = thread::Builder::new().name(sendthreadname).spawn(move || { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_sendthread` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pingthread` [INFO] [stderr] --> src/bouncer/mod.rs:165:25 [INFO] [stderr] | [INFO] [stderr] 165 | let pingthread = thread::Builder::new().name(pingthreadname).spawn(move || { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_pingthread` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `param` [INFO] [stderr] --> src/bouncer/mod.rs:183:31 [INFO] [stderr] | [INFO] [stderr] 183 | Command::PONG(ref param) => { [INFO] [stderr] | ^^^^^ help: consider using `_param` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `param` [INFO] [stderr] --> src/bouncer/mod.rs:282:31 [INFO] [stderr] | [INFO] [stderr] 282 | Command::PONG(ref param) => { [INFO] [stderr] | ^^^^^ help: consider using `_param` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/irc/server.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | let mut nick = self.nick.lock().unwrap(); [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/irc/server.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | let mut userdata = self.userdata.lock().unwrap(); [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/irc/server.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | let mut channels = self.channels.lock().unwrap(); [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/irc/server.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | let mut ping_active = self.ping_active.clone(); [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/irc/server.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | let mut nick = self.nick.lock().unwrap(); [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/irc/server.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | let mut userdata = self.userdata.lock().unwrap(); [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/irc/server.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | let mut channels = self.channels.lock().unwrap(); [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/irc/server.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | let mut ping_active = self.ping_active.clone(); [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/irc/client.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | let mut nick = self.nick.lock().unwrap(); [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/irc/client.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | let mut userdata = self.userdata.lock().unwrap(); [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/irc/client.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | let mut nick = self.nick.lock().unwrap(); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/irc/client.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | let mut nick = self.nick.lock().unwrap(); [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/irc/client.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | let mut userdata = self.userdata.lock().unwrap(); [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/irc/client.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | let mut nick = self.nick.lock().unwrap(); [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/irc/client.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | let mut channels = self.channels.lock().unwrap(); [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/irc/client.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | let mut ping_active = self.ping_active.clone(); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/irc/client.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | let mut channels = self.channels.lock().unwrap(); [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/irc/client.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | let mut ping_active = self.ping_active.clone(); [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/bouncer/threadworker.rs:72:19 [INFO] [stderr] | [INFO] [stderr] 72 | if let Ok(mut iter) = self.conn.read() { [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/bouncer/threadworker.rs:91:19 [INFO] [stderr] | [INFO] [stderr] 91 | if let Ok(mut iter) = self.conn.read() { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: method is never used: `read_hostmask` [INFO] [stderr] --> src/irc/message.rs:134:5 [INFO] [stderr] | [INFO] [stderr] 134 | pub fn read_hostmask(hostmask: &str) -> Hostmask { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `username` [INFO] [stderr] --> src/irc/server.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | username: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `hostname` [INFO] [stderr] --> src/irc/server.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | hostname: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `realname` [INFO] [stderr] --> src/irc/server.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | realname: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_userdata` [INFO] [stderr] --> src/irc/server.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn set_userdata(&mut self, username: String, hostname: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `hostmask` [INFO] [stderr] --> src/irc/server.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn hostmask(&self) -> Hostmask { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_nick` [INFO] [stderr] --> src/irc/client.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | pub fn get_nick(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `RPL_WELCOME` should have a camel case name such as `RplWelcome` [INFO] [stderr] --> src/irc/message.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | RPL_WELCOME(String), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_camel_case_types)] on by default [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | / let mut raw = format!(":{} 001 {}", hostmask, param); [INFO] [stderr] 46 | | if hostmask == Hostmask::None { [INFO] [stderr] 47 | | raw = format!("001 {}", param); [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | / let mut raw = format!(":{} PING {}", hostmask, param); [INFO] [stderr] 54 | | if hostmask == Hostmask::None { [INFO] [stderr] 55 | | raw = format!("PING {}", param); [INFO] [stderr] 56 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | / let mut raw = format!(":{} PONG {}", hostmask, param); [INFO] [stderr] 62 | | if hostmask == Hostmask::None { [INFO] [stderr] 63 | | raw = format!("PONG {}", param); [INFO] [stderr] 64 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | / let mut raw = format!(":{} USER {} {} {} :{}", hostmask, username, hostname, servername, realname); [INFO] [stderr] 72 | | if hostmask == Hostmask::None { [INFO] [stderr] 73 | | raw = format!("USER {} {} {} :{}", username, hostname, servername, realname); [INFO] [stderr] 74 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:79:9 [INFO] [stderr] | [INFO] [stderr] 79 | / let mut raw = format!(":{} NICK {}", hostmask, nickname); [INFO] [stderr] 80 | | if hostmask == Hostmask::None { [INFO] [stderr] 81 | | raw = format!("NICK {}", nickname); [INFO] [stderr] 82 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/bouncer/threadworker.rs:72:19 [INFO] [stderr] | [INFO] [stderr] 72 | if let Ok(mut iter) = self.conn.read() { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:87:9 [INFO] [stderr] | [INFO] [stderr] 87 | / let mut raw = format!(":{} PASS {}", hostmask, password); [INFO] [stderr] 88 | | if hostmask == Hostmask::None { [INFO] [stderr] 89 | | raw = format!("PASS {}", password); [INFO] [stderr] 90 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / let mut raw = format!(":{} JOIN {}", hostmask, chan); [INFO] [stderr] 96 | | if hostmask == Hostmask::None { [INFO] [stderr] 97 | | raw = format!("JOIN {}", chan); [INFO] [stderr] 98 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/bouncer/threadworker.rs:91:19 [INFO] [stderr] | [INFO] [stderr] 91 | if let Ok(mut iter) = self.conn.read() { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:103:9 [INFO] [stderr] | [INFO] [stderr] 103 | / let mut raw = format!(":{} PART {} :{}", hostmask, chan, message); [INFO] [stderr] 104 | | if hostmask == Hostmask::None { [INFO] [stderr] 105 | | raw = format!("PART {} :{}", chan, message); [INFO] [stderr] 106 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / let mut raw = format!(":{} QUIT {} :{}", hostmask, chan, message); [INFO] [stderr] 112 | | if hostmask == Hostmask::None { [INFO] [stderr] 113 | | raw = format!("QUIT {} :{}", chan, message); [INFO] [stderr] 114 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:119:9 [INFO] [stderr] | [INFO] [stderr] 119 | / let mut raw = format!(":{} PRIVMSG {} :{}", hostmask, chan, message); [INFO] [stderr] 120 | | if hostmask == Hostmask::None { [INFO] [stderr] 121 | | raw = format!("PRIVMSG {} :{}", chan, message); [INFO] [stderr] 122 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:127:9 [INFO] [stderr] | [INFO] [stderr] 127 | / let mut raw = format!(":{} NOTICE {} :{}", hostmask, chan, message); [INFO] [stderr] 128 | | if hostmask == Hostmask::None { [INFO] [stderr] 129 | | raw = format!("NOTICE {} :{}", chan, message); [INFO] [stderr] 130 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: method is never used: `read_hostmask` [INFO] [stderr] --> src/irc/message.rs:134:5 [INFO] [stderr] | [INFO] [stderr] 134 | pub fn read_hostmask(hostmask: &str) -> Hostmask { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `username` [INFO] [stderr] --> src/irc/server.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | username: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `hostname` [INFO] [stderr] --> src/irc/server.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | hostname: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `realname` [INFO] [stderr] --> src/irc/server.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | realname: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_userdata` [INFO] [stderr] --> src/irc/server.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn set_userdata(&mut self, username: String, hostname: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `hostmask` [INFO] [stderr] --> src/irc/server.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn hostmask(&self) -> Hostmask { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_nick` [INFO] [stderr] --> src/irc/client.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | pub fn get_nick(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `RPL_WELCOME` should have a camel case name such as `RplWelcome` [INFO] [stderr] --> src/irc/message.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | RPL_WELCOME(String), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_camel_case_types)] on by default [INFO] [stderr] [INFO] [stderr] warning: you should use the `starts_with` method [INFO] [stderr] --> src/irc/message.rs:145:27 [INFO] [stderr] | [INFO] [stderr] 145 | let hostmask = if line.chars().next() == Some(':') { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `line.starts_with(':')` [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | / let mut raw = format!(":{} 001 {}", hostmask, param); [INFO] [stderr] 46 | | if hostmask == Hostmask::None { [INFO] [stderr] 47 | | raw = format!("001 {}", param); [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | / let mut raw = format!(":{} PING {}", hostmask, param); [INFO] [stderr] 54 | | if hostmask == Hostmask::None { [INFO] [stderr] 55 | | raw = format!("PING {}", param); [INFO] [stderr] 56 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::chars_next_cmp)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#chars_next_cmp [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | / let mut raw = format!(":{} PONG {}", hostmask, param); [INFO] [stderr] 62 | | if hostmask == Hostmask::None { [INFO] [stderr] 63 | | raw = format!("PONG {}", param); [INFO] [stderr] 64 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | / let mut raw = format!(":{} USER {} {} {} :{}", hostmask, username, hostname, servername, realname); [INFO] [stderr] 72 | | if hostmask == Hostmask::None { [INFO] [stderr] 73 | | raw = format!("USER {} {} {} :{}", username, hostname, servername, realname); [INFO] [stderr] 74 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:79:9 [INFO] [stderr] | [INFO] [stderr] 79 | / let mut raw = format!(":{} NICK {}", hostmask, nickname); [INFO] [stderr] 80 | | if hostmask == Hostmask::None { [INFO] [stderr] 81 | | raw = format!("NICK {}", nickname); [INFO] [stderr] 82 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:87:9 [INFO] [stderr] | [INFO] [stderr] 87 | / let mut raw = format!(":{} PASS {}", hostmask, password); [INFO] [stderr] 88 | | if hostmask == Hostmask::None { [INFO] [stderr] 89 | | raw = format!("PASS {}", password); [INFO] [stderr] 90 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / let mut raw = format!(":{} JOIN {}", hostmask, chan); [INFO] [stderr] 96 | | if hostmask == Hostmask::None { [INFO] [stderr] 97 | | raw = format!("JOIN {}", chan); [INFO] [stderr] 98 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:103:9 [INFO] [stderr] | [INFO] [stderr] 103 | / let mut raw = format!(":{} PART {} :{}", hostmask, chan, message); [INFO] [stderr] 104 | | if hostmask == Hostmask::None { [INFO] [stderr] 105 | | raw = format!("PART {} :{}", chan, message); [INFO] [stderr] 106 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / let mut raw = format!(":{} QUIT {} :{}", hostmask, chan, message); [INFO] [stderr] 112 | | if hostmask == Hostmask::None { [INFO] [stderr] 113 | | raw = format!("QUIT {} :{}", chan, message); [INFO] [stderr] 114 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:119:9 [INFO] [stderr] | [INFO] [stderr] 119 | / let mut raw = format!(":{} PRIVMSG {} :{}", hostmask, chan, message); [INFO] [stderr] 120 | | if hostmask == Hostmask::None { [INFO] [stderr] 121 | | raw = format!("PRIVMSG {} :{}", chan, message); [INFO] [stderr] 122 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/irc/server.rs:34:87 [INFO] [stderr] | [INFO] [stderr] 34 | Ok(Server { id: id, config: config, stream: sock, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), channels: Arc::new(Mutex::new(Vec::new())) }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mutex_atomic)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/irc/server.rs:34:214 [INFO] [stderr] | [INFO] [stderr] 34 | Ok(Server { id: id, config: config, stream: sock, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), channels: Arc::new(Mutex::new(Vec::new())) }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/irc/message.rs:127:9 [INFO] [stderr] | [INFO] [stderr] 127 | / let mut raw = format!(":{} NOTICE {} :{}", hostmask, chan, message); [INFO] [stderr] 128 | | if hostmask == Hostmask::None { [INFO] [stderr] 129 | | raw = format!("NOTICE {} :{}", chan, message); [INFO] [stderr] 130 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let raw = if hostmask == Hostmask::None { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: you should use the `starts_with` method [INFO] [stderr] --> src/irc/message.rs:145:27 [INFO] [stderr] | [INFO] [stderr] 145 | let hostmask = if line.chars().next() == Some(':') { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `line.starts_with(':')` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::chars_next_cmp)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#chars_next_cmp [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/irc/server.rs:34:87 [INFO] [stderr] | [INFO] [stderr] 34 | Ok(Server { id: id, config: config, stream: sock, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), channels: Arc::new(Mutex::new(Vec::new())) }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mutex_atomic)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/irc/server.rs:34:214 [INFO] [stderr] | [INFO] [stderr] 34 | Ok(Server { id: id, config: config, stream: sock, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), channels: Arc::new(Mutex::new(Vec::new())) }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/irc/server.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | self.send(string); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/irc/server.rs:128:27 [INFO] [stderr] | [INFO] [stderr] 128 | fn read(&mut self) -> io::Result>, fn(io::Result) -> Option>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/irc/server.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | self.send(string); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/irc/server.rs:128:27 [INFO] [stderr] | [INFO] [stderr] 128 | fn read(&mut self) -> io::Result>, fn(io::Result) -> Option>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/irc/client.rs:31:62 [INFO] [stderr] | [INFO] [stderr] 31 | Client { id: id, stream: stream, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), name: "Client".to_string(), channels: Arc::new(Mutex::new(Vec::new())) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/irc/client.rs:31:189 [INFO] [stderr] | [INFO] [stderr] 31 | Client { id: id, stream: stream, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), name: "Client".to_string(), channels: Arc::new(Mutex::new(Vec::new())) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/irc/client.rs:31:62 [INFO] [stderr] | [INFO] [stderr] 31 | Client { id: id, stream: stream, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), name: "Client".to_string(), channels: Arc::new(Mutex::new(Vec::new())) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/irc/client.rs:31:189 [INFO] [stderr] | [INFO] [stderr] 31 | Client { id: id, stream: stream, connected: Arc::new(Mutex::new(true)), userdata: Arc::new(Mutex::new(userdata)), nick: Arc::new(Mutex::new("".to_string())), ping_active: Arc::new(Mutex::new(false)), name: "Client".to_string(), channels: Arc::new(Mutex::new(Vec::new())) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/irc/client.rs:115:13 [INFO] [stderr] | [INFO] [stderr] 115 | self.send(string); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/irc/client.rs:131:27 [INFO] [stderr] | [INFO] [stderr] 131 | fn read(&mut self) -> io::Result>, fn(io::Result) -> Option>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/irc/mod.rs:29:27 [INFO] [stderr] | [INFO] [stderr] 29 | fn read(&mut self) -> io::Result>, fn(io::Result) -> Option>>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/threadworker.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | self.conn.send(string); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/threadworker.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | self.tx.send(Event::ServerRead(self.conn.id(), Message::from_string(line.as_str()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/threadworker.rs:94:17 [INFO] [stderr] | [INFO] [stderr] 94 | self.tx.send(Event::ClientRead(self.conn.id(), Message::from_string(line.as_str()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/threadworker.rs:118:21 [INFO] [stderr] | [INFO] [stderr] 118 | self.eventtx.send(Event::AcceptConn(Arc::new(Mutex::new(stream)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/bouncer/mod.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | ClientRead(usize, Message), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/bouncer/mod.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | ClientRead(usize, Message), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/irc/client.rs:115:13 [INFO] [stderr] | [INFO] [stderr] 115 | self.send(string); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/irc/client.rs:131:27 [INFO] [stderr] | [INFO] [stderr] 131 | fn read(&mut self) -> io::Result>, fn(io::Result) -> Option>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/mod.rs:43:17 [INFO] [stderr] | [INFO] [stderr] 43 | / thread::Builder::new().name("LISTEN".to_string()).spawn(move || { [INFO] [stderr] 44 | | threadworker::Listener::new(listener, listeneventtx).work(); [INFO] [stderr] 45 | | }); [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/irc/mod.rs:29:27 [INFO] [stderr] | [INFO] [stderr] 29 | fn read(&mut self) -> io::Result>, fn(io::Result) -> Option>>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/threadworker.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | self.conn.send(string); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/threadworker.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | self.tx.send(Event::ServerRead(self.conn.id(), Message::from_string(line.as_str()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/threadworker.rs:94:17 [INFO] [stderr] | [INFO] [stderr] 94 | self.tx.send(Event::ClientRead(self.conn.id(), Message::from_string(line.as_str()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/threadworker.rs:118:21 [INFO] [stderr] | [INFO] [stderr] 118 | self.eventtx.send(Event::AcceptConn(Arc::new(Mutex::new(stream)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/bouncer/mod.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | ClientRead(usize, Message), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/bouncer/mod.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | ClientRead(usize, Message), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/mod.rs:43:17 [INFO] [stderr] | [INFO] [stderr] 43 | / thread::Builder::new().name("LISTEN".to_string()).spawn(move || { [INFO] [stderr] 44 | | threadworker::Listener::new(listener, listeneventtx).work(); [INFO] [stderr] 45 | | }); [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/mod.rs:140:21 [INFO] [stderr] | [INFO] [stderr] 140 | sendtx.send(Message::user(Hostmask::None, server_clone.config.nick.as_str(), "carbon").to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/mod.rs:141:21 [INFO] [stderr] | [INFO] [stderr] 141 | sendtx.send(Message::nick(Hostmask::None, server_clone.config.nick.as_str()).to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/mod.rs:145:29 [INFO] [stderr] | [INFO] [stderr] 145 | sendtx.send(Message::pass(Hostmask::None, pass).to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/mod.rs:140:21 [INFO] [stderr] | [INFO] [stderr] 140 | sendtx.send(Message::user(Hostmask::None, server_clone.config.nick.as_str(), "carbon").to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/mod.rs:141:21 [INFO] [stderr] | [INFO] [stderr] 141 | sendtx.send(Message::nick(Hostmask::None, server_clone.config.nick.as_str()).to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/mod.rs:145:29 [INFO] [stderr] | [INFO] [stderr] 145 | sendtx.send(Message::pass(Hostmask::None, pass).to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/mod.rs:348:9 [INFO] [stderr] | [INFO] [stderr] 348 | self.srvsendtxs[id].send(line); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/mod.rs:348:9 [INFO] [stderr] | [INFO] [stderr] 348 | self.srvsendtxs[id].send(line); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/mod.rs:352:9 [INFO] [stderr] | [INFO] [stderr] 352 | self.clntsendtxs[id].send(line); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/bouncer/mod.rs:352:9 [INFO] [stderr] | [INFO] [stderr] 352 | self.clntsendtxs[id].send(line); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.27s [INFO] running `"docker" "inspect" "35e07cafba862477c45228206d2b806c951d08af18071027216ba09e8c3e4ba6"` [INFO] running `"docker" "rm" "-f" "35e07cafba862477c45228206d2b806c951d08af18071027216ba09e8c3e4ba6"` [INFO] [stdout] 35e07cafba862477c45228206d2b806c951d08af18071027216ba09e8c3e4ba6