[INFO] crate nero 0.0.1 is already in cache [INFO] extracting crate nero 0.0.1 into work/ex/clippy-test-run/sources/stable/reg/nero/0.0.1 [INFO] extracting crate nero 0.0.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/nero/0.0.1 [INFO] validating manifest of nero-0.0.1 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 nero-0.0.1 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 nero-0.0.1 [INFO] finished frobbing nero-0.0.1 [INFO] frobbed toml for nero-0.0.1 written to work/ex/clippy-test-run/sources/stable/reg/nero/0.0.1/Cargo.toml [INFO] started frobbing nero-0.0.1 [INFO] finished frobbing nero-0.0.1 [INFO] frobbed toml for nero-0.0.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/nero/0.0.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [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 nero-0.0.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/nero/0.0.1:/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] eea2ccce01bd905dcaeeb7457a66be69de7fbae566db25764ea9b6afb4882d91 [INFO] running `"docker" "start" "-a" "eea2ccce01bd905dcaeeb7457a66be69de7fbae566db25764ea9b6afb4882d91"` [INFO] [stderr] Checking libloading v0.4.3 [INFO] [stderr] Checking nero v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/channel.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | created: created, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `created` [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/core_data.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | writer: writer, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `writer` [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/channel.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | created: created, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `created` [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/core_data.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | writer: writer, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `writer` [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: unneeded return statement [INFO] [stderr] --> src/p10.rs:892:5 [INFO] [stderr] | [INFO] [stderr] 892 | return buf; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `buf` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/p10.rs:1006:5 [INFO] [stderr] | [INFO] [stderr] 1006 | unix [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/p10.rs:1004:16 [INFO] [stderr] | [INFO] [stderr] 1004 | let unix = now.duration_since(UNIX_EPOCH).unwrap().as_secs(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/plugin.rs:8:19 [INFO] [stderr] | [INFO] [stderr] 8 | pub const MAGIC: &'static str = "COOKIES"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'futures::BoxFuture': removed without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228 [INFO] [stderr] --> src/net.rs:9:15 [INFO] [stderr] | [INFO] [stderr] 9 | use futures::{BoxFuture, Future}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/p10.rs:885:9 [INFO] [stderr] | [INFO] [stderr] 885 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'futures::BoxFuture': removed without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228 [INFO] [stderr] --> src/net.rs:70:33 [INFO] [stderr] | [INFO] [stderr] 70 | pub fn write_lines(self) -> BoxFuture { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/p10.rs:892:5 [INFO] [stderr] | [INFO] [stderr] 892 | return buf; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `buf` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/p10.rs:1006:5 [INFO] [stderr] | [INFO] [stderr] 1006 | unix [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/p10.rs:1004:16 [INFO] [stderr] | [INFO] [stderr] 1004 | let unix = now.duration_since(UNIX_EPOCH).unwrap().as_secs(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/plugin.rs:8:19 [INFO] [stderr] | [INFO] [stderr] 8 | pub const MAGIC: &'static str = "COOKIES"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'futures::BoxFuture': removed without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228 [INFO] [stderr] --> src/net.rs:9:15 [INFO] [stderr] | [INFO] [stderr] 9 | use futures::{BoxFuture, Future}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/p10.rs:885:9 [INFO] [stderr] | [INFO] [stderr] 885 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'futures::BoxFuture': removed without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228 [INFO] [stderr] --> src/net.rs:70:33 [INFO] [stderr] | [INFO] [stderr] 70 | pub fn write_lines(self) -> BoxFuture { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'futures::Future::boxed': removed without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228 [INFO] [stderr] --> src/net.rs:83:24 [INFO] [stderr] | [INFO] [stderr] 83 | }).boxed() [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'futures::Future::boxed': removed without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228 [INFO] [stderr] --> src/net.rs:87:87 [INFO] [stderr] | [INFO] [stderr] 87 | ok(Loop::Break(WriteState { messages: messages.into(), writer })).boxed() [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'futures::Future::boxed': removed without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228 [INFO] [stderr] --> src/net.rs:90:12 [INFO] [stderr] | [INFO] [stderr] 90 | }).boxed() [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'futures::Future::boxed': removed without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228 [INFO] [stderr] --> src/net.rs:83:24 [INFO] [stderr] | [INFO] [stderr] 83 | }).boxed() [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'futures::Future::boxed': removed without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228 [INFO] [stderr] --> src/net.rs:87:87 [INFO] [stderr] | [INFO] [stderr] 87 | ok(Loop::Break(WriteState { messages: messages.into(), writer })).boxed() [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'futures::Future::boxed': removed without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228 [INFO] [stderr] --> src/net.rs:90:12 [INFO] [stderr] | [INFO] [stderr] 90 | }).boxed() [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/p10.rs:885:9 [INFO] [stderr] | [INFO] [stderr] 885 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/p10.rs:885:9 [INFO] [stderr] | [INFO] [stderr] 885 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/core_data.rs:55:57 [INFO] [stderr] | [INFO] [stderr] 55 | log(Debug, "CORE_DATA", format!("Registered hook")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Registered hook".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/core_data.rs:85:34 [INFO] [stderr] | [INFO] [stderr] 85 | let mut plugin = self.plugins.iter_mut().filter(|x| ptr::eq(&***x, event.plugin_ptr)).next().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|x| ptr::eq(&***x, event.plugin_ptr)).next()` with `find(|x| ptr::eq(&***x, event.plugin_ptr))` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/p10.rs:77:36 [INFO] [stderr] | [INFO] [stderr] 77 | const UMODE_OPER = 1 << 0; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/p10.rs:92:35 [INFO] [stderr] | [INFO] [stderr] 92 | const CMODE_PRIVATE = 1 << 0; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/p10.rs:113:35 [INFO] [stderr] | [INFO] [stderr] 113 | const MMODE_CHANOP = 1 << 0; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/p10.rs:201:12 [INFO] [stderr] | [INFO] [stderr] 201 | if argv.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `argv.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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/p10.rs:242:13 [INFO] [stderr] | [INFO] [stderr] 242 | / let mut newargv: Vec> = argv.clone(); [INFO] [stderr] 243 | | if cmd > 0 { [INFO] [stderr] 244 | | newargv = argv[1..].to_vec(); [INFO] [stderr] 245 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let newargv = if cmd > 0 { argv[1..].to_vec() } else { argv.clone() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:224:21 [INFO] [stderr] | [INFO] [stderr] 224 | / match find_server_numeric(core_data, &argv[0].to_vec()) { [INFO] [stderr] 225 | | Some(ref server) => { [INFO] [stderr] 226 | | origin = server.borrow().ext.numeric.clone(); [INFO] [stderr] 227 | | } [INFO] [stderr] 228 | | None => {}, [INFO] [stderr] 229 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 224 | if let Some(ref server) = find_server_numeric(core_data, &argv[0].to_vec()) { [INFO] [stderr] 225 | origin = server.borrow().ext.numeric.clone(); [INFO] [stderr] 226 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:232:21 [INFO] [stderr] | [INFO] [stderr] 232 | / match find_user_numeric(core_data, &argv[0].to_vec()) { [INFO] [stderr] 233 | | Some(ref user) => { [INFO] [stderr] 234 | | origin = user.borrow().ext.numeric.clone(); [INFO] [stderr] 235 | | } [INFO] [stderr] 236 | | None => {}, [INFO] [stderr] 237 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 232 | if let Some(ref user) = find_user_numeric(core_data, &argv[0].to_vec()) { [INFO] [stderr] 233 | origin = user.borrow().ext.numeric.clone(); [INFO] [stderr] 234 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/p10.rs:262:20 [INFO] [stderr] | [INFO] [stderr] 262 | if let Err(_) = result { [INFO] [stderr] | _____________- ^^^^^^ [INFO] [stderr] 263 | | log(Error, "MAIN", format!("PARSE ERROR: {}", dv(&message))); [INFO] [stderr] 264 | | } [INFO] [stderr] | |_____________- help: try this: `if result.is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:281:5 [INFO] [stderr] | [INFO] [stderr] 281 | / match str::from_utf8(&argv[2]) { [INFO] [stderr] 282 | | Ok(str_int) => { [INFO] [stderr] 283 | | server.hops = match String::from(str_int).parse() { [INFO] [stderr] 284 | | Ok(i) => i, [INFO] [stderr] ... | [INFO] [stderr] 288 | | Err(_) => {}, // TODO [INFO] [stderr] 289 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 281 | if let Ok(str_int) = str::from_utf8(&argv[2]) { [INFO] [stderr] 282 | server.hops = match String::from(str_int).parse() { [INFO] [stderr] 283 | Ok(i) => i, [INFO] [stderr] 284 | Err(_) => 0, [INFO] [stderr] 285 | }; [INFO] [stderr] 286 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:291:5 [INFO] [stderr] | [INFO] [stderr] 291 | / match str::from_utf8(&argv[3]) { [INFO] [stderr] 292 | | Ok(str_int) => { [INFO] [stderr] 293 | | server.boot = match String::from(str_int).parse() { [INFO] [stderr] 294 | | Ok(i) => i, [INFO] [stderr] ... | [INFO] [stderr] 298 | | Err(_) => {}, // TODO [INFO] [stderr] 299 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 291 | if let Ok(str_int) = str::from_utf8(&argv[3]) { [INFO] [stderr] 292 | server.boot = match String::from(str_int).parse() { [INFO] [stderr] 293 | Ok(i) => i, [INFO] [stderr] 294 | Err(_) => 0, [INFO] [stderr] 295 | }; [INFO] [stderr] 296 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:301:5 [INFO] [stderr] | [INFO] [stderr] 301 | / match str::from_utf8(&argv[4]) { [INFO] [stderr] 302 | | Ok(str_int) => { [INFO] [stderr] 303 | | server.link_time = match String::from(str_int).parse() { [INFO] [stderr] 304 | | Ok(i) => i, [INFO] [stderr] ... | [INFO] [stderr] 308 | | Err(_) => {}, // TODO [INFO] [stderr] 309 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 301 | if let Ok(str_int) = str::from_utf8(&argv[4]) { [INFO] [stderr] 302 | server.link_time = match String::from(str_int).parse() { [INFO] [stderr] 303 | Ok(i) => i, [INFO] [stderr] 304 | Err(_) => 0, [INFO] [stderr] 305 | }; [INFO] [stderr] 306 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:320:9 [INFO] [stderr] | [INFO] [stderr] 320 | / match uplink { [INFO] [stderr] 321 | | Some(arc_server) => server.uplink = Some(arc_server.clone()), [INFO] [stderr] 322 | | None => {}, [INFO] [stderr] 323 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(arc_server) = uplink { server.uplink = Some(arc_server.clone()) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/p10.rs:334:27 [INFO] [stderr] | [INFO] [stderr] 334 | let sender_rc = match find_server_numeric(core_data, origin).map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `find_server_numeric(core_data, origin).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/p10.rs:374:28 [INFO] [stderr] | [INFO] [stderr] 374 | let channel_rc = match find_channel(core_data, &argv[1]).map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `find_channel(core_data, &argv[1]).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/p10.rs:393:23 [INFO] [stderr] | [INFO] [stderr] 393 | let option_user = find_user_numeric(core_data, &origin.to_vec()).map(|x| x.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `find_user_numeric(core_data, &origin.to_vec()).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/p10.rs:516:23 [INFO] [stderr] | [INFO] [stderr] 516 | let option_user = find_user_numeric(core_data, &origin.to_vec()).map(|x| x.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `find_user_numeric(core_data, &origin.to_vec()).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/p10.rs:533:22 [INFO] [stderr] | [INFO] [stderr] 533 | let server = find_server_numeric(core_data, &origin.to_vec()).map(|x| x.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `find_server_numeric(core_data, &origin.to_vec()).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:562:5 [INFO] [stderr] | [INFO] [stderr] 562 | / match user { [INFO] [stderr] 563 | | Some(u) => { [INFO] [stderr] 564 | | channel.topic_nick = u.borrow().nick.clone(); [INFO] [stderr] 565 | | }, [INFO] [stderr] 566 | | None => {}, [INFO] [stderr] 567 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 562 | if let Some(u) = user { [INFO] [stderr] 563 | channel.topic_nick = u.borrow().nick.clone(); [INFO] [stderr] 564 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:595:5 [INFO] [stderr] | [INFO] [stderr] 595 | / match find_channel(core_data, name) { [INFO] [stderr] 596 | | Some(current_channel_rc) => { [INFO] [stderr] 597 | | let mut current_channel = current_channel_rc.borrow_mut(); [INFO] [stderr] 598 | | if current_channel.created > created_time { [INFO] [stderr] ... | [INFO] [stderr] 606 | | None => {}, [INFO] [stderr] 607 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 595 | if let Some(current_channel_rc) = find_channel(core_data, name) { [INFO] [stderr] 596 | let mut current_channel = current_channel_rc.borrow_mut(); [INFO] [stderr] 597 | if current_channel.created > created_time { [INFO] [stderr] 598 | current_channel.created = created_time; [INFO] [stderr] 599 | current_channel.topic_time = 0; [INFO] [stderr] 600 | current_channel.topic = Vec::new(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/p10.rs:641:8 [INFO] [stderr] | [INFO] [stderr] 641 | if split_modes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!split_modes.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 loop variable `ii` is only used to index `split_modes`. [INFO] [stderr] --> src/p10.rs:646:19 [INFO] [stderr] | [INFO] [stderr] 646 | for ii in 1..split_modes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 646 | for in split_modes.iter().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (10/7) [INFO] [stderr] --> src/p10.rs:680:1 [INFO] [stderr] | [INFO] [stderr] 680 | / fn p10_add_user(core_data: &mut NeroData, option_uplink: Option>>>, nick: &[u8], ident: &[u8], hostname: &[u8], modes: &[u8], numeric: &[u8], gecos: &[u8], timestamp: &[u8], realip: &[u8]) -> Result>>, ()> { [INFO] [stderr] 681 | | use std::str; [INFO] [stderr] 682 | | [INFO] [stderr] 683 | | let decimal_ip = base64_to_vecu8(&realip); [INFO] [stderr] ... | [INFO] [stderr] 722 | | Ok(shared_user.clone()) [INFO] [stderr] 723 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:706:5 [INFO] [stderr] | [INFO] [stderr] 706 | / match str::from_utf8(timestamp) { [INFO] [stderr] 707 | | Ok(str_int) => { [INFO] [stderr] 708 | | user_node.ext.timestamp = match String::from(str_int).parse() { [INFO] [stderr] 709 | | Ok(i) => i, [INFO] [stderr] ... | [INFO] [stderr] 713 | | Err(_) => {}, // TODO [INFO] [stderr] 714 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 706 | if let Ok(str_int) = str::from_utf8(timestamp) { [INFO] [stderr] 707 | user_node.ext.timestamp = match String::from(str_int).parse() { [INFO] [stderr] 708 | Ok(i) => i, [INFO] [stderr] 709 | Err(_) => 0, [INFO] [stderr] 710 | }; [INFO] [stderr] 711 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/p10.rs:725:73 [INFO] [stderr] | [INFO] [stderr] 725 | fn p10_add_channel_mode(channel: &mut Channel, adding: bool, mode: &u8) { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/p10.rs:726:5 [INFO] [stderr] | [INFO] [stderr] 726 | / match mode { [INFO] [stderr] 727 | | &b'p' => p10_set_channel_mode_helper(channel, adding, CMODE_PRIVATE.bits()), [INFO] [stderr] 728 | | &b's' => p10_set_channel_mode_helper(channel, adding, CMODE_SECRET.bits()), [INFO] [stderr] 729 | | &b'm' => p10_set_channel_mode_helper(channel, adding, CMODE_MODERATED.bits()), [INFO] [stderr] ... | [INFO] [stderr] 743 | | _ => {}, [INFO] [stderr] 744 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 726 | match *mode { [INFO] [stderr] 727 | b'p' => p10_set_channel_mode_helper(channel, adding, CMODE_PRIVATE.bits()), [INFO] [stderr] 728 | b's' => p10_set_channel_mode_helper(channel, adding, CMODE_SECRET.bits()), [INFO] [stderr] 729 | b'm' => p10_set_channel_mode_helper(channel, adding, CMODE_MODERATED.bits()), [INFO] [stderr] 730 | b't' => p10_set_channel_mode_helper(channel, adding, CMODE_TOPICLIMIT.bits()), [INFO] [stderr] 731 | b'i' => p10_set_channel_mode_helper(channel, adding, CMODE_INVITEONLY.bits()), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/p10.rs:774:9 [INFO] [stderr] | [INFO] [stderr] 774 | / match mode { [INFO] [stderr] 775 | | &b' ' => break, [INFO] [stderr] 776 | | &b'+' => adding = true, [INFO] [stderr] 777 | | &b'-' => adding = false, [INFO] [stderr] ... | [INFO] [stderr] 869 | | } [INFO] [stderr] 870 | | } [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] 774 | match *mode { [INFO] [stderr] 775 | b' ' => break, [INFO] [stderr] 776 | b'+' => adding = true, [INFO] [stderr] 777 | b'-' => adding = false, [INFO] [stderr] 778 | b'o' => p10_set_user_mode_helper(user, adding, UMODE_OPER.bits()), [INFO] [stderr] 779 | b'i' => p10_set_user_mode_helper(user, adding, UMODE_INVISIBLE.bits()), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the loop variable `index` is only used to index `modes`. [INFO] [stderr] --> src/p10.rs:800:38 [INFO] [stderr] | [INFO] [stderr] 800 | for index in wordptr..modes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 800 | for in modes.iter().skip(wordptr) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/p10.rs:857:24 [INFO] [stderr] | [INFO] [stderr] 857 | if back.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!back.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: useless use of `format!` [INFO] [stderr] --> src/core_data.rs:55:57 [INFO] [stderr] | [INFO] [stderr] 55 | log(Debug, "CORE_DATA", format!("Registered hook")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Registered hook".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/core_data.rs:85:34 [INFO] [stderr] | [INFO] [stderr] 85 | let mut plugin = self.plugins.iter_mut().filter(|x| ptr::eq(&***x, event.plugin_ptr)).next().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|x| ptr::eq(&***x, event.plugin_ptr)).next()` with `find(|x| ptr::eq(&***x, event.plugin_ptr))` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [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/p10.rs:917:65 [INFO] [stderr] | [INFO] [stderr] 917 | fn find_user_numeric<'a>(core_data: &'a NeroData, numeric: &Vec) -> Option<&'a Rc>>> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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: the loop variable `ll` is used to index `line` [INFO] [stderr] --> src/p10.rs:979:19 [INFO] [stderr] | [INFO] [stderr] 979 | for ll in jj..line.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 979 | for (ll, ) in line.iter().enumerate().skip(jj) { [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/p10.rs:987:12 [INFO] [stderr] | [INFO] [stderr] 987 | if buf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buf.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 loop variable `ii` is only used to index `buffer`. [INFO] [stderr] --> src/p10.rs:1062:15 [INFO] [stderr] | [INFO] [stderr] 1062 | for ii in 0..buffer.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 1062 | for in &mut buffer { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/p10.rs:1078:8 [INFO] [stderr] | [INFO] [stderr] 1078 | if decoded.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `decoded.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: useless use of `format!` [INFO] [stderr] --> src/plugin_handler.rs:29:46 [INFO] [stderr] | [INFO] [stderr] 29 | log(Error, "plugin_handler", format!("Failed to read plugin initializer")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to read plugin initializer".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/plugin_handler.rs:30:68 [INFO] [stderr] | [INFO] [stderr] 30 | ::std::io::Error::new(::std::io::ErrorKind::Other, format!("Failed to read symbols")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to read symbols".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/p10.rs:77:36 [INFO] [stderr] | [INFO] [stderr] 77 | const UMODE_OPER = 1 << 0; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/p10.rs:92:35 [INFO] [stderr] | [INFO] [stderr] 92 | const CMODE_PRIVATE = 1 << 0; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/p10.rs:113:35 [INFO] [stderr] | [INFO] [stderr] 113 | const MMODE_CHANOP = 1 << 0; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/p10.rs:201:12 [INFO] [stderr] | [INFO] [stderr] 201 | if argv.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `argv.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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/p10.rs:242:13 [INFO] [stderr] | [INFO] [stderr] 242 | / let mut newargv: Vec> = argv.clone(); [INFO] [stderr] 243 | | if cmd > 0 { [INFO] [stderr] 244 | | newargv = argv[1..].to_vec(); [INFO] [stderr] 245 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let newargv = if cmd > 0 { argv[1..].to_vec() } else { argv.clone() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:224:21 [INFO] [stderr] | [INFO] [stderr] 224 | / match find_server_numeric(core_data, &argv[0].to_vec()) { [INFO] [stderr] 225 | | Some(ref server) => { [INFO] [stderr] 226 | | origin = server.borrow().ext.numeric.clone(); [INFO] [stderr] 227 | | } [INFO] [stderr] 228 | | None => {}, [INFO] [stderr] 229 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 224 | if let Some(ref server) = find_server_numeric(core_data, &argv[0].to_vec()) { [INFO] [stderr] 225 | origin = server.borrow().ext.numeric.clone(); [INFO] [stderr] 226 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:232:21 [INFO] [stderr] | [INFO] [stderr] 232 | / match find_user_numeric(core_data, &argv[0].to_vec()) { [INFO] [stderr] 233 | | Some(ref user) => { [INFO] [stderr] 234 | | origin = user.borrow().ext.numeric.clone(); [INFO] [stderr] 235 | | } [INFO] [stderr] 236 | | None => {}, [INFO] [stderr] 237 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 232 | if let Some(ref user) = find_user_numeric(core_data, &argv[0].to_vec()) { [INFO] [stderr] 233 | origin = user.borrow().ext.numeric.clone(); [INFO] [stderr] 234 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/p10.rs:262:20 [INFO] [stderr] | [INFO] [stderr] 262 | if let Err(_) = result { [INFO] [stderr] | _____________- ^^^^^^ [INFO] [stderr] 263 | | log(Error, "MAIN", format!("PARSE ERROR: {}", dv(&message))); [INFO] [stderr] 264 | | } [INFO] [stderr] | |_____________- help: try this: `if result.is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:281:5 [INFO] [stderr] | [INFO] [stderr] 281 | / match str::from_utf8(&argv[2]) { [INFO] [stderr] 282 | | Ok(str_int) => { [INFO] [stderr] 283 | | server.hops = match String::from(str_int).parse() { [INFO] [stderr] 284 | | Ok(i) => i, [INFO] [stderr] ... | [INFO] [stderr] 288 | | Err(_) => {}, // TODO [INFO] [stderr] 289 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 281 | if let Ok(str_int) = str::from_utf8(&argv[2]) { [INFO] [stderr] 282 | server.hops = match String::from(str_int).parse() { [INFO] [stderr] 283 | Ok(i) => i, [INFO] [stderr] 284 | Err(_) => 0, [INFO] [stderr] 285 | }; [INFO] [stderr] 286 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:291:5 [INFO] [stderr] | [INFO] [stderr] 291 | / match str::from_utf8(&argv[3]) { [INFO] [stderr] 292 | | Ok(str_int) => { [INFO] [stderr] 293 | | server.boot = match String::from(str_int).parse() { [INFO] [stderr] 294 | | Ok(i) => i, [INFO] [stderr] ... | [INFO] [stderr] 298 | | Err(_) => {}, // TODO [INFO] [stderr] 299 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 291 | if let Ok(str_int) = str::from_utf8(&argv[3]) { [INFO] [stderr] 292 | server.boot = match String::from(str_int).parse() { [INFO] [stderr] 293 | Ok(i) => i, [INFO] [stderr] 294 | Err(_) => 0, [INFO] [stderr] 295 | }; [INFO] [stderr] 296 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:301:5 [INFO] [stderr] | [INFO] [stderr] 301 | / match str::from_utf8(&argv[4]) { [INFO] [stderr] 302 | | Ok(str_int) => { [INFO] [stderr] 303 | | server.link_time = match String::from(str_int).parse() { [INFO] [stderr] 304 | | Ok(i) => i, [INFO] [stderr] ... | [INFO] [stderr] 308 | | Err(_) => {}, // TODO [INFO] [stderr] 309 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 301 | if let Ok(str_int) = str::from_utf8(&argv[4]) { [INFO] [stderr] 302 | server.link_time = match String::from(str_int).parse() { [INFO] [stderr] 303 | Ok(i) => i, [INFO] [stderr] 304 | Err(_) => 0, [INFO] [stderr] 305 | }; [INFO] [stderr] 306 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:320:9 [INFO] [stderr] | [INFO] [stderr] 320 | / match uplink { [INFO] [stderr] 321 | | Some(arc_server) => server.uplink = Some(arc_server.clone()), [INFO] [stderr] 322 | | None => {}, [INFO] [stderr] 323 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(arc_server) = uplink { server.uplink = Some(arc_server.clone()) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/p10.rs:334:27 [INFO] [stderr] | [INFO] [stderr] 334 | let sender_rc = match find_server_numeric(core_data, origin).map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `find_server_numeric(core_data, origin).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/p10.rs:374:28 [INFO] [stderr] | [INFO] [stderr] 374 | let channel_rc = match find_channel(core_data, &argv[1]).map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `find_channel(core_data, &argv[1]).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/p10.rs:393:23 [INFO] [stderr] | [INFO] [stderr] 393 | let option_user = find_user_numeric(core_data, &origin.to_vec()).map(|x| x.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `find_user_numeric(core_data, &origin.to_vec()).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/p10.rs:516:23 [INFO] [stderr] | [INFO] [stderr] 516 | let option_user = find_user_numeric(core_data, &origin.to_vec()).map(|x| x.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `find_user_numeric(core_data, &origin.to_vec()).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/p10.rs:533:22 [INFO] [stderr] | [INFO] [stderr] 533 | let server = find_server_numeric(core_data, &origin.to_vec()).map(|x| x.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `find_server_numeric(core_data, &origin.to_vec()).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:562:5 [INFO] [stderr] | [INFO] [stderr] 562 | / match user { [INFO] [stderr] 563 | | Some(u) => { [INFO] [stderr] 564 | | channel.topic_nick = u.borrow().nick.clone(); [INFO] [stderr] 565 | | }, [INFO] [stderr] 566 | | None => {}, [INFO] [stderr] 567 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 562 | if let Some(u) = user { [INFO] [stderr] 563 | channel.topic_nick = u.borrow().nick.clone(); [INFO] [stderr] 564 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:595:5 [INFO] [stderr] | [INFO] [stderr] 595 | / match find_channel(core_data, name) { [INFO] [stderr] 596 | | Some(current_channel_rc) => { [INFO] [stderr] 597 | | let mut current_channel = current_channel_rc.borrow_mut(); [INFO] [stderr] 598 | | if current_channel.created > created_time { [INFO] [stderr] ... | [INFO] [stderr] 606 | | None => {}, [INFO] [stderr] 607 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 595 | if let Some(current_channel_rc) = find_channel(core_data, name) { [INFO] [stderr] 596 | let mut current_channel = current_channel_rc.borrow_mut(); [INFO] [stderr] 597 | if current_channel.created > created_time { [INFO] [stderr] 598 | current_channel.created = created_time; [INFO] [stderr] 599 | current_channel.topic_time = 0; [INFO] [stderr] 600 | current_channel.topic = Vec::new(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/p10.rs:641:8 [INFO] [stderr] | [INFO] [stderr] 641 | if split_modes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!split_modes.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 loop variable `ii` is only used to index `split_modes`. [INFO] [stderr] --> src/p10.rs:646:19 [INFO] [stderr] | [INFO] [stderr] 646 | for ii in 1..split_modes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 646 | for in split_modes.iter().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (10/7) [INFO] [stderr] --> src/p10.rs:680:1 [INFO] [stderr] | [INFO] [stderr] 680 | / fn p10_add_user(core_data: &mut NeroData, option_uplink: Option>>>, nick: &[u8], ident: &[u8], hostname: &[u8], modes: &[u8], numeric: &[u8], gecos: &[u8], timestamp: &[u8], realip: &[u8]) -> Result>>, ()> { [INFO] [stderr] 681 | | use std::str; [INFO] [stderr] 682 | | [INFO] [stderr] 683 | | let decimal_ip = base64_to_vecu8(&realip); [INFO] [stderr] ... | [INFO] [stderr] 722 | | Ok(shared_user.clone()) [INFO] [stderr] 723 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/p10.rs:706:5 [INFO] [stderr] | [INFO] [stderr] 706 | / match str::from_utf8(timestamp) { [INFO] [stderr] 707 | | Ok(str_int) => { [INFO] [stderr] 708 | | user_node.ext.timestamp = match String::from(str_int).parse() { [INFO] [stderr] 709 | | Ok(i) => i, [INFO] [stderr] ... | [INFO] [stderr] 713 | | Err(_) => {}, // TODO [INFO] [stderr] 714 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 706 | if let Ok(str_int) = str::from_utf8(timestamp) { [INFO] [stderr] 707 | user_node.ext.timestamp = match String::from(str_int).parse() { [INFO] [stderr] 708 | Ok(i) => i, [INFO] [stderr] 709 | Err(_) => 0, [INFO] [stderr] 710 | }; [INFO] [stderr] 711 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/p10.rs:725:73 [INFO] [stderr] | [INFO] [stderr] 725 | fn p10_add_channel_mode(channel: &mut Channel, adding: bool, mode: &u8) { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/p10.rs:726:5 [INFO] [stderr] | [INFO] [stderr] 726 | / match mode { [INFO] [stderr] 727 | | &b'p' => p10_set_channel_mode_helper(channel, adding, CMODE_PRIVATE.bits()), [INFO] [stderr] 728 | | &b's' => p10_set_channel_mode_helper(channel, adding, CMODE_SECRET.bits()), [INFO] [stderr] 729 | | &b'm' => p10_set_channel_mode_helper(channel, adding, CMODE_MODERATED.bits()), [INFO] [stderr] ... | [INFO] [stderr] 743 | | _ => {}, [INFO] [stderr] 744 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 726 | match *mode { [INFO] [stderr] 727 | b'p' => p10_set_channel_mode_helper(channel, adding, CMODE_PRIVATE.bits()), [INFO] [stderr] 728 | b's' => p10_set_channel_mode_helper(channel, adding, CMODE_SECRET.bits()), [INFO] [stderr] 729 | b'm' => p10_set_channel_mode_helper(channel, adding, CMODE_MODERATED.bits()), [INFO] [stderr] 730 | b't' => p10_set_channel_mode_helper(channel, adding, CMODE_TOPICLIMIT.bits()), [INFO] [stderr] 731 | b'i' => p10_set_channel_mode_helper(channel, adding, CMODE_INVITEONLY.bits()), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/p10.rs:774:9 [INFO] [stderr] | [INFO] [stderr] 774 | / match mode { [INFO] [stderr] 775 | | &b' ' => break, [INFO] [stderr] 776 | | &b'+' => adding = true, [INFO] [stderr] 777 | | &b'-' => adding = false, [INFO] [stderr] ... | [INFO] [stderr] 869 | | } [INFO] [stderr] 870 | | } [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] 774 | match *mode { [INFO] [stderr] 775 | b' ' => break, [INFO] [stderr] 776 | b'+' => adding = true, [INFO] [stderr] 777 | b'-' => adding = false, [INFO] [stderr] 778 | b'o' => p10_set_user_mode_helper(user, adding, UMODE_OPER.bits()), [INFO] [stderr] 779 | b'i' => p10_set_user_mode_helper(user, adding, UMODE_INVISIBLE.bits()), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the loop variable `index` is only used to index `modes`. [INFO] [stderr] --> src/p10.rs:800:38 [INFO] [stderr] | [INFO] [stderr] 800 | for index in wordptr..modes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 800 | for in modes.iter().skip(wordptr) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/p10.rs:857:24 [INFO] [stderr] | [INFO] [stderr] 857 | if back.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!back.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/p10.rs:917:65 [INFO] [stderr] | [INFO] [stderr] 917 | fn find_user_numeric<'a>(core_data: &'a NeroData, numeric: &Vec) -> Option<&'a Rc>>> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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: the loop variable `ll` is used to index `line` [INFO] [stderr] --> src/p10.rs:979:19 [INFO] [stderr] | [INFO] [stderr] 979 | for ll in jj..line.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 979 | for (ll, ) in line.iter().enumerate().skip(jj) { [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/p10.rs:987:12 [INFO] [stderr] | [INFO] [stderr] 987 | if buf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buf.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 loop variable `ii` is only used to index `buffer`. [INFO] [stderr] --> src/p10.rs:1062:15 [INFO] [stderr] | [INFO] [stderr] 1062 | for ii in 0..buffer.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 1062 | for in &mut buffer { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/p10.rs:1078:8 [INFO] [stderr] | [INFO] [stderr] 1078 | if decoded.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `decoded.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: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1098:25 [INFO] [stderr] | [INFO] [stderr] 1098 | Channel::::new(format!("#nero").as_bytes(), 0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"#nero".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1149:27 [INFO] [stderr] | [INFO] [stderr] 1149 | let s = split_string(&format!("+ntl 34").into_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"+ntl 34".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1154:27 [INFO] [stderr] | [INFO] [stderr] 1154 | let s = split_string(&format!("fdas fasd adsf asfd dfas").into_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"fdas fasd adsf asfd dfas".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1162:27 [INFO] [stderr] | [INFO] [stderr] 1162 | let s = split_string(&format!("aaaaaaa").into_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"aaaaaaa".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1166:27 [INFO] [stderr] | [INFO] [stderr] 1166 | let s = split_string(&format!("").into_bytes()); [INFO] [stderr] | ^^^^^^^^^^^ help: consider using .to_string(): `"".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1173:9 [INFO] [stderr] | [INFO] [stderr] 1173 | format!("A").into_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"A".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1174:9 [INFO] [stderr] | [INFO] [stderr] 1174 | format!("BB").into_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `"BB".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1175:9 [INFO] [stderr] | [INFO] [stderr] 1175 | format!("TEST").into_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"TEST".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1176:9 [INFO] [stderr] | [INFO] [stderr] 1176 | format!("SOMETING").into_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"SOMETING".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1177:9 [INFO] [stderr] | [INFO] [stderr] 1177 | format!("FDSAADFS").into_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FDSAADFS".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1178:9 [INFO] [stderr] | [INFO] [stderr] 1178 | format!("FADS").into_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FADS".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1179:9 [INFO] [stderr] | [INFO] [stderr] 1179 | format!("ASDf").into_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"ASDf".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1188:9 [INFO] [stderr] | [INFO] [stderr] 1188 | format!("B").into_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"B".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1189:9 [INFO] [stderr] | [INFO] [stderr] 1189 | format!("#channel").into_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"#channel".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1190:9 [INFO] [stderr] | [INFO] [stderr] 1190 | format!("9999999999").into_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"9999999999".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1191:9 [INFO] [stderr] | [INFO] [stderr] 1191 | format!("+stnzl").into_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"+stnzl".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1192:9 [INFO] [stderr] | [INFO] [stderr] 1192 | format!("554").into_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"554".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1193:9 [INFO] [stderr] | [INFO] [stderr] 1193 | format!("AAAAA:o,AAAAB,AAAAC").into_bytes(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"AAAAA:o,AAAAB,AAAAC".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with position. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/p10.rs:1207:13 [INFO] [stderr] | [INFO] [stderr] 1207 | assert!(channel.bans.iter().position(|n| n == &format!("*!*@test.host.a").into_bytes().to_vec()).is_some()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `position(|n| n == &format!("*!*@test.host.a").into_bytes().to_vec()).is_some()` with `any(|n| n == &format!("*!*@test.host.a").into_bytes().to_vec())` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1207:52 [INFO] [stderr] | [INFO] [stderr] 1207 | assert!(channel.bans.iter().position(|n| n == &format!("*!*@test.host.a").into_bytes().to_vec()).is_some()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"*!*@test.host.a".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with position. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/p10.rs:1208:13 [INFO] [stderr] | [INFO] [stderr] 1208 | assert!(channel.bans.iter().position(|n| n == &format!("*ident~!*@*").into_bytes().to_vec()).is_some()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: replace `position(|n| n == &format!("*ident~!*@*").into_bytes().to_vec()).is_some()` with `any(|n| n == &format!("*ident~!*@*").into_bytes().to_vec())` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1208:52 [INFO] [stderr] | [INFO] [stderr] 1208 | assert!(channel.bans.iter().position(|n| n == &format!("*ident~!*@*").into_bytes().to_vec()).is_some()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"*ident~!*@*".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with position. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/p10.rs:1209:13 [INFO] [stderr] | [INFO] [stderr] 1209 | assert!(channel.bans.iter().position(|n| n == &format!("*!*@127.0.0.1").into_bytes().to_vec()).is_some()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: replace `position(|n| n == &format!("*!*@127.0.0.1").into_bytes().to_vec()).is_some()` with `any(|n| n == &format!("*!*@127.0.0.1").into_bytes().to_vec())` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1209:52 [INFO] [stderr] | [INFO] [stderr] 1209 | assert!(channel.bans.iter().position(|n| n == &format!("*!*@127.0.0.1").into_bytes().to_vec()).is_some()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"*!*@127.0.0.1".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1210:52 [INFO] [stderr] | [INFO] [stderr] 1210 | assert!(channel.bans.iter().position(|n| n == &format!("*!*@*").into_bytes().to_vec()).is_none()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"*!*@*".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/p10.rs:1216:52 [INFO] [stderr] | [INFO] [stderr] 1216 | assert!(channel.bans.iter().position(|n| n == &format!("*!*@*").into_bytes().to_vec()).is_none()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"*!*@*".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 34 [INFO] [stderr] --> src/p10.rs:1241:1 [INFO] [stderr] | [INFO] [stderr] 1241 | / fn test_adds_channel_mode_bitflags() { [INFO] [stderr] 1242 | | let mut channel = test_make_channel(); [INFO] [stderr] 1243 | | [INFO] [stderr] 1244 | | // Private [INFO] [stderr] ... | [INFO] [stderr] 1323 | | assert!(channel.modes & CMODE_UPASS.bits() > 0); [INFO] [stderr] 1324 | | } [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: useless use of `format!` [INFO] [stderr] --> src/plugin_handler.rs:29:46 [INFO] [stderr] | [INFO] [stderr] 29 | log(Error, "plugin_handler", format!("Failed to read plugin initializer")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to read plugin initializer".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/plugin_handler.rs:30:68 [INFO] [stderr] | [INFO] [stderr] 30 | ::std::io::Error::new(::std::io::ErrorKind::Other, format!("Failed to read symbols")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to read symbols".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 13.23s [INFO] running `"docker" "inspect" "eea2ccce01bd905dcaeeb7457a66be69de7fbae566db25764ea9b6afb4882d91"` [INFO] running `"docker" "rm" "-f" "eea2ccce01bd905dcaeeb7457a66be69de7fbae566db25764ea9b6afb4882d91"` [INFO] [stdout] eea2ccce01bd905dcaeeb7457a66be69de7fbae566db25764ea9b6afb4882d91