[INFO] crate dazeus 0.4.0 is already in cache [INFO] extracting crate dazeus 0.4.0 into work/ex/clippy-test-run/sources/stable/reg/dazeus/0.4.0 [INFO] extracting crate dazeus 0.4.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dazeus/0.4.0 [INFO] validating manifest of dazeus-0.4.0 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 dazeus-0.4.0 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 dazeus-0.4.0 [INFO] finished frobbing dazeus-0.4.0 [INFO] frobbed toml for dazeus-0.4.0 written to work/ex/clippy-test-run/sources/stable/reg/dazeus/0.4.0/Cargo.toml [INFO] started frobbing dazeus-0.4.0 [INFO] finished frobbing dazeus-0.4.0 [INFO] frobbed toml for dazeus-0.4.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dazeus/0.4.0/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 dazeus-0.4.0 against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dazeus/0.4.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dclippy::into_iter_on_array" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] c2dbdd9629c506372f3b2160c428797190430493d3f5b9d9c97e7be21a327d0a [INFO] running `"docker" "start" "-a" "c2dbdd9629c506372f3b2160c428797190430493d3f5b9d9c97e7be21a327d0a"` [INFO] [stderr] Checking unix_socket v0.3.2 [INFO] [stderr] Checking dazeus v0.4.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/event.rs:182:17 [INFO] [stderr] | [INFO] [stderr] 182 | Event { event: event, params: params } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `event` [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/event.rs:182:31 [INFO] [stderr] | [INFO] [stderr] 182 | Event { event: event, params: params } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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/handler.rs:22:19 [INFO] [stderr] | [INFO] [stderr] 22 | Handler { socket: socket, buffer: Vec::new() } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `socket` [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/listener.rs:33:39 [INFO] [stderr] | [INFO] [stderr] 33 | Listener { event: event_type, handle: handle, callback: RefCell::new(Box::new(listener)) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `handle` [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/scope.rs:33:17 [INFO] [stderr] | [INFO] [stderr] 33 | Scope { network: network, sender: sender, receiver: receiver } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `network` [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/scope.rs:33:35 [INFO] [stderr] | [INFO] [stderr] 33 | Scope { network: network, sender: sender, receiver: receiver } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `sender` [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/scope.rs:33:51 [INFO] [stderr] | [INFO] [stderr] 33 | Scope { network: network, sender: sender, receiver: receiver } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `receiver` [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/event.rs:182:17 [INFO] [stderr] | [INFO] [stderr] 182 | Event { event: event, params: params } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `event` [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/event.rs:182:31 [INFO] [stderr] | [INFO] [stderr] 182 | Event { event: event, params: params } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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/handler.rs:22:19 [INFO] [stderr] | [INFO] [stderr] 22 | Handler { socket: socket, buffer: Vec::new() } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `socket` [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/listener.rs:33:39 [INFO] [stderr] | [INFO] [stderr] 33 | Listener { event: event_type, handle: handle, callback: RefCell::new(Box::new(listener)) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `handle` [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/scope.rs:33:17 [INFO] [stderr] | [INFO] [stderr] 33 | Scope { network: network, sender: sender, receiver: receiver } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `network` [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/scope.rs:33:35 [INFO] [stderr] | [INFO] [stderr] 33 | Scope { network: network, sender: sender, receiver: receiver } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `sender` [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/scope.rs:33:51 [INFO] [stderr] | [INFO] [stderr] 33 | Scope { network: network, sender: sender, receiver: receiver } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `receiver` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/dazeus.rs:520:20 [INFO] [stderr] | [INFO] [stderr] 520 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 521 | | if highlight { [INFO] [stderr] 522 | | let msg = format!("{}: {}", user, message); [INFO] [stderr] 523 | | self.message(network, channel, &msg[..]) [INFO] [stderr] ... | [INFO] [stderr] 526 | | } [INFO] [stderr] 527 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 520 | } else if highlight { [INFO] [stderr] 521 | let msg = format!("{}: {}", user, message); [INFO] [stderr] 522 | self.message(network, channel, &msg[..]) [INFO] [stderr] 523 | } else { [INFO] [stderr] 524 | self.message(network, channel, message) [INFO] [stderr] 525 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/request.rs:10:30 [INFO] [stderr] | [INFO] [stderr] 10 | pub const PROTOCOL_VERSION: &'static str = "1"; [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 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/event.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::ascii::AsciiExt; [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/request.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/dazeus.rs:520:20 [INFO] [stderr] | [INFO] [stderr] 520 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 521 | | if highlight { [INFO] [stderr] 522 | | let msg = format!("{}: {}", user, message); [INFO] [stderr] 523 | | self.message(network, channel, &msg[..]) [INFO] [stderr] ... | [INFO] [stderr] 526 | | } [INFO] [stderr] 527 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 520 | } else if highlight { [INFO] [stderr] 521 | let msg = format!("{}: {}", user, message); [INFO] [stderr] 522 | self.message(network, channel, &msg[..]) [INFO] [stderr] 523 | } else { [INFO] [stderr] 524 | self.message(network, channel, message) [INFO] [stderr] 525 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/request.rs:10:30 [INFO] [stderr] | [INFO] [stderr] 10 | pub const PROTOCOL_VERSION: &'static str = "1"; [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 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/event.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::ascii::AsciiExt; [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/request.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/event.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | 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/request.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/listener.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | let mut func = fbox.deref_mut(); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/connection.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | / pub fn from_str(connection_str: &str) -> Result { [INFO] [stderr] 36 | | let splits = connection_str.splitn(2, ':').collect::>(); [INFO] [stderr] 37 | | if splits.len() == 2 && splits[0] == "unix" { [INFO] [stderr] 38 | | Ok(Connection::Unix(try!(UnixStream::connect(splits[1])))) [INFO] [stderr] ... | [INFO] [stderr] 43 | | } [INFO] [stderr] 44 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/dazeus.rs:53:20 [INFO] [stderr] | [INFO] [stderr] 53 | if queue.responses.len() > 0 && queue.expecting == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!queue.responses.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: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/dazeus.rs:272:47 [INFO] [stderr] | [INFO] [stderr] 272 | match self.listeners.iter().find(|&ref l| l.has_handle(handle)) { [INFO] [stderr] | ^^^^^^ help: try removing the `&ref` part and just keep: `l` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_borrowed_reference)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/dazeus.rs:278:32 [INFO] [stderr] | [INFO] [stderr] 278 | self.listeners.retain(|&ref l| !l.has_handle(handle)); [INFO] [stderr] | ^^^^^^ help: try removing the `&ref` part and just keep: `l` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/dazeus.rs:284:26 [INFO] [stderr] | [INFO] [stderr] 284 | Some(evt) => match self.listeners.iter().any(|&ref l| l.event == evt) { [INFO] [stderr] | __________________________^ [INFO] [stderr] 285 | | false => self.send(Request::Unsubscribe(evt)), [INFO] [stderr] 286 | | true => Response::for_success(), [INFO] [stderr] 287 | | }, [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if self.listeners.iter().any(|&ref l| l.event == evt) { Response::for_success() } else { self.send(Request::Unsubscribe(evt)) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/dazeus.rs:284:59 [INFO] [stderr] | [INFO] [stderr] 284 | Some(evt) => match self.listeners.iter().any(|&ref l| l.event == evt) { [INFO] [stderr] | ^^^^^^ help: try removing the `&ref` part and just keep: `l` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/dazeus.rs:295:32 [INFO] [stderr] | [INFO] [stderr] 295 | self.listeners.retain(|&ref l| l.event != event); [INFO] [stderr] | ^^^^^^ help: try removing the `&ref` part and just keep: `l` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/dazeus.rs:304:36 [INFO] [stderr] | [INFO] [stderr] 304 | self.listeners.iter().any(|&ref l| l.event == event) [INFO] [stderr] | ^^^^^^ help: try removing the `&ref` part and just keep: `l` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/dazeus.rs:517:43 [INFO] [stderr] | [INFO] [stderr] 517 | let nick = self.nick(network).unwrap_or("".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/dazeus.rs:539:43 [INFO] [stderr] | [INFO] [stderr] 539 | let nick = self.nick(network).unwrap_or("".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/dazeus.rs:556:43 [INFO] [stderr] | [INFO] [stderr] 556 | let nick = self.nick(network).unwrap_or("".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: item `event::Event` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/event.rs:166:1 [INFO] [stderr] | [INFO] [stderr] 166 | / impl Event { [INFO] [stderr] 167 | | /// Create a new event based on the basic properties of an event. [INFO] [stderr] 168 | | /// [INFO] [stderr] 169 | | /// Allows creation of events for testing purposes. Also used internally for constructing [INFO] [stderr] ... | [INFO] [stderr] 244 | | } [INFO] [stderr] 245 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [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/event.rs:209:40 [INFO] [stderr] | [INFO] [stderr] 209 | fn create_event(evt: &str, params: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Json]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/event.rs:226:27 [INFO] [stderr] | [INFO] [stderr] 226 | fn param_strs(params: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Json]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/event.rs:237:5 [INFO] [stderr] | [INFO] [stderr] 237 | / pub fn param<'a>(&'a self, idx: usize) -> &'a str { [INFO] [stderr] 238 | | &self.params[idx][..] [INFO] [stderr] 239 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/event.rs:250:5 [INFO] [stderr] | [INFO] [stderr] 250 | / fn index<'a>(&'a self, index: usize) -> &'a str { [INFO] [stderr] 251 | | self.param(index) [INFO] [stderr] 252 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/listener.rs:14:15 [INFO] [stderr] | [INFO] [stderr] 14 | callback: RefCell>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/request.rs:447:12 [INFO] [stderr] | [INFO] [stderr] 447 | if params.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!params.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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/response.rs:83:9 [INFO] [stderr] | [INFO] [stderr] 83 | / match self.get_str(prop) { [INFO] [stderr] 84 | | Some(_) => true, [INFO] [stderr] 85 | | None => false [INFO] [stderr] 86 | | } [INFO] [stderr] | |_________^ help: try this: `self.get_str(prop).is_some()` [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 should consider deriving a `Default` implementation for `error::ParseEventTypeError` [INFO] [stderr] --> src/error.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn new() -> ParseEventTypeError { [INFO] [stderr] 27 | | ParseEventTypeError { _priv: () } [INFO] [stderr] 28 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 22 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `error::ParseConfigGroupError` [INFO] [stderr] --> src/error.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / pub fn new() -> ParseConfigGroupError { [INFO] [stderr] 38 | | ParseConfigGroupError { _priv: () } [INFO] [stderr] 39 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 33 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `error::ReceiveError` [INFO] [stderr] --> src/error.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn new() -> ReceiveError { [INFO] [stderr] 48 | | ReceiveError { _priv: () } [INFO] [stderr] 49 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 44 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/event.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | 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/request.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/listener.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | let mut func = fbox.deref_mut(); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/connection.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | / pub fn from_str(connection_str: &str) -> Result { [INFO] [stderr] 36 | | let splits = connection_str.splitn(2, ':').collect::>(); [INFO] [stderr] 37 | | if splits.len() == 2 && splits[0] == "unix" { [INFO] [stderr] 38 | | Ok(Connection::Unix(try!(UnixStream::connect(splits[1])))) [INFO] [stderr] ... | [INFO] [stderr] 43 | | } [INFO] [stderr] 44 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/dazeus.rs:53:20 [INFO] [stderr] | [INFO] [stderr] 53 | if queue.responses.len() > 0 && queue.expecting == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!queue.responses.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: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/dazeus.rs:272:47 [INFO] [stderr] | [INFO] [stderr] 272 | match self.listeners.iter().find(|&ref l| l.has_handle(handle)) { [INFO] [stderr] | ^^^^^^ help: try removing the `&ref` part and just keep: `l` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_borrowed_reference)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/dazeus.rs:278:32 [INFO] [stderr] | [INFO] [stderr] 278 | self.listeners.retain(|&ref l| !l.has_handle(handle)); [INFO] [stderr] | ^^^^^^ help: try removing the `&ref` part and just keep: `l` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/dazeus.rs:284:26 [INFO] [stderr] | [INFO] [stderr] 284 | Some(evt) => match self.listeners.iter().any(|&ref l| l.event == evt) { [INFO] [stderr] | __________________________^ [INFO] [stderr] 285 | | false => self.send(Request::Unsubscribe(evt)), [INFO] [stderr] 286 | | true => Response::for_success(), [INFO] [stderr] 287 | | }, [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if self.listeners.iter().any(|&ref l| l.event == evt) { Response::for_success() } else { self.send(Request::Unsubscribe(evt)) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/dazeus.rs:284:59 [INFO] [stderr] | [INFO] [stderr] 284 | Some(evt) => match self.listeners.iter().any(|&ref l| l.event == evt) { [INFO] [stderr] | ^^^^^^ help: try removing the `&ref` part and just keep: `l` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/dazeus.rs:295:32 [INFO] [stderr] | [INFO] [stderr] 295 | self.listeners.retain(|&ref l| l.event != event); [INFO] [stderr] | ^^^^^^ help: try removing the `&ref` part and just keep: `l` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/dazeus.rs:304:36 [INFO] [stderr] | [INFO] [stderr] 304 | self.listeners.iter().any(|&ref l| l.event == event) [INFO] [stderr] | ^^^^^^ help: try removing the `&ref` part and just keep: `l` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/dazeus.rs:517:43 [INFO] [stderr] | [INFO] [stderr] 517 | let nick = self.nick(network).unwrap_or("".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/dazeus.rs:539:43 [INFO] [stderr] | [INFO] [stderr] 539 | let nick = self.nick(network).unwrap_or("".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/dazeus.rs:556:43 [INFO] [stderr] | [INFO] [stderr] 556 | let nick = self.nick(network).unwrap_or("".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: item `event::Event` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/event.rs:166:1 [INFO] [stderr] | [INFO] [stderr] 166 | / impl Event { [INFO] [stderr] 167 | | /// Create a new event based on the basic properties of an event. [INFO] [stderr] 168 | | /// [INFO] [stderr] 169 | | /// Allows creation of events for testing purposes. Also used internally for constructing [INFO] [stderr] ... | [INFO] [stderr] 244 | | } [INFO] [stderr] 245 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [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/event.rs:209:40 [INFO] [stderr] | [INFO] [stderr] 209 | fn create_event(evt: &str, params: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Json]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/event.rs:226:27 [INFO] [stderr] | [INFO] [stderr] 226 | fn param_strs(params: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Json]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/event.rs:237:5 [INFO] [stderr] | [INFO] [stderr] 237 | / pub fn param<'a>(&'a self, idx: usize) -> &'a str { [INFO] [stderr] 238 | | &self.params[idx][..] [INFO] [stderr] 239 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/event.rs:250:5 [INFO] [stderr] | [INFO] [stderr] 250 | / fn index<'a>(&'a self, index: usize) -> &'a str { [INFO] [stderr] 251 | | self.param(index) [INFO] [stderr] 252 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/listener.rs:14:15 [INFO] [stderr] | [INFO] [stderr] 14 | callback: RefCell>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/request.rs:447:12 [INFO] [stderr] | [INFO] [stderr] 447 | if params.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!params.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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/response.rs:83:9 [INFO] [stderr] | [INFO] [stderr] 83 | / match self.get_str(prop) { [INFO] [stderr] 84 | | Some(_) => true, [INFO] [stderr] 85 | | None => false [INFO] [stderr] 86 | | } [INFO] [stderr] | |_________^ help: try this: `self.get_str(prop).is_some()` [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 should consider deriving a `Default` implementation for `error::ParseEventTypeError` [INFO] [stderr] --> src/error.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn new() -> ParseEventTypeError { [INFO] [stderr] 27 | | ParseEventTypeError { _priv: () } [INFO] [stderr] 28 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 22 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `error::ParseConfigGroupError` [INFO] [stderr] --> src/error.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / pub fn new() -> ParseConfigGroupError { [INFO] [stderr] 38 | | ParseConfigGroupError { _priv: () } [INFO] [stderr] 39 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 33 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `error::ReceiveError` [INFO] [stderr] --> src/error.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn new() -> ReceiveError { [INFO] [stderr] 48 | | ReceiveError { _priv: () } [INFO] [stderr] 49 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 44 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.13s [INFO] running `"docker" "inspect" "c2dbdd9629c506372f3b2160c428797190430493d3f5b9d9c97e7be21a327d0a"` [INFO] running `"docker" "rm" "-f" "c2dbdd9629c506372f3b2160c428797190430493d3f5b9d9c97e7be21a327d0a"` [INFO] [stdout] c2dbdd9629c506372f3b2160c428797190430493d3f5b9d9c97e7be21a327d0a