[INFO] updating cached repository lazau/rust-irc-server [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/lazau/rust-irc-server [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/lazau/rust-irc-server" "work/ex/clippy-test-run/sources/stable/gh/lazau/rust-irc-server"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/lazau/rust-irc-server'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/lazau/rust-irc-server" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lazau/rust-irc-server"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lazau/rust-irc-server'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] fcf8328c55a577e859f41701f11cc3abb2288b2c [INFO] sha for GitHub repo lazau/rust-irc-server: fcf8328c55a577e859f41701f11cc3abb2288b2c [INFO] validating manifest of lazau/rust-irc-server 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 lazau/rust-irc-server 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 lazau/rust-irc-server [INFO] finished frobbing lazau/rust-irc-server [INFO] frobbed toml for lazau/rust-irc-server written to work/ex/clippy-test-run/sources/stable/gh/lazau/rust-irc-server/Cargo.toml [INFO] started frobbing lazau/rust-irc-server [INFO] finished frobbing lazau/rust-irc-server [INFO] frobbed toml for lazau/rust-irc-server written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lazau/rust-irc-server/Cargo.toml [INFO] crate lazau/rust-irc-server 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 lazau/rust-irc-server against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/lazau/rust-irc-server:/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" "-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] 8f7ab7709cdf5e0f8e27a0fb17cd0a3548741a1f903764d262c503e972cba74a [INFO] running `"docker" "start" "-a" "8f7ab7709cdf5e0f8e27a0fb17cd0a3548741a1f903764d262c503e972cba74a"` [INFO] [stderr] Checking hostname v0.1.3 [INFO] [stderr] Checking base64 v0.8.0 [INFO] [stderr] Checking thread_local v0.3.4 [INFO] [stderr] Checking serde_yaml v0.7.3 [INFO] [stderr] Checking tokio-io v0.1.3 [INFO] [stderr] Checking regex v0.2.2 [INFO] [stderr] Checking tokio-core v0.1.10 [INFO] [stderr] Checking tokio-proto v0.1.1 [INFO] [stderr] Checking env_logger v0.4.3 [INFO] [stderr] Checking handlebars v0.29.1 [INFO] [stderr] Checking hyper v0.11.9 [INFO] [stderr] Checking irc_server v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/debug/mod.rs:158:13 [INFO] [stderr] | [INFO] [stderr] 158 | configuration: configuration, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `configuration` [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/debug/mod.rs:160:13 [INFO] [stderr] | [INFO] [stderr] 160 | channels_to_nicks: channels_to_nicks, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `channels_to_nicks` [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/debug/mod.rs:161:13 [INFO] [stderr] | [INFO] [stderr] 161 | user_to_channels: user_to_channels, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `user_to_channels` [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/service/messages/commands/mod.rs:771:21 [INFO] [stderr] | [INFO] [stderr] 771 | mask: mask, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mask` [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/service/messages/mod.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | prefix: prefix, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `prefix` [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/service/messages/mod.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | command: command, [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/service/server.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | shared_state: shared_state, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `shared_state` [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/service/shared_state.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | hostname: hostname, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostname` [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/service/shared_state.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | configuration: configuration, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `configuration` [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/service/connection.rs:217:13 [INFO] [stderr] | [INFO] [stderr] 217 | server: server, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `server` [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/service/connection.rs:218:13 [INFO] [stderr] | [INFO] [stderr] 218 | shared_state: shared_state, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `shared_state` [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/service/connection.rs:219:13 [INFO] [stderr] | [INFO] [stderr] 219 | 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/service/connection.rs:642:29 [INFO] [stderr] | [INFO] [stderr] 642 | topic: topic, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `topic` [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/service/channel.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/service/channel.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | shared_state: shared_state, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `shared_state` [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/service/user.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | server: server, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `server` [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/service/user.rs:135:13 [INFO] [stderr] | [INFO] [stderr] 135 | 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/debug/mod.rs:158:13 [INFO] [stderr] | [INFO] [stderr] 158 | configuration: configuration, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `configuration` [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/debug/mod.rs:160:13 [INFO] [stderr] | [INFO] [stderr] 160 | channels_to_nicks: channels_to_nicks, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `channels_to_nicks` [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/debug/mod.rs:161:13 [INFO] [stderr] | [INFO] [stderr] 161 | user_to_channels: user_to_channels, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `user_to_channels` [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/service/messages/commands/mod.rs:771:21 [INFO] [stderr] | [INFO] [stderr] 771 | mask: mask, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mask` [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/service/messages/mod.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | prefix: prefix, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `prefix` [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/service/messages/mod.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | command: command, [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/service/server.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | shared_state: shared_state, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `shared_state` [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/service/shared_state.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | hostname: hostname, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostname` [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/service/shared_state.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | configuration: configuration, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `configuration` [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/service/connection.rs:217:13 [INFO] [stderr] | [INFO] [stderr] 217 | server: server, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `server` [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/service/connection.rs:218:13 [INFO] [stderr] | [INFO] [stderr] 218 | shared_state: shared_state, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `shared_state` [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/service/connection.rs:219:13 [INFO] [stderr] | [INFO] [stderr] 219 | 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/service/connection.rs:642:29 [INFO] [stderr] | [INFO] [stderr] 642 | topic: topic, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `topic` [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/service/channel.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/service/channel.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | shared_state: shared_state, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `shared_state` [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/service/user.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | server: server, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `server` [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/service/user.rs:135:13 [INFO] [stderr] | [INFO] [stderr] 135 | 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: unused import: `futures::stream::*` [INFO] [stderr] --> src/service/connection.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use futures::stream::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures::sink::*` [INFO] [stderr] --> src/service/connection.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use futures::sink::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures_cpupool::CpuPool` [INFO] [stderr] --> src/service/connection.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use futures_cpupool::CpuPool; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ops::Deref` [INFO] [stderr] --> src/service/connection.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::ops::Deref; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `user` [INFO] [stderr] --> src/service/connection.rs:12:20 [INFO] [stderr] | [INFO] [stderr] 12 | use super::{codec, user}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Channel` [INFO] [stderr] --> src/service/connection.rs:16:69 [INFO] [stderr] | [INFO] [stderr] 16 | use super::channel::{Identifier as ChannelIdentifier, ChannelError, Channel}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Message as UserMessage` [INFO] [stderr] --> src/service/connection.rs:18:25 [INFO] [stderr] | [INFO] [stderr] 18 | use super::user::{User, Message as UserMessage, Identifier as UserIdentifier, UserMode, SetMode}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures::stream::*` [INFO] [stderr] --> src/service/connection.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use futures::stream::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures::sink::*` [INFO] [stderr] --> src/service/connection.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use futures::sink::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures_cpupool::CpuPool` [INFO] [stderr] --> src/service/connection.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use futures_cpupool::CpuPool; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ops::Deref` [INFO] [stderr] --> src/service/connection.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::ops::Deref; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `user` [INFO] [stderr] --> src/service/connection.rs:12:20 [INFO] [stderr] | [INFO] [stderr] 12 | use super::{codec, user}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Channel` [INFO] [stderr] --> src/service/connection.rs:16:69 [INFO] [stderr] | [INFO] [stderr] 16 | use super::channel::{Identifier as ChannelIdentifier, ChannelError, Channel}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Message as UserMessage` [INFO] [stderr] --> src/service/connection.rs:18:25 [INFO] [stderr] | [INFO] [stderr] 18 | use super::user::{User, Message as UserMessage, Identifier as UserIdentifier, UserMode, SetMode}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `SerializeSeq`, `self` [INFO] [stderr] --> src/service/channel.rs:2:18 [INFO] [stderr] | [INFO] [stderr] 2 | use serde::ser::{self, SerializeSeq}; [INFO] [stderr] | ^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefCell` [INFO] [stderr] --> src/service/channel.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::cell::RefCell; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Mutex` [INFO] [stderr] --> src/service/channel.rs:6:22 [INFO] [stderr] | [INFO] [stderr] 6 | use std::sync::{Arc, Mutex}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/service/channel.rs:54:1 [INFO] [stderr] | [INFO] [stderr] 54 | / macro_rules! send_log_err { [INFO] [stderr] 55 | | ($tx:expr, $message:expr) => { [INFO] [stderr] 56 | | match $tx.try_send($message) { [INFO] [stderr] 57 | | Err(e) => debug!("Send error: {:?}.", e), [INFO] [stderr] ... | [INFO] [stderr] 60 | | } [INFO] [stderr] 61 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures::sync::mpsc` [INFO] [stderr] --> src/service/user.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use futures::sync::mpsc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures_cpupool::CpuPool` [INFO] [stderr] --> src/service/user.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use futures_cpupool::CpuPool; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `HashMap` [INFO] [stderr] --> src/service/user.rs:5:24 [INFO] [stderr] | [INFO] [stderr] 5 | use std::collections::{HashMap, HashSet}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `responses as Responses` [INFO] [stderr] --> src/service/user.rs:8:64 [INFO] [stderr] | [INFO] [stderr] 8 | use super::messages::commands::{Command, requests as Requests, responses as Responses}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `ChannelError`, `Channel` [INFO] [stderr] --> src/service/user.rs:10:55 [INFO] [stderr] | [INFO] [stderr] 10 | use super::channel::{Identifier as ChannelIdentifier, ChannelError, Channel}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/service/user.rs:119:1 [INFO] [stderr] | [INFO] [stderr] 119 | / macro_rules! send_log_err { [INFO] [stderr] 120 | | ($tx:expr, $message:expr) => { [INFO] [stderr] 121 | | match $tx.try_send($message) { [INFO] [stderr] 122 | | Err(e) => debug!("Send error: {:?}.", e), [INFO] [stderr] ... | [INFO] [stderr] 125 | | } [INFO] [stderr] 126 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `SerializeSeq`, `self` [INFO] [stderr] --> src/service/channel.rs:2:18 [INFO] [stderr] | [INFO] [stderr] 2 | use serde::ser::{self, SerializeSeq}; [INFO] [stderr] | ^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefCell` [INFO] [stderr] --> src/service/channel.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::cell::RefCell; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Mutex` [INFO] [stderr] --> src/service/channel.rs:6:22 [INFO] [stderr] | [INFO] [stderr] 6 | use std::sync::{Arc, Mutex}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/service/channel.rs:54:1 [INFO] [stderr] | [INFO] [stderr] 54 | / macro_rules! send_log_err { [INFO] [stderr] 55 | | ($tx:expr, $message:expr) => { [INFO] [stderr] 56 | | match $tx.try_send($message) { [INFO] [stderr] 57 | | Err(e) => debug!("Send error: {:?}.", e), [INFO] [stderr] ... | [INFO] [stderr] 60 | | } [INFO] [stderr] 61 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures::sync::mpsc` [INFO] [stderr] --> src/service/user.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use futures::sync::mpsc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures_cpupool::CpuPool` [INFO] [stderr] --> src/service/user.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use futures_cpupool::CpuPool; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `HashMap` [INFO] [stderr] --> src/service/user.rs:5:24 [INFO] [stderr] | [INFO] [stderr] 5 | use std::collections::{HashMap, HashSet}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `responses as Responses` [INFO] [stderr] --> src/service/user.rs:8:64 [INFO] [stderr] | [INFO] [stderr] 8 | use super::messages::commands::{Command, requests as Requests, responses as Responses}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `ChannelError`, `Channel` [INFO] [stderr] --> src/service/user.rs:10:55 [INFO] [stderr] | [INFO] [stderr] 10 | use super::channel::{Identifier as ChannelIdentifier, ChannelError, Channel}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/service/user.rs:119:1 [INFO] [stderr] | [INFO] [stderr] 119 | / macro_rules! send_log_err { [INFO] [stderr] 120 | | ($tx:expr, $message:expr) => { [INFO] [stderr] 121 | | match $tx.try_send($message) { [INFO] [stderr] 122 | | Err(e) => debug!("Send error: {:?}.", e), [INFO] [stderr] ... | [INFO] [stderr] 125 | | } [INFO] [stderr] 126 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures` [INFO] [stderr] --> src/service/user.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use futures::*; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `f` [INFO] [stderr] --> src/service/shared_state.rs:22:19 [INFO] [stderr] | [INFO] [stderr] 22 | fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { [INFO] [stderr] | ^ help: consider using `_f` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/service/connection.rs:305:17 [INFO] [stderr] | [INFO] [stderr] 305 | Err(e) => { [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mode_args` [INFO] [stderr] --> src/service/connection.rs:420:31 [INFO] [stderr] | [INFO] [stderr] 420 | mode_args, [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `mode_args: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `originator` [INFO] [stderr] --> src/service/connection.rs:484:44 [INFO] [stderr] | [INFO] [stderr] 484 | Command::PING(Requests::Ping { originator, target }) => { [INFO] [stderr] | ^^^^^^^^^^ help: try ignoring the field: `originator: _` [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures` [INFO] [stderr] --> src/service/user.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use futures::*; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `f` [INFO] [stderr] --> src/service/shared_state.rs:22:19 [INFO] [stderr] | [INFO] [stderr] 22 | fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { [INFO] [stderr] | ^ help: consider using `_f` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/service/connection.rs:305:17 [INFO] [stderr] | [INFO] [stderr] 305 | Err(e) => { [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mode_args` [INFO] [stderr] --> src/service/connection.rs:420:31 [INFO] [stderr] | [INFO] [stderr] 420 | mode_args, [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `mode_args: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `originator` [INFO] [stderr] --> src/service/connection.rs:484:44 [INFO] [stderr] | [INFO] [stderr] 484 | Command::PING(Requests::Ping { originator, target }) => { [INFO] [stderr] | ^^^^^^^^^^ help: try ignoring the field: `originator: _` [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `I` [INFO] [stderr] --> src/service/messages/mod.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | I, [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `S` [INFO] [stderr] --> src/service/messages/mod.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | S, [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `W` [INFO] [stderr] --> src/service/messages/mod.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | W, [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `O` [INFO] [stderr] --> src/service/messages/mod.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | O, [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Server` [INFO] [stderr] --> src/service/connection.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | Server, // unimplemented. [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/debug/mod.rs:33:23 [INFO] [stderr] | [INFO] [stderr] 33 | user_to_channels: HashMap)>, [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/debug/mod.rs:126:25 [INFO] [stderr] | [INFO] [stderr] 126 | nick_to_id.get(nick).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&nick_to_id[nick]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: the `u @ _` pattern can be written as just `u` [INFO] [stderr] --> src/service/messages/commands/requests.rs:298:13 [INFO] [stderr] | [INFO] [stderr] 298 | u @ _ => Ok(StatsQuery::UNKNOWN(u.to_string())), [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:305:9 [INFO] [stderr] | [INFO] [stderr] 305 | write!(f, "NICK"); [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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:312:9 [INFO] [stderr] | [INFO] [stderr] 312 | write!(f, "PASS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:319:9 [INFO] [stderr] | [INFO] [stderr] 319 | write!(f, "USER"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:326:9 [INFO] [stderr] | [INFO] [stderr] 326 | write!(f, "SERVER"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:333:9 [INFO] [stderr] | [INFO] [stderr] 333 | write!(f, "OPER"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:340:9 [INFO] [stderr] | [INFO] [stderr] 340 | write!(f, "SERVICE"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:347:9 [INFO] [stderr] | [INFO] [stderr] 347 | write!(f, "QUIT"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:354:9 [INFO] [stderr] | [INFO] [stderr] 354 | write!(f, "SQUIT"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/service/messages/commands/requests.rs:361:9 [INFO] [stderr] | [INFO] [stderr] 361 | / match &self.join { [INFO] [stderr] 362 | | &JoinChannels::PartAll => { [INFO] [stderr] 363 | | error!("Trying to serialize JOIN: PartAll. {:?}.", self); [INFO] [stderr] 364 | | Ok(()) [INFO] [stderr] ... | [INFO] [stderr] 378 | | } [INFO] [stderr] 379 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 361 | match self.join { [INFO] [stderr] 362 | JoinChannels::PartAll => { [INFO] [stderr] 363 | error!("Trying to serialize JOIN: PartAll. {:?}.", self); [INFO] [stderr] 364 | Ok(()) [INFO] [stderr] 365 | } [INFO] [stderr] 366 | JoinChannels::KeyedChannels(_) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:412:9 [INFO] [stderr] | [INFO] [stderr] 412 | write!(f, "TOPIC"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:419:9 [INFO] [stderr] | [INFO] [stderr] 419 | write!(f, "NAMES"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:426:9 [INFO] [stderr] | [INFO] [stderr] 426 | write!(f, "LIST"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:433:9 [INFO] [stderr] | [INFO] [stderr] 433 | write!(f, "INVITE"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:440:9 [INFO] [stderr] | [INFO] [stderr] 440 | write!(f, "KICK"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:447:9 [INFO] [stderr] | [INFO] [stderr] 447 | write!(f, "MOTD"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:454:9 [INFO] [stderr] | [INFO] [stderr] 454 | write!(f, "LUSERS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:461:9 [INFO] [stderr] | [INFO] [stderr] 461 | write!(f, "VERSION"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:468:9 [INFO] [stderr] | [INFO] [stderr] 468 | write!(f, "STATS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:475:9 [INFO] [stderr] | [INFO] [stderr] 475 | write!(f, "LINKS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:482:9 [INFO] [stderr] | [INFO] [stderr] 482 | write!(f, "TIME"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:489:9 [INFO] [stderr] | [INFO] [stderr] 489 | write!(f, "CONNECT"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:496:9 [INFO] [stderr] | [INFO] [stderr] 496 | write!(f, "TRACE"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:503:9 [INFO] [stderr] | [INFO] [stderr] 503 | write!(f, "ADMIN"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:510:9 [INFO] [stderr] | [INFO] [stderr] 510 | write!(f, "INFO"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:524:9 [INFO] [stderr] | [INFO] [stderr] 524 | write!(f, "NOTICE"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:531:9 [INFO] [stderr] | [INFO] [stderr] 531 | write!(f, "SERVLIST"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:538:9 [INFO] [stderr] | [INFO] [stderr] 538 | write!(f, "SQUERY"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:545:9 [INFO] [stderr] | [INFO] [stderr] 545 | write!(f, "WHO"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:552:9 [INFO] [stderr] | [INFO] [stderr] 552 | write!(f, "WHOIS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:559:9 [INFO] [stderr] | [INFO] [stderr] 559 | write!(f, "WHOWAS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:566:9 [INFO] [stderr] | [INFO] [stderr] 566 | write!(f, "KILL"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:573:9 [INFO] [stderr] | [INFO] [stderr] 573 | write!(f, "PING"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:590:9 [INFO] [stderr] | [INFO] [stderr] 590 | write!(f, "ERROR"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:597:9 [INFO] [stderr] | [INFO] [stderr] 597 | write!(f, "AWAY"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:604:9 [INFO] [stderr] | [INFO] [stderr] 604 | write!(f, "REHASH"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:611:9 [INFO] [stderr] | [INFO] [stderr] 611 | write!(f, "RESTART"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:618:9 [INFO] [stderr] | [INFO] [stderr] 618 | write!(f, "SUMMON"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:625:9 [INFO] [stderr] | [INFO] [stderr] 625 | write!(f, "USERS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:632:9 [INFO] [stderr] | [INFO] [stderr] 632 | write!(f, "WALLOPS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:639:9 [INFO] [stderr] | [INFO] [stderr] 639 | write!(f, "USERHOST"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:646:9 [INFO] [stderr] | [INFO] [stderr] 646 | write!(f, "ISON"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/service/messages/commands/mod.rs:221:9 [INFO] [stderr] | [INFO] [stderr] 221 | / match self { [INFO] [stderr] 222 | | &Command::NICK(ref c) => write!(f, "{}", c), [INFO] [stderr] 223 | | &Command::PASS(ref c) => write!(f, "{}", c), [INFO] [stderr] 224 | | &Command::USER(ref c) => write!(f, "{}", c), [INFO] [stderr] ... | [INFO] [stderr] 406 | | &Command::RPL_BOUNCE(ref c) => write!(f, "{}", c), [INFO] [stderr] 407 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 221 | match *self { [INFO] [stderr] 222 | Command::NICK(ref c) => write!(f, "{}", c), [INFO] [stderr] 223 | Command::PASS(ref c) => write!(f, "{}", c), [INFO] [stderr] 224 | Command::USER(ref c) => write!(f, "{}", c), [INFO] [stderr] 225 | Command::SERVER(ref c) => write!(f, "{}", c), [INFO] [stderr] 226 | Command::OPER(ref c) => write!(f, "{}", c), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/messages/commands/mod.rs:418:11 [INFO] [stderr] | [INFO] [stderr] 418 | while rem.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!rem.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/messages/commands/mod.rs:431:12 [INFO] [stderr] | [INFO] [stderr] 431 | if next_param.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `next_param.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 43 [INFO] [stderr] --> src/service/messages/commands/mod.rs:464:5 [INFO] [stderr] | [INFO] [stderr] 464 | / fn from_str(s: &str) -> Result { [INFO] [stderr] 465 | | let (command, r) = next_token(s); [INFO] [stderr] 466 | | [INFO] [stderr] 467 | | match command.to_uppercase().as_ref() { [INFO] [stderr] ... | [INFO] [stderr] 1130 | | } [INFO] [stderr] 1131 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:545:56 [INFO] [stderr] | [INFO] [stderr] 545 | let chan: Vec = chan.split(",").map(|s| s.to_string()).collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:547:32 [INFO] [stderr] | [INFO] [stderr] 547 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:561:40 [INFO] [stderr] | [INFO] [stderr] 561 | chan.split(",").map(|s| s.to_string()).collect(), [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:571:32 [INFO] [stderr] | [INFO] [stderr] 571 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:603:32 [INFO] [stderr] | [INFO] [stderr] 603 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:613:33 [INFO] [stderr] | [INFO] [stderr] 613 | s.split(",").map(|s| s.to_string()).collect() [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:616:33 [INFO] [stderr] | [INFO] [stderr] 616 | s.split(",").map(|s| s.to_string()).collect() [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:633:32 [INFO] [stderr] | [INFO] [stderr] 633 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:637:32 [INFO] [stderr] | [INFO] [stderr] 637 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:726:32 [INFO] [stderr] | [INFO] [stderr] 726 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:737:32 [INFO] [stderr] | [INFO] [stderr] 737 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/messages/commands/mod.rs:764:20 [INFO] [stderr] | [INFO] [stderr] 764 | if p.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/service/messages/commands/mod.rs:779:17 [INFO] [stderr] | [INFO] [stderr] 779 | / let parsed; [INFO] [stderr] 780 | | if p.len() == 1 { [INFO] [stderr] 781 | | parsed = Command::WHOIS(requests::Whois { [INFO] [stderr] 782 | | target: None, [INFO] [stderr] ... | [INFO] [stderr] 796 | | }); [INFO] [stderr] 797 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 779 | let parsed = if p.len() == 1 { Command::WHOIS(requests::Whois { [INFO] [stderr] 780 | target: None, [INFO] [stderr] 781 | masks: rf!(p, 0, String) [INFO] [stderr] 782 | .split(",") [INFO] [stderr] 783 | .map(|s| s.to_string()) [INFO] [stderr] 784 | .collect(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:784:36 [INFO] [stderr] | [INFO] [stderr] 784 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:793:36 [INFO] [stderr] | [INFO] [stderr] 793 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:805:32 [INFO] [stderr] | [INFO] [stderr] 805 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/service/messages/mod.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / fn next_token<'a>(s: &'a str) -> (&'a str, &'a str) { [INFO] [stderr] 9 | | match s.find(' ') { [INFO] [stderr] 10 | | Some(idx) => { [INFO] [stderr] 11 | | let (a, b) = s.split_at(idx); [INFO] [stderr] ... | [INFO] [stderr] 15 | | } [INFO] [stderr] 16 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/service/messages/mod.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / match &self.prefix { [INFO] [stderr] 47 | | &Some(ref p) => { [INFO] [stderr] 48 | | if p.len() > 0 { [INFO] [stderr] 49 | | write!(f, ":{} {}", p, self.command) [INFO] [stderr] ... | [INFO] [stderr] 55 | | &None => write!(f, "{}", self.command), [INFO] [stderr] 56 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 46 | match self.prefix { [INFO] [stderr] 47 | Some(ref p) => { [INFO] [stderr] 48 | if p.len() > 0 { [INFO] [stderr] 49 | write!(f, ":{} {}", p, self.command) [INFO] [stderr] 50 | } else { [INFO] [stderr] 51 | // Trick to allow disabling prefix. [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/messages/mod.rs:48:20 [INFO] [stderr] | [INFO] [stderr] 48 | if p.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/service/messages/mod.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | / let mut prefix = None; [INFO] [stderr] 68 | | if s.starts_with(":") { [INFO] [stderr] 69 | | let (a, b) = next_token(s); [INFO] [stderr] 70 | | remainder = b; [INFO] [stderr] 71 | | prefix = Some(a[1..].to_string()); [INFO] [stderr] 72 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let prefix = if s.starts_with(":") { ..; Some(a[1..].to_string()) } else { None };` [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: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/mod.rs:68:26 [INFO] [stderr] | [INFO] [stderr] 68 | if s.starts_with(":") { [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/messages/mod.rs:74:12 [INFO] [stderr] | [INFO] [stderr] 74 | if remainder.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `remainder.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/service/server.rs:77:5 [INFO] [stderr] | [INFO] [stderr] 77 | / pub fn channels<'a>( [INFO] [stderr] 78 | | &'a self, [INFO] [stderr] 79 | | ) -> std::collections::hash_map::Iter<'a, ChannelIdentifier, Channel> { [INFO] [stderr] 80 | | self.channels.iter() [INFO] [stderr] 81 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/service/server.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | / pub fn users<'a>( [INFO] [stderr] 88 | | &'a self, [INFO] [stderr] 89 | | ) -> std::collections::hash_map::Keys<'a, UserIdentifier, ConnectionTX> { [INFO] [stderr] 90 | | self.users.keys() [INFO] [stderr] 91 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/server.rs:96:19 [INFO] [stderr] | [INFO] [stderr] 96 | channels: &Vec<(String, Option)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(String, Option)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/service/server.rs:97:10 [INFO] [stderr] | [INFO] [stderr] 97 | ) -> Vec, Vec), ChannelError>> { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/server.rs:125:19 [INFO] [stderr] | [INFO] [stderr] 125 | channels: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/server.rs:148:60 [INFO] [stderr] | [INFO] [stderr] 148 | pub fn send(&mut self, user: &UserIdentifier, targets: &Vec, message: &String) { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/service/server.rs:148:83 [INFO] [stderr] | [INFO] [stderr] 148 | pub fn send(&mut self, user: &UserIdentifier, targets: &Vec, message: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/service/connection.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | Client(User), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 35 | Client(Box), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/service/connection.rs:138:18 [INFO] [stderr] | [INFO] [stderr] 138 | .map(|m| ConnectionEvent::Socket(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ConnectionEvent::Socket` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `I` [INFO] [stderr] --> src/service/messages/mod.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | I, [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `S` [INFO] [stderr] --> src/service/messages/mod.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | S, [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `W` [INFO] [stderr] --> src/service/messages/mod.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | W, [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `O` [INFO] [stderr] --> src/service/messages/mod.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | O, [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Server` [INFO] [stderr] --> src/service/connection.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | Server, // unimplemented. [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/connection.rs:442:47 [INFO] [stderr] | [INFO] [stderr] 442 | let set = if mode.starts_with("+") { [INFO] [stderr] | ^^^ help: try using a char instead: `'+'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/connection.rs:444:44 [INFO] [stderr] | [INFO] [stderr] 444 | } else if mode.starts_with("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the `u @ _` pattern can be written as just `u` [INFO] [stderr] --> src/service/connection.rs:527:13 [INFO] [stderr] | [INFO] [stderr] 527 | u @ _ => { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/service/connection.rs:624:23 [INFO] [stderr] | [INFO] [stderr] 624 | channel_name: &String, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 624 | channel_name: &str, [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `channel_name.clone()` to [INFO] [stderr] | [INFO] [stderr] 672 | channel: channel_name.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `channel_name.clone()` to [INFO] [stderr] | [INFO] [stderr] 678 | channel: channel_name.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/debug/mod.rs:33:23 [INFO] [stderr] | [INFO] [stderr] 33 | user_to_channels: HashMap)>, [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/service/channel.rs:29:28 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn from_name(name: &String) -> Self { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 29 | pub fn from_name(name: &str) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `name.clone()` to [INFO] [stderr] | [INFO] [stderr] 30 | Self { name: name.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/service/channel.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | / pub fn users<'a>( [INFO] [stderr] 99 | | &'a self, [INFO] [stderr] 100 | | ) -> std::collections::hash_map::Keys<'a, UserIdentifier, ConnectionTX> { [INFO] [stderr] 101 | | self.users.keys() [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/service/channel.rs:157:65 [INFO] [stderr] | [INFO] [stderr] 157 | pub fn privmsg(&mut self, source: &UserIdentifier, message: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/debug/mod.rs:126:25 [INFO] [stderr] | [INFO] [stderr] 126 | nick_to_id.get(nick).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&nick_to_id[nick]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/user.rs:92:17 [INFO] [stderr] | [INFO] [stderr] 92 | assert!(self.nickname.len() > 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.nickname.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/service/user.rs:155:5 [INFO] [stderr] | [INFO] [stderr] 155 | / pub fn channels<'a>(&'a self) -> std::collections::hash_set::Iter<'a, ChannelIdentifier> { [INFO] [stderr] 156 | | self.channels.iter() [INFO] [stderr] 157 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/user.rs:159:53 [INFO] [stderr] | [INFO] [stderr] 159 | pub fn set_mode(&mut self, set: &SetMode, mode: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[UserMode]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/service/user.rs:162:16 [INFO] [stderr] | [INFO] [stderr] 162 | if match set { [INFO] [stderr] | ________________^ [INFO] [stderr] 163 | | &SetMode::Add => self.modes.insert(m.clone()), [INFO] [stderr] 164 | | &SetMode::Remove => self.modes.remove(&m), [INFO] [stderr] 165 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 162 | if match *set { [INFO] [stderr] 163 | SetMode::Add => self.modes.insert(m.clone()), [INFO] [stderr] 164 | SetMode::Remove => self.modes.remove(&m), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/user.rs:180:12 [INFO] [stderr] | [INFO] [stderr] 180 | if modified.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `modified.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/service/user.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | / match set { [INFO] [stderr] 189 | | &SetMode::Add => mode_string = format!("+{}", mode_string), [INFO] [stderr] 190 | | &SetMode::Remove => mode_string = format!("-{}", mode_string), [INFO] [stderr] 191 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 188 | match *set { [INFO] [stderr] 189 | SetMode::Add => mode_string = format!("+{}", mode_string), [INFO] [stderr] 190 | SetMode::Remove => mode_string = format!("-{}", mode_string), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/service/user.rs:218:15 [INFO] [stderr] | [INFO] [stderr] 218 | match s.as_ref() { [INFO] [stderr] | ^^^^^^^^^^ help: try this: `s` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/service/user.rs:236:13 [INFO] [stderr] | [INFO] [stderr] 236 | / match self { [INFO] [stderr] 237 | | &UserMode::Away => "a", [INFO] [stderr] 238 | | &UserMode::Invisible => "i", [INFO] [stderr] 239 | | &UserMode::WallOps => "w", [INFO] [stderr] ... | [INFO] [stderr] 243 | | &UserMode::ServerNotices => "s", [INFO] [stderr] 244 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 236 | match *self { [INFO] [stderr] 237 | UserMode::Away => "a", [INFO] [stderr] 238 | UserMode::Invisible => "i", [INFO] [stderr] 239 | UserMode::WallOps => "w", [INFO] [stderr] 240 | UserMode::Restricted => "r", [INFO] [stderr] 241 | UserMode::Operator => "o", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the `u @ _` pattern can be written as just `u` [INFO] [stderr] --> src/service/messages/commands/requests.rs:298:13 [INFO] [stderr] | [INFO] [stderr] 298 | u @ _ => Ok(StatsQuery::UNKNOWN(u.to_string())), [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:305:9 [INFO] [stderr] | [INFO] [stderr] 305 | write!(f, "NICK"); [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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:312:9 [INFO] [stderr] | [INFO] [stderr] 312 | write!(f, "PASS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:319:9 [INFO] [stderr] | [INFO] [stderr] 319 | write!(f, "USER"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:326:9 [INFO] [stderr] | [INFO] [stderr] 326 | write!(f, "SERVER"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:333:9 [INFO] [stderr] | [INFO] [stderr] 333 | write!(f, "OPER"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:340:9 [INFO] [stderr] | [INFO] [stderr] 340 | write!(f, "SERVICE"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:347:9 [INFO] [stderr] | [INFO] [stderr] 347 | write!(f, "QUIT"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:354:9 [INFO] [stderr] | [INFO] [stderr] 354 | write!(f, "SQUIT"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/service/messages/commands/requests.rs:361:9 [INFO] [stderr] | [INFO] [stderr] 361 | / match &self.join { [INFO] [stderr] 362 | | &JoinChannels::PartAll => { [INFO] [stderr] 363 | | error!("Trying to serialize JOIN: PartAll. {:?}.", self); [INFO] [stderr] 364 | | Ok(()) [INFO] [stderr] ... | [INFO] [stderr] 378 | | } [INFO] [stderr] 379 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 361 | match self.join { [INFO] [stderr] 362 | JoinChannels::PartAll => { [INFO] [stderr] 363 | error!("Trying to serialize JOIN: PartAll. {:?}.", self); [INFO] [stderr] 364 | Ok(()) [INFO] [stderr] 365 | } [INFO] [stderr] 366 | JoinChannels::KeyedChannels(_) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:412:9 [INFO] [stderr] | [INFO] [stderr] 412 | write!(f, "TOPIC"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:419:9 [INFO] [stderr] | [INFO] [stderr] 419 | write!(f, "NAMES"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:426:9 [INFO] [stderr] | [INFO] [stderr] 426 | write!(f, "LIST"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:433:9 [INFO] [stderr] | [INFO] [stderr] 433 | write!(f, "INVITE"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:440:9 [INFO] [stderr] | [INFO] [stderr] 440 | write!(f, "KICK"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:447:9 [INFO] [stderr] | [INFO] [stderr] 447 | write!(f, "MOTD"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:454:9 [INFO] [stderr] | [INFO] [stderr] 454 | write!(f, "LUSERS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:461:9 [INFO] [stderr] | [INFO] [stderr] 461 | write!(f, "VERSION"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:468:9 [INFO] [stderr] | [INFO] [stderr] 468 | write!(f, "STATS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:475:9 [INFO] [stderr] | [INFO] [stderr] 475 | write!(f, "LINKS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:482:9 [INFO] [stderr] | [INFO] [stderr] 482 | write!(f, "TIME"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:489:9 [INFO] [stderr] | [INFO] [stderr] 489 | write!(f, "CONNECT"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:496:9 [INFO] [stderr] | [INFO] [stderr] 496 | write!(f, "TRACE"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:503:9 [INFO] [stderr] | [INFO] [stderr] 503 | write!(f, "ADMIN"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:510:9 [INFO] [stderr] | [INFO] [stderr] 510 | write!(f, "INFO"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:524:9 [INFO] [stderr] | [INFO] [stderr] 524 | write!(f, "NOTICE"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:531:9 [INFO] [stderr] | [INFO] [stderr] 531 | write!(f, "SERVLIST"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:538:9 [INFO] [stderr] | [INFO] [stderr] 538 | write!(f, "SQUERY"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:545:9 [INFO] [stderr] | [INFO] [stderr] 545 | write!(f, "WHO"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:552:9 [INFO] [stderr] | [INFO] [stderr] 552 | write!(f, "WHOIS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:559:9 [INFO] [stderr] | [INFO] [stderr] 559 | write!(f, "WHOWAS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:566:9 [INFO] [stderr] | [INFO] [stderr] 566 | write!(f, "KILL"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:573:9 [INFO] [stderr] | [INFO] [stderr] 573 | write!(f, "PING"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:590:9 [INFO] [stderr] | [INFO] [stderr] 590 | write!(f, "ERROR"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:597:9 [INFO] [stderr] | [INFO] [stderr] 597 | write!(f, "AWAY"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:604:9 [INFO] [stderr] | [INFO] [stderr] 604 | write!(f, "REHASH"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:611:9 [INFO] [stderr] | [INFO] [stderr] 611 | write!(f, "RESTART"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:618:9 [INFO] [stderr] | [INFO] [stderr] 618 | write!(f, "SUMMON"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:625:9 [INFO] [stderr] | [INFO] [stderr] 625 | write!(f, "USERS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:632:9 [INFO] [stderr] | [INFO] [stderr] 632 | write!(f, "WALLOPS"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:639:9 [INFO] [stderr] | [INFO] [stderr] 639 | write!(f, "USERHOST"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/service/messages/commands/requests.rs:646:9 [INFO] [stderr] | [INFO] [stderr] 646 | write!(f, "ISON"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/service/messages/commands/mod.rs:221:9 [INFO] [stderr] | [INFO] [stderr] 221 | / match self { [INFO] [stderr] 222 | | &Command::NICK(ref c) => write!(f, "{}", c), [INFO] [stderr] 223 | | &Command::PASS(ref c) => write!(f, "{}", c), [INFO] [stderr] 224 | | &Command::USER(ref c) => write!(f, "{}", c), [INFO] [stderr] ... | [INFO] [stderr] 406 | | &Command::RPL_BOUNCE(ref c) => write!(f, "{}", c), [INFO] [stderr] 407 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 221 | match *self { [INFO] [stderr] 222 | Command::NICK(ref c) => write!(f, "{}", c), [INFO] [stderr] 223 | Command::PASS(ref c) => write!(f, "{}", c), [INFO] [stderr] 224 | Command::USER(ref c) => write!(f, "{}", c), [INFO] [stderr] 225 | Command::SERVER(ref c) => write!(f, "{}", c), [INFO] [stderr] 226 | Command::OPER(ref c) => write!(f, "{}", c), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/messages/commands/mod.rs:418:11 [INFO] [stderr] | [INFO] [stderr] 418 | while rem.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!rem.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/messages/commands/mod.rs:431:12 [INFO] [stderr] | [INFO] [stderr] 431 | if next_param.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `next_param.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 43 [INFO] [stderr] --> src/service/messages/commands/mod.rs:464:5 [INFO] [stderr] | [INFO] [stderr] 464 | / fn from_str(s: &str) -> Result { [INFO] [stderr] 465 | | let (command, r) = next_token(s); [INFO] [stderr] 466 | | [INFO] [stderr] 467 | | match command.to_uppercase().as_ref() { [INFO] [stderr] ... | [INFO] [stderr] 1130 | | } [INFO] [stderr] 1131 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:545:56 [INFO] [stderr] | [INFO] [stderr] 545 | let chan: Vec = chan.split(",").map(|s| s.to_string()).collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:547:32 [INFO] [stderr] | [INFO] [stderr] 547 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:561:40 [INFO] [stderr] | [INFO] [stderr] 561 | chan.split(",").map(|s| s.to_string()).collect(), [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:571:32 [INFO] [stderr] | [INFO] [stderr] 571 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:603:32 [INFO] [stderr] | [INFO] [stderr] 603 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:613:33 [INFO] [stderr] | [INFO] [stderr] 613 | s.split(",").map(|s| s.to_string()).collect() [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:616:33 [INFO] [stderr] | [INFO] [stderr] 616 | s.split(",").map(|s| s.to_string()).collect() [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:633:32 [INFO] [stderr] | [INFO] [stderr] 633 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:637:32 [INFO] [stderr] | [INFO] [stderr] 637 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:726:32 [INFO] [stderr] | [INFO] [stderr] 726 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:737:32 [INFO] [stderr] | [INFO] [stderr] 737 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/messages/commands/mod.rs:764:20 [INFO] [stderr] | [INFO] [stderr] 764 | if p.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/service/messages/commands/mod.rs:779:17 [INFO] [stderr] | [INFO] [stderr] 779 | / let parsed; [INFO] [stderr] 780 | | if p.len() == 1 { [INFO] [stderr] 781 | | parsed = Command::WHOIS(requests::Whois { [INFO] [stderr] 782 | | target: None, [INFO] [stderr] ... | [INFO] [stderr] 796 | | }); [INFO] [stderr] 797 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 779 | let parsed = if p.len() == 1 { Command::WHOIS(requests::Whois { [INFO] [stderr] 780 | target: None, [INFO] [stderr] 781 | masks: rf!(p, 0, String) [INFO] [stderr] 782 | .split(",") [INFO] [stderr] 783 | .map(|s| s.to_string()) [INFO] [stderr] 784 | .collect(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:784:36 [INFO] [stderr] | [INFO] [stderr] 784 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:793:36 [INFO] [stderr] | [INFO] [stderr] 793 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/commands/mod.rs:805:32 [INFO] [stderr] | [INFO] [stderr] 805 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/service/messages/mod.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / fn next_token<'a>(s: &'a str) -> (&'a str, &'a str) { [INFO] [stderr] 9 | | match s.find(' ') { [INFO] [stderr] 10 | | Some(idx) => { [INFO] [stderr] 11 | | let (a, b) = s.split_at(idx); [INFO] [stderr] ... | [INFO] [stderr] 15 | | } [INFO] [stderr] 16 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/service/messages/mod.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / match &self.prefix { [INFO] [stderr] 47 | | &Some(ref p) => { [INFO] [stderr] 48 | | if p.len() > 0 { [INFO] [stderr] 49 | | write!(f, ":{} {}", p, self.command) [INFO] [stderr] ... | [INFO] [stderr] 55 | | &None => write!(f, "{}", self.command), [INFO] [stderr] 56 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 46 | match self.prefix { [INFO] [stderr] 47 | Some(ref p) => { [INFO] [stderr] 48 | if p.len() > 0 { [INFO] [stderr] 49 | write!(f, ":{} {}", p, self.command) [INFO] [stderr] 50 | } else { [INFO] [stderr] 51 | // Trick to allow disabling prefix. [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/messages/mod.rs:48:20 [INFO] [stderr] | [INFO] [stderr] 48 | if p.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/service/messages/mod.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | / let mut prefix = None; [INFO] [stderr] 68 | | if s.starts_with(":") { [INFO] [stderr] 69 | | let (a, b) = next_token(s); [INFO] [stderr] 70 | | remainder = b; [INFO] [stderr] 71 | | prefix = Some(a[1..].to_string()); [INFO] [stderr] 72 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let prefix = if s.starts_with(":") { ..; Some(a[1..].to_string()) } else { None };` [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: single-character string constant used as pattern [INFO] [stderr] --> src/service/messages/mod.rs:68:26 [INFO] [stderr] | [INFO] [stderr] 68 | if s.starts_with(":") { [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/messages/mod.rs:74:12 [INFO] [stderr] | [INFO] [stderr] 74 | if remainder.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `remainder.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/service/server.rs:77:5 [INFO] [stderr] | [INFO] [stderr] 77 | / pub fn channels<'a>( [INFO] [stderr] 78 | | &'a self, [INFO] [stderr] 79 | | ) -> std::collections::hash_map::Iter<'a, ChannelIdentifier, Channel> { [INFO] [stderr] 80 | | self.channels.iter() [INFO] [stderr] 81 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/service/server.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | / pub fn users<'a>( [INFO] [stderr] 88 | | &'a self, [INFO] [stderr] 89 | | ) -> std::collections::hash_map::Keys<'a, UserIdentifier, ConnectionTX> { [INFO] [stderr] 90 | | self.users.keys() [INFO] [stderr] 91 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/server.rs:96:19 [INFO] [stderr] | [INFO] [stderr] 96 | channels: &Vec<(String, Option)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(String, Option)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/service/server.rs:97:10 [INFO] [stderr] | [INFO] [stderr] 97 | ) -> Vec, Vec), ChannelError>> { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/server.rs:125:19 [INFO] [stderr] | [INFO] [stderr] 125 | channels: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/server.rs:148:60 [INFO] [stderr] | [INFO] [stderr] 148 | pub fn send(&mut self, user: &UserIdentifier, targets: &Vec, message: &String) { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/service/server.rs:148:83 [INFO] [stderr] | [INFO] [stderr] 148 | pub fn send(&mut self, user: &UserIdentifier, targets: &Vec, message: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/service/connection.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | Client(User), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 35 | Client(Box), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/service/connection.rs:138:18 [INFO] [stderr] | [INFO] [stderr] 138 | .map(|m| ConnectionEvent::Socket(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ConnectionEvent::Socket` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/connection.rs:442:47 [INFO] [stderr] | [INFO] [stderr] 442 | let set = if mode.starts_with("+") { [INFO] [stderr] | ^^^ help: try using a char instead: `'+'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/service/connection.rs:444:44 [INFO] [stderr] | [INFO] [stderr] 444 | } else if mode.starts_with("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the `u @ _` pattern can be written as just `u` [INFO] [stderr] --> src/service/connection.rs:527:13 [INFO] [stderr] | [INFO] [stderr] 527 | u @ _ => { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/service/connection.rs:624:23 [INFO] [stderr] | [INFO] [stderr] 624 | channel_name: &String, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 624 | channel_name: &str, [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `channel_name.clone()` to [INFO] [stderr] | [INFO] [stderr] 672 | channel: channel_name.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `channel_name.clone()` to [INFO] [stderr] | [INFO] [stderr] 678 | channel: channel_name.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/service/channel.rs:29:28 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn from_name(name: &String) -> Self { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 29 | pub fn from_name(name: &str) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `name.clone()` to [INFO] [stderr] | [INFO] [stderr] 30 | Self { name: name.to_string() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/service/channel.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | / pub fn users<'a>( [INFO] [stderr] 99 | | &'a self, [INFO] [stderr] 100 | | ) -> std::collections::hash_map::Keys<'a, UserIdentifier, ConnectionTX> { [INFO] [stderr] 101 | | self.users.keys() [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/service/channel.rs:157:65 [INFO] [stderr] | [INFO] [stderr] 157 | pub fn privmsg(&mut self, source: &UserIdentifier, message: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/user.rs:92:17 [INFO] [stderr] | [INFO] [stderr] 92 | assert!(self.nickname.len() > 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.nickname.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/service/user.rs:155:5 [INFO] [stderr] | [INFO] [stderr] 155 | / pub fn channels<'a>(&'a self) -> std::collections::hash_set::Iter<'a, ChannelIdentifier> { [INFO] [stderr] 156 | | self.channels.iter() [INFO] [stderr] 157 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/user.rs:159:53 [INFO] [stderr] | [INFO] [stderr] 159 | pub fn set_mode(&mut self, set: &SetMode, mode: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[UserMode]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/service/user.rs:162:16 [INFO] [stderr] | [INFO] [stderr] 162 | if match set { [INFO] [stderr] | ________________^ [INFO] [stderr] 163 | | &SetMode::Add => self.modes.insert(m.clone()), [INFO] [stderr] 164 | | &SetMode::Remove => self.modes.remove(&m), [INFO] [stderr] 165 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 162 | if match *set { [INFO] [stderr] 163 | SetMode::Add => self.modes.insert(m.clone()), [INFO] [stderr] 164 | SetMode::Remove => self.modes.remove(&m), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/service/user.rs:180:12 [INFO] [stderr] | [INFO] [stderr] 180 | if modified.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `modified.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/service/user.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | / match set { [INFO] [stderr] 189 | | &SetMode::Add => mode_string = format!("+{}", mode_string), [INFO] [stderr] 190 | | &SetMode::Remove => mode_string = format!("-{}", mode_string), [INFO] [stderr] 191 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 188 | match *set { [INFO] [stderr] 189 | SetMode::Add => mode_string = format!("+{}", mode_string), [INFO] [stderr] 190 | SetMode::Remove => mode_string = format!("-{}", mode_string), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/service/user.rs:218:15 [INFO] [stderr] | [INFO] [stderr] 218 | match s.as_ref() { [INFO] [stderr] | ^^^^^^^^^^ help: try this: `s` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/service/user.rs:236:13 [INFO] [stderr] | [INFO] [stderr] 236 | / match self { [INFO] [stderr] 237 | | &UserMode::Away => "a", [INFO] [stderr] 238 | | &UserMode::Invisible => "i", [INFO] [stderr] 239 | | &UserMode::WallOps => "w", [INFO] [stderr] ... | [INFO] [stderr] 243 | | &UserMode::ServerNotices => "s", [INFO] [stderr] 244 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 236 | match *self { [INFO] [stderr] 237 | UserMode::Away => "a", [INFO] [stderr] 238 | UserMode::Invisible => "i", [INFO] [stderr] 239 | UserMode::WallOps => "w", [INFO] [stderr] 240 | UserMode::Restricted => "r", [INFO] [stderr] 241 | UserMode::Operator => "o", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:40:63 [INFO] [stderr] | [INFO] [stderr] 40 | let file = std::fs::File::create(matches.opt_str("g").unwrap_or("config.yaml".to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "config.yaml".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:48:34 [INFO] [stderr] | [INFO] [stderr] 48 | matches.opt_str("c").unwrap_or("config.yaml".to_string()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "config.yaml".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:40:63 [INFO] [stderr] | [INFO] [stderr] 40 | let file = std::fs::File::create(matches.opt_str("g").unwrap_or("config.yaml".to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "config.yaml".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:48:34 [INFO] [stderr] | [INFO] [stderr] 48 | matches.opt_str("c").unwrap_or("config.yaml".to_string()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "config.yaml".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 26.22s [INFO] running `"docker" "inspect" "8f7ab7709cdf5e0f8e27a0fb17cd0a3548741a1f903764d262c503e972cba74a"` [INFO] running `"docker" "rm" "-f" "8f7ab7709cdf5e0f8e27a0fb17cd0a3548741a1f903764d262c503e972cba74a"` [INFO] [stdout] 8f7ab7709cdf5e0f8e27a0fb17cd0a3548741a1f903764d262c503e972cba74a