[INFO] cloning repository https://github.com/adedomin/r8ball [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/adedomin/r8ball" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fadedomin%2Fr8ball", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fadedomin%2Fr8ball'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 7a7b6349dc6d8aa9e795827f05b2fe72096a8707 [INFO] linting adedomin/r8ball against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fadedomin%2Fr8ball" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/adedomin/r8ball [INFO] finished tweaking git repo https://github.com/adedomin/r8ball [INFO] tweaked toml for git repo https://github.com/adedomin/r8ball written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/adedomin/r8ball on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/adedomin/r8ball already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded mio-signals v0.1.5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] cf60efc3cdc299f2f6ec97976dd49f28e83d5f9a3578d93a3243b3f4abae4769 [INFO] running `Command { std: "docker" "start" "-a" "cf60efc3cdc299f2f6ec97976dd49f28e83d5f9a3578d93a3243b3f4abae4769", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "cf60efc3cdc299f2f6ec97976dd49f28e83d5f9a3578d93a3243b3f4abae4769", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "cf60efc3cdc299f2f6ec97976dd49f28e83d5f9a3578d93a3243b3f4abae4769", kill_on_drop: false }` [INFO] [stdout] cf60efc3cdc299f2f6ec97976dd49f28e83d5f9a3578d93a3243b3f4abae4769 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4f3e405c2d231d4a5c912988d64dc8b37ac9f76c2c85f5c138c1e2ca170620a3 [INFO] running `Command { std: "docker" "start" "-a" "4f3e405c2d231d4a5c912988d64dc8b37ac9f76c2c85f5c138c1e2ca170620a3", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.27 [INFO] [stderr] Compiling syn v1.0.73 [INFO] [stderr] Compiling libc v0.2.97 [INFO] [stderr] Compiling serde_derive v1.0.126 [INFO] [stderr] Compiling serde v1.0.126 [INFO] [stderr] Checking rand_core v0.6.3 [INFO] [stderr] Checking rand v0.8.4 [INFO] [stderr] Checking mio v0.7.13 [INFO] [stderr] Compiling quote v1.0.9 [INFO] [stderr] Checking mio-signals v0.1.5 [INFO] [stderr] Compiling thiserror-impl v1.0.25 [INFO] [stderr] Checking thiserror v1.0.25 [INFO] [stderr] Checking toml v0.5.8 [INFO] [stderr] Checking r8ball v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused macro definition: `hashmap` [INFO] [stdout] --> src/irc/client/helpers.rs:22:14 [INFO] [stdout] | [INFO] [stdout] 22 | macro_rules! hashmap { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: almost complete ascii range [INFO] [stdout] --> src/irc/client/helpers.rs:138:45 [INFO] [stdout] | [INFO] [stdout] 138 | channel.push(prng.gen_range('a'..'z')); [INFO] [stdout] | ^^^--^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use an inclusive range: `..=` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#almost_complete_range [INFO] [stdout] = note: `#[warn(clippy::almost_complete_range)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused macro definition: `hashmap` [INFO] [stdout] --> src/irc/client/helpers.rs:22:14 [INFO] [stdout] | [INFO] [stdout] 22 | macro_rules! hashmap { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `mock` is never read [INFO] [stdout] --> src/config/cmdline.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 50 | pub struct ParsedArgs { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 54 | pub mock: bool, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParsedArgs` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `commands` is never read [INFO] [stdout] --> src/config/config_file.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct Config { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 31 | pub commands: HashMap, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Config` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `tls`, `command_prefix`, `server_password`, `sasl_password`, `nickserv_password`, and `invite_file` are never read [INFO] [stdout] --> src/config/config_file.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 35 | pub struct General { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 41 | pub tls: bool, [INFO] [stdout] | ^^^ [INFO] [stdout] 42 | #[serde(default = "default_prefix")] [INFO] [stdout] 43 | pub command_prefix: String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 44 | #[serde(default)] [INFO] [stdout] 45 | server_password: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 46 | #[serde(default)] [INFO] [stdout] 47 | sasl_password: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 48 | #[serde(default)] [INFO] [stdout] 49 | pub nickserv_password: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub invite_file: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `General` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `PreAuth` is never constructed [INFO] [stdout] --> src/irc/client/mod.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 57 | enum IrcState { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] 58 | Unknown, [INFO] [stdout] 59 | PreAuth, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Ascii` and `Unicode` are never constructed [INFO] [stdout] --> src/irc/client/mod.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 65 | pub enum CaseMapping { [INFO] [stdout] | ----------- variants in this enum [INFO] [stdout] 66 | Ascii, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 67 | Rfc1459, [INFO] [stdout] 68 | Unicode, // ??? [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `umode`, `channel_modes`, `chantypes`, and `mode_prefix` are never read [INFO] [stdout] --> src/irc/client/mod.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 71 | pub struct State { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 75 | pub umode: HashSet, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub channel_modes: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | chantypes: Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 93 | // e.g. +v maps to +, o maps to @, etc. [INFO] [stdout] 94 | mode_prefix: Vec<(u8, u8)>, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ModeType` is never used [INFO] [stdout] --> src/irc/client/mod.rs:131:6 [INFO] [stdout] | [INFO] [stdout] 131 | enum ModeType { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `part_channels` is never used [INFO] [stdout] --> src/irc/client/helpers.rs:61:8 [INFO] [stdout] | [INFO] [stdout] 61 | pub fn part_channels(channels: &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `exit_code` is never read [INFO] [stdout] --> src/irc/plugin.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 40 | pub struct Plugin { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 43 | pub exit_code: Arc>>>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `get_buf` are never used [INFO] [stdout] --> src/irc/plugin.rs:52:12 [INFO] [stdout] | [INFO] [stdout] 51 | impl Plugin { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 52 | pub fn new(command: String, args: Vec) -> io::Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn get_buf(&self) -> &[u8] { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/config_file.rs:78:34 [INFO] [stdout] | [INFO] [stdout] 78 | toml::from_str::(&c).map_err(|e| e.into()) [INFO] [stdout] | ^^ help: change this to: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/config/config_file.rs:82:32 [INFO] [stdout] | [INFO] [stdout] 82 | let mut f = File::open(&p)?; [INFO] [stdout] | ^^ help: change this to: `p` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/irc/client/mod.rs:250:29 [INFO] [stdout] | [INFO] [stdout] 250 | / ... if self.is_private_message(&target) && message == b"\x01VERSION\x01" { [INFO] [stdout] 251 | | ... self.write_buffer.extend(b"NOTICE "); [INFO] [stdout] 252 | | ... self.write_buffer.extend(nick); [INFO] [stdout] 253 | | ... self.write_buffer.extend(b" :\x01r8ball: v0.0.0\x01\r\n"); [INFO] [stdout] 254 | | ... ret = IrcProto::Data; [INFO] [stdout] 255 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 249 ~ (Some(nick), Some(target), Some(message)) [INFO] [stdout] 250 ~ if self.is_private_message(&target) && message == b"\x01VERSION\x01" => { [INFO] [stdout] 251 | self.write_buffer.extend(b"NOTICE "); [INFO] [stdout] ... [INFO] [stdout] 254 | ret = IrcProto::Data; [INFO] [stdout] 255 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/irc/client/mod.rs:248:21 [INFO] [stdout] | [INFO] [stdout] 248 | / match (msg.nick, params.next(), params.next()) { [INFO] [stdout] 249 | | (Some(nick), Some(target), Some(message)) => { [INFO] [stdout] 250 | | if self.is_private_message(&target) && message == b"\x01VERSION\x01" { [INFO] [stdout] 251 | | self.write_buffer.extend(b"NOTICE "); [INFO] [stdout] ... | [INFO] [stdout] 257 | | _ => (), [INFO] [stdout] 258 | | }; [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 248 ~ if let (Some(nick), Some(target), Some(message)) = (msg.nick, params.next(), params.next()) { [INFO] [stdout] 249 + if self.is_private_message(&target) && message == b"\x01VERSION\x01" { [INFO] [stdout] 250 + self.write_buffer.extend(b"NOTICE "); [INFO] [stdout] 251 + self.write_buffer.extend(nick); [INFO] [stdout] 252 + self.write_buffer.extend(b" :\x01r8ball: v0.0.0\x01\r\n"); [INFO] [stdout] 253 + ret = IrcProto::Data; [INFO] [stdout] 254 + } [INFO] [stdout] 255 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:250:56 [INFO] [stdout] | [INFO] [stdout] 250 | ... if self.is_private_message(&target) && message == b"\x01VERSION\x01" { [INFO] [stdout] | ^^^^^^^ help: change this to: `target` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/irc/client/mod.rs:282:29 [INFO] [stdout] | [INFO] [stdout] 282 | / ... if case_cmp(&self.state.casemapping, victim, self.state.nick.as_bytes()) [INFO] [stdout] 283 | | ... { [INFO] [stdout] 284 | | ... self.state.channels.retain(|x| x.as_bytes() != channel); [INFO] [stdout] 285 | | ... if let Some(reason) = params.next() { [INFO] [stdout] ... | [INFO] [stdout] 290 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 281 ~ (Some(channel), Some(victim)) [INFO] [stdout] 282 | if case_cmp(&self.state.casemapping, victim, self.state.nick.as_bytes()) [INFO] [stdout] 283 ~ => { [INFO] [stdout] 284 | self.state.channels.retain(|x| x.as_bytes() != channel); [INFO] [stdout] ... [INFO] [stdout] 289 | } [INFO] [stdout] 290 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/irc/client/mod.rs:280:21 [INFO] [stdout] | [INFO] [stdout] 280 | / match (params.next(), params.next()) { [INFO] [stdout] 281 | | (Some(channel), Some(victim)) => { [INFO] [stdout] 282 | | if case_cmp(&self.state.casemapping, victim, self.state.nick.as_bytes()) [INFO] [stdout] ... | [INFO] [stdout] 292 | | _ => (), [INFO] [stdout] 293 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 280 ~ if let (Some(channel), Some(victim)) = (params.next(), params.next()) { [INFO] [stdout] 281 + if case_cmp(&self.state.casemapping, victim, self.state.nick.as_bytes()) [INFO] [stdout] 282 + { [INFO] [stdout] 283 + self.state.channels.retain(|x| x.as_bytes() != channel); [INFO] [stdout] 284 + if let Some(reason) = params.next() { [INFO] [stdout] 285 + let channel = String::from_utf8_lossy(channel); [INFO] [stdout] 286 + let reason_given = String::from_utf8_lossy(reason); [INFO] [stdout] 287 + println!("Kicked from {}. reason: {}", channel, reason_given); [INFO] [stdout] 288 + } [INFO] [stdout] 289 + } [INFO] [stdout] 290 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/irc/client/mod.rs:398:25 [INFO] [stdout] | [INFO] [stdout] 398 | Ok(size) if size == 0 => return Ok(ClientReadStat::Eof), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] = note: `#[warn(clippy::redundant_guards)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 398 - Ok(size) if size == 0 => return Ok(ClientReadStat::Eof), [INFO] [stdout] 398 + Ok(0) => return Ok(ClientReadStat::Eof), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/irc/iter.rs:58:21 [INFO] [stdout] | [INFO] [stdout] 58 | let start = match find_start(buf) { [INFO] [stdout] | _____________________^ [INFO] [stdout] 59 | | Some(start) => start, [INFO] [stdout] 60 | | None => return None, [INFO] [stdout] 61 | | }; [INFO] [stdout] | |_________^ help: try instead: `find_start(buf)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/iter.rs:72:36 [INFO] [stdout] | [INFO] [stdout] 72 | Some(TruncStatus::Part(&buf)) [INFO] [stdout] | ^^^^ help: change this to: `buf` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/irc/net.rs:42:21 [INFO] [stdout] | [INFO] [stdout] 42 | let mut try_e = io::Error::new(io::ErrorKind::Other, "Should} Never Happen."); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 42 - let mut try_e = io::Error::new(io::ErrorKind::Other, "Should} Never Happen."); [INFO] [stdout] 42 + let mut try_e = io::Error::other("Should} Never Happen."); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/irc/parse.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | / impl<'a> Default for Message<'a> { [INFO] [stdout] 102 | | fn default() -> Self { [INFO] [stdout] 103 | | Message { [INFO] [stdout] 104 | | nick: None, [INFO] [stdout] ... | [INFO] [stdout] 111 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 32 + #[derive(Default)] [INFO] [stdout] 33 | pub struct Message<'a> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/irc/parse.rs:113:30 [INFO] [stdout] | [INFO] [stdout] 113 | fn parse_prefix(b: &[u8]) -> (Option<&[u8]>, Option<&[u8]>, Option<&[u8]>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/irc/parse.rs:138:9 [INFO] [stdout] | [INFO] [stdout] 138 | self.nick == None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.nick.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/irc/parse.rs:139:16 [INFO] [stdout] | [INFO] [stdout] 139 | && self.user == None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.user.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/irc/parse.rs:140:16 [INFO] [stdout] | [INFO] [stdout] 140 | && self.host == None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.host.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/irc/parse.rs:141:16 [INFO] [stdout] | [INFO] [stdout] 141 | && self.command == None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.command.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/irc/parse.rs:142:16 [INFO] [stdout] | [INFO] [stdout] 142 | && self.params == None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.params.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `part.get(0)` [INFO] [stdout] --> src/irc/parse.rs:163:57 [INFO] [stdout] | [INFO] [stdout] 163 | let has_prefix = if let Some(chr) = part.get(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `part.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/irc/plugin.rs:92:17 [INFO] [stdout] | [INFO] [stdout] 92 | if !self.read_buf.iter().any(|&chr| chr == b'\n') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.read_buf.contains(&b'\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/irc/plugin.rs:93:17 [INFO] [stdout] | [INFO] [stdout] 93 | / self.read_buf [INFO] [stdout] 94 | | .last_mut() [INFO] [stdout] 95 | | .and_then(|refer: &mut u8| { [INFO] [stdout] 96 | | *refer = b'\n'; [INFO] [stdout] 97 | | Some(()) [INFO] [stdout] 98 | | }) [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 95 ~ .map(|refer: &mut u8| { [INFO] [stdout] 96 | *refer = b'\n'; [INFO] [stdout] 97 ~ () [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/irc/plugin.rs:115:22 [INFO] [stdout] | [INFO] [stdout] 115 | Ok(s) if s == 0 => return Ok(PluginReadStat::Eof), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 115 - Ok(s) if s == 0 => return Ok(PluginReadStat::Eof), [INFO] [stdout] 115 + Ok(0) => return Ok(PluginReadStat::Eof), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/irc/parse.rs:145:23 [INFO] [stdout] | [INFO] [stdout] 145 | pub fn parameters(&self) -> MessageParamIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 145 | pub fn parameters(&self) -> MessageParamIter<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/irc/plugin.rs:153:17 [INFO] [stdout] | [INFO] [stdout] 153 | pub fn iter(&self) -> BufIterator { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 153 | pub fn iter(&self) -> BufIterator<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `mock` is never read [INFO] [stdout] --> src/config/cmdline.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 50 | pub struct ParsedArgs { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 54 | pub mock: bool, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParsedArgs` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `commands` is never read [INFO] [stdout] --> src/config/config_file.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct Config { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 31 | pub commands: HashMap, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Config` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `tls`, `command_prefix`, `server_password`, `sasl_password`, `nickserv_password`, and `invite_file` are never read [INFO] [stdout] --> src/config/config_file.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 35 | pub struct General { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 41 | pub tls: bool, [INFO] [stdout] | ^^^ [INFO] [stdout] 42 | #[serde(default = "default_prefix")] [INFO] [stdout] 43 | pub command_prefix: String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 44 | #[serde(default)] [INFO] [stdout] 45 | server_password: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 46 | #[serde(default)] [INFO] [stdout] 47 | sasl_password: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 48 | #[serde(default)] [INFO] [stdout] 49 | pub nickserv_password: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub invite_file: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `General` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `PreAuth` is never constructed [INFO] [stdout] --> src/irc/client/mod.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 57 | enum IrcState { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] 58 | Unknown, [INFO] [stdout] 59 | PreAuth, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Unicode` is never constructed [INFO] [stdout] --> src/irc/client/mod.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 65 | pub enum CaseMapping { [INFO] [stdout] | ----------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 68 | Unicode, // ??? [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `umode`, `channel_modes`, `chantypes`, and `mode_prefix` are never read [INFO] [stdout] --> src/irc/client/mod.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 71 | pub struct State { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 75 | pub umode: HashSet, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub channel_modes: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | chantypes: Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 93 | // e.g. +v maps to +, o maps to @, etc. [INFO] [stdout] 94 | mode_prefix: Vec<(u8, u8)>, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ModeType` is never used [INFO] [stdout] --> src/irc/client/mod.rs:131:6 [INFO] [stdout] | [INFO] [stdout] 131 | enum ModeType { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `part_channels` is never used [INFO] [stdout] --> src/irc/client/helpers.rs:61:8 [INFO] [stdout] | [INFO] [stdout] 61 | pub fn part_channels(channels: &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_buf` is never used [INFO] [stdout] --> src/irc/plugin.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 51 | impl Plugin { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn get_buf(&self) -> &[u8] { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/config_file.rs:78:34 [INFO] [stdout] | [INFO] [stdout] 78 | toml::from_str::(&c).map_err(|e| e.into()) [INFO] [stdout] | ^^ help: change this to: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/config/config_file.rs:82:32 [INFO] [stdout] | [INFO] [stdout] 82 | let mut f = File::open(&p)?; [INFO] [stdout] | ^^ help: change this to: `p` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/irc/client/mod.rs:250:29 [INFO] [stdout] | [INFO] [stdout] 250 | / ... if self.is_private_message(&target) && message == b"\x01VERSION\x01" { [INFO] [stdout] 251 | | ... self.write_buffer.extend(b"NOTICE "); [INFO] [stdout] 252 | | ... self.write_buffer.extend(nick); [INFO] [stdout] 253 | | ... self.write_buffer.extend(b" :\x01r8ball: v0.0.0\x01\r\n"); [INFO] [stdout] 254 | | ... ret = IrcProto::Data; [INFO] [stdout] 255 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 249 ~ (Some(nick), Some(target), Some(message)) [INFO] [stdout] 250 ~ if self.is_private_message(&target) && message == b"\x01VERSION\x01" => { [INFO] [stdout] 251 | self.write_buffer.extend(b"NOTICE "); [INFO] [stdout] ... [INFO] [stdout] 254 | ret = IrcProto::Data; [INFO] [stdout] 255 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/irc/client/mod.rs:248:21 [INFO] [stdout] | [INFO] [stdout] 248 | / match (msg.nick, params.next(), params.next()) { [INFO] [stdout] 249 | | (Some(nick), Some(target), Some(message)) => { [INFO] [stdout] 250 | | if self.is_private_message(&target) && message == b"\x01VERSION\x01" { [INFO] [stdout] 251 | | self.write_buffer.extend(b"NOTICE "); [INFO] [stdout] ... | [INFO] [stdout] 257 | | _ => (), [INFO] [stdout] 258 | | }; [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 248 ~ if let (Some(nick), Some(target), Some(message)) = (msg.nick, params.next(), params.next()) { [INFO] [stdout] 249 + if self.is_private_message(&target) && message == b"\x01VERSION\x01" { [INFO] [stdout] 250 + self.write_buffer.extend(b"NOTICE "); [INFO] [stdout] 251 + self.write_buffer.extend(nick); [INFO] [stdout] 252 + self.write_buffer.extend(b" :\x01r8ball: v0.0.0\x01\r\n"); [INFO] [stdout] 253 + ret = IrcProto::Data; [INFO] [stdout] 254 + } [INFO] [stdout] 255 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:250:56 [INFO] [stdout] | [INFO] [stdout] 250 | ... if self.is_private_message(&target) && message == b"\x01VERSION\x01" { [INFO] [stdout] | ^^^^^^^ help: change this to: `target` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/irc/client/mod.rs:282:29 [INFO] [stdout] | [INFO] [stdout] 282 | / ... if case_cmp(&self.state.casemapping, victim, self.state.nick.as_bytes()) [INFO] [stdout] 283 | | ... { [INFO] [stdout] 284 | | ... self.state.channels.retain(|x| x.as_bytes() != channel); [INFO] [stdout] 285 | | ... if let Some(reason) = params.next() { [INFO] [stdout] ... | [INFO] [stdout] 290 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 281 ~ (Some(channel), Some(victim)) [INFO] [stdout] 282 | if case_cmp(&self.state.casemapping, victim, self.state.nick.as_bytes()) [INFO] [stdout] 283 ~ => { [INFO] [stdout] 284 | self.state.channels.retain(|x| x.as_bytes() != channel); [INFO] [stdout] ... [INFO] [stdout] 289 | } [INFO] [stdout] 290 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/irc/client/mod.rs:280:21 [INFO] [stdout] | [INFO] [stdout] 280 | / match (params.next(), params.next()) { [INFO] [stdout] 281 | | (Some(channel), Some(victim)) => { [INFO] [stdout] 282 | | if case_cmp(&self.state.casemapping, victim, self.state.nick.as_bytes()) [INFO] [stdout] ... | [INFO] [stdout] 292 | | _ => (), [INFO] [stdout] 293 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 280 ~ if let (Some(channel), Some(victim)) = (params.next(), params.next()) { [INFO] [stdout] 281 + if case_cmp(&self.state.casemapping, victim, self.state.nick.as_bytes()) [INFO] [stdout] 282 + { [INFO] [stdout] 283 + self.state.channels.retain(|x| x.as_bytes() != channel); [INFO] [stdout] 284 + if let Some(reason) = params.next() { [INFO] [stdout] 285 + let channel = String::from_utf8_lossy(channel); [INFO] [stdout] 286 + let reason_given = String::from_utf8_lossy(reason); [INFO] [stdout] 287 + println!("Kicked from {}. reason: {}", channel, reason_given); [INFO] [stdout] 288 + } [INFO] [stdout] 289 + } [INFO] [stdout] 290 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/irc/client/mod.rs:398:25 [INFO] [stdout] | [INFO] [stdout] 398 | Ok(size) if size == 0 => return Ok(ClientReadStat::Eof), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] = note: `#[warn(clippy::redundant_guards)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 398 - Ok(size) if size == 0 => return Ok(ClientReadStat::Eof), [INFO] [stdout] 398 + Ok(0) => return Ok(ClientReadStat::Eof), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:566:29 [INFO] [stdout] | [INFO] [stdout] 566 | read_expect(&mut c, &mut &mut fake_io, ClientReadStat::HasWritableData); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `&mut fake_io` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:569:13 [INFO] [stdout] | [INFO] [stdout] 569 | &mut &mut fake_io, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `&mut fake_io` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:584:29 [INFO] [stdout] | [INFO] [stdout] 584 | read_expect(&mut c, &mut &mut fake_io, ClientReadStat::HasWritableData); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `&mut fake_io` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:587:13 [INFO] [stdout] | [INFO] [stdout] 587 | &mut &mut fake_io, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `&mut fake_io` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:594:29 [INFO] [stdout] | [INFO] [stdout] 594 | read_expect(&mut c, &mut &mut fake_io, ClientReadStat::HasWritableData); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `&mut fake_io` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:597:13 [INFO] [stdout] | [INFO] [stdout] 597 | &mut &mut fake_io, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `&mut fake_io` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:604:29 [INFO] [stdout] | [INFO] [stdout] 604 | read_expect(&mut c, &mut &mut fake_io, ClientReadStat::HasWritableData); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `&mut fake_io` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:607:13 [INFO] [stdout] | [INFO] [stdout] 607 | &mut &mut fake_io, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `&mut fake_io` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:624:29 [INFO] [stdout] | [INFO] [stdout] 624 | read_expect(&mut c, &mut &mut fake_io, ClientReadStat::HasWritableData); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `&mut fake_io` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:627:13 [INFO] [stdout] | [INFO] [stdout] 627 | &mut &mut fake_io, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `&mut fake_io` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:642:29 [INFO] [stdout] | [INFO] [stdout] 642 | read_expect(&mut c, &mut &mut fake_io, ClientReadStat::Okay); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `&mut fake_io` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:643:30 [INFO] [stdout] | [INFO] [stdout] 643 | write_expect(&mut c, &mut &mut fake_io, ClientWriteStat::Eof, b""); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `&mut fake_io` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/client/mod.rs:658:29 [INFO] [stdout] | [INFO] [stdout] 658 | read_expect(&mut c, &mut &mut fake_io, ClientReadStat::HasWritableData); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `&mut fake_io` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/irc/iter.rs:58:21 [INFO] [stdout] | [INFO] [stdout] 58 | let start = match find_start(buf) { [INFO] [stdout] | _____________________^ [INFO] [stdout] 59 | | Some(start) => start, [INFO] [stdout] 60 | | None => return None, [INFO] [stdout] 61 | | }; [INFO] [stdout] | |_________^ help: try instead: `find_start(buf)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/irc/iter.rs:72:36 [INFO] [stdout] | [INFO] [stdout] 72 | Some(TruncStatus::Part(&buf)) [INFO] [stdout] | ^^^^ help: change this to: `buf` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/irc/net.rs:42:21 [INFO] [stdout] | [INFO] [stdout] 42 | let mut try_e = io::Error::new(io::ErrorKind::Other, "Should} Never Happen."); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 42 - let mut try_e = io::Error::new(io::ErrorKind::Other, "Should} Never Happen."); [INFO] [stdout] 42 + let mut try_e = io::Error::other("Should} Never Happen."); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/irc/parse.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | / impl<'a> Default for Message<'a> { [INFO] [stdout] 102 | | fn default() -> Self { [INFO] [stdout] 103 | | Message { [INFO] [stdout] 104 | | nick: None, [INFO] [stdout] ... | [INFO] [stdout] 111 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 32 + #[derive(Default)] [INFO] [stdout] 33 | pub struct Message<'a> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/irc/parse.rs:113:30 [INFO] [stdout] | [INFO] [stdout] 113 | fn parse_prefix(b: &[u8]) -> (Option<&[u8]>, Option<&[u8]>, Option<&[u8]>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/irc/parse.rs:138:9 [INFO] [stdout] | [INFO] [stdout] 138 | self.nick == None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.nick.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/irc/parse.rs:139:16 [INFO] [stdout] | [INFO] [stdout] 139 | && self.user == None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.user.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/irc/parse.rs:140:16 [INFO] [stdout] | [INFO] [stdout] 140 | && self.host == None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.host.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/irc/parse.rs:141:16 [INFO] [stdout] | [INFO] [stdout] 141 | && self.command == None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.command.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/irc/parse.rs:142:16 [INFO] [stdout] | [INFO] [stdout] 142 | && self.params == None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.params.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `part.get(0)` [INFO] [stdout] --> src/irc/parse.rs:163:57 [INFO] [stdout] | [INFO] [stdout] 163 | let has_prefix = if let Some(chr) = part.get(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `part.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/irc/parse.rs:207:20 [INFO] [stdout] | [INFO] [stdout] 207 | assert_eq!(m.nick.as_deref(), nick.as_deref()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `m.nick` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] = note: `#[warn(clippy::needless_option_as_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/irc/parse.rs:207:39 [INFO] [stdout] | [INFO] [stdout] 207 | assert_eq!(m.nick.as_deref(), nick.as_deref()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `nick` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/irc/parse.rs:208:20 [INFO] [stdout] | [INFO] [stdout] 208 | assert_eq!(m.user.as_deref(), user.as_deref()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `m.user` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/irc/parse.rs:208:39 [INFO] [stdout] | [INFO] [stdout] 208 | assert_eq!(m.user.as_deref(), user.as_deref()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `user` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/irc/parse.rs:209:20 [INFO] [stdout] | [INFO] [stdout] 209 | assert_eq!(m.host.as_deref(), host.as_deref()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `m.host` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/irc/parse.rs:209:39 [INFO] [stdout] | [INFO] [stdout] 209 | assert_eq!(m.host.as_deref(), host.as_deref()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `host` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/irc/parse.rs:210:20 [INFO] [stdout] | [INFO] [stdout] 210 | assert_eq!(m.command.as_deref(), command.as_deref()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `m.command` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/irc/parse.rs:210:42 [INFO] [stdout] | [INFO] [stdout] 210 | assert_eq!(m.command.as_deref(), command.as_deref()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `command` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/irc/plugin.rs:92:17 [INFO] [stdout] | [INFO] [stdout] 92 | if !self.read_buf.iter().any(|&chr| chr == b'\n') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.read_buf.contains(&b'\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/irc/plugin.rs:93:17 [INFO] [stdout] | [INFO] [stdout] 93 | / self.read_buf [INFO] [stdout] 94 | | .last_mut() [INFO] [stdout] 95 | | .and_then(|refer: &mut u8| { [INFO] [stdout] 96 | | *refer = b'\n'; [INFO] [stdout] 97 | | Some(()) [INFO] [stdout] 98 | | }) [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 95 ~ .map(|refer: &mut u8| { [INFO] [stdout] 96 | *refer = b'\n'; [INFO] [stdout] 97 ~ () [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/irc/plugin.rs:115:22 [INFO] [stdout] | [INFO] [stdout] 115 | Ok(s) if s == 0 => return Ok(PluginReadStat::Eof), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 115 - Ok(s) if s == 0 => return Ok(PluginReadStat::Eof), [INFO] [stdout] 115 + Ok(0) => return Ok(PluginReadStat::Eof), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/irc/plugin.rs:269:44 [INFO] [stdout] | [INFO] [stdout] 269 | ... assert_eq!(m.command.as_deref(), Some(&b"PRIVMSG"[..])); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `m.command` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/irc/plugin.rs:290:32 [INFO] [stdout] | [INFO] [stdout] 290 | assert_eq!(m.command.as_deref(), Some(&b"PRIVMSG"[..])); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `m.command` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/irc/plugin.rs:325:41 [INFO] [stdout] | [INFO] [stdout] 325 | ... assert!(!p[1] [INFO] [stdout] | _______________________________^ [INFO] [stdout] 326 | | ... .iter() [INFO] [stdout] 327 | | ... .last() [INFO] [stdout] 328 | | ... .and_then(|&chr| if chr == b'a' { Some(()) } else { None }) [INFO] [stdout] 329 | | ... .is_some()); [INFO] [stdout] | |____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 325 ~ assert!(p[1] [INFO] [stdout] 326 + .iter() [INFO] [stdout] 327 + .last() [INFO] [stdout] 328 ~ .and_then(|&chr| if chr == b'a' { Some(()) } else { None }).is_none()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/irc/plugin.rs:322:44 [INFO] [stdout] | [INFO] [stdout] 322 | ... assert_eq!(m.command.as_deref(), Some(&b"PRIVMSG"[..])); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `m.command` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: derefed type is same as origin [INFO] [stdout] --> src/irc/plugin.rs:349:32 [INFO] [stdout] | [INFO] [stdout] 349 | assert_eq!(m.command.as_deref(), Some(&b"PRIVMSG"[..])); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `m.command` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/irc/parse.rs:145:23 [INFO] [stdout] | [INFO] [stdout] 145 | pub fn parameters(&self) -> MessageParamIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 145 | pub fn parameters(&self) -> MessageParamIter<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/irc/plugin.rs:153:17 [INFO] [stdout] | [INFO] [stdout] 153 | pub fn iter(&self) -> BufIterator { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 153 | pub fn iter(&self) -> BufIterator<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.57s [INFO] running `Command { std: "docker" "inspect" "4f3e405c2d231d4a5c912988d64dc8b37ac9f76c2c85f5c138c1e2ca170620a3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4f3e405c2d231d4a5c912988d64dc8b37ac9f76c2c85f5c138c1e2ca170620a3", kill_on_drop: false }` [INFO] [stdout] 4f3e405c2d231d4a5c912988d64dc8b37ac9f76c2c85f5c138c1e2ca170620a3