[INFO] crate stund 0.1.3 is already in cache [INFO] extracting crate stund 0.1.3 into work/ex/clippy-test-run/sources/stable/reg/stund/0.1.3 [INFO] extracting crate stund 0.1.3 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/stund/0.1.3 [INFO] validating manifest of stund-0.1.3 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 stund-0.1.3 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 stund-0.1.3 [INFO] finished frobbing stund-0.1.3 [INFO] frobbed toml for stund-0.1.3 written to work/ex/clippy-test-run/sources/stable/reg/stund/0.1.3/Cargo.toml [INFO] started frobbing stund-0.1.3 [INFO] finished frobbing stund-0.1.3 [INFO] frobbed toml for stund-0.1.3 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/stund/0.1.3/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 stund-0.1.3 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/stund/0.1.3:/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] a9fa46cb7d32435b4d0e3519a0796c065357daeafdc993388cfc15e52781fa80 [INFO] running `"docker" "start" "-a" "a9fa46cb7d32435b4d0e3519a0796c065357daeafdc993388cfc15e52781fa80"` [INFO] [stderr] Checking arc-swap v0.3.7 [INFO] [stderr] Checking rent_to_own v0.1.0 [INFO] [stderr] Checking daemonize v0.2.3 [INFO] [stderr] Checking bincode v1.0.1 [INFO] [stderr] Compiling derive-error v0.0.3 [INFO] [stderr] Checking bincode v0.8.0 [INFO] [stderr] Checking tokio-serde v0.1.0 [INFO] [stderr] Compiling darling_core v0.8.3 [INFO] [stderr] Compiling structopt-derive v0.2.14 [INFO] [stderr] Checking tokio-uds v0.1.7 [INFO] [stderr] Checking tokio-signal v0.1.5 [INFO] [stderr] Checking tokio-borrow-stdio v0.1.0 [INFO] [stderr] Checking tokio-serde-bincode v0.2.1 [INFO] [stderr] Checking signal-hook v0.1.7 [INFO] [stderr] Checking tokio-serde-bincode v0.1.1 [INFO] [stderr] Checking tokio-signal v0.2.7 [INFO] [stderr] Checking structopt v0.2.14 [INFO] [stderr] Compiling darling_macro v0.8.3 [INFO] [stderr] Compiling darling v0.8.3 [INFO] [stderr] Checking tokio-pty-process v0.3.1 [INFO] [stderr] Compiling derive_state_machine_future v0.1.8 [INFO] [stderr] Checking state_machine_future v0.1.8 [INFO] [stderr] Checking stund_protocol v0.1.4 [INFO] [stderr] Checking stund v0.1.3 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/daemon.rs:108:13 [INFO] [stderr] | [INFO] [stderr] 108 | log: log, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `log` [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/daemon.rs:341:9 [INFO] [stderr] | [INFO] [stderr] 341 | shared: shared, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `shared` [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/daemon.rs:343:9 [INFO] [stderr] | [INFO] [stderr] 343 | tx_exit: tx_exit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `tx_exit` [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/daemon.rs:702:13 [INFO] [stderr] | [INFO] [stderr] 702 | tx_kill: tx_kill, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `tx_kill` [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/daemon.rs:803:13 [INFO] [stderr] | [INFO] [stderr] 803 | state: state, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `state` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/daemon.rs:817:9 [INFO] [stderr] | [INFO] [stderr] 817 | common: common, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `common` [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/daemon.rs:819:9 [INFO] [stderr] | [INFO] [stderr] 819 | rx: rx, [INFO] [stderr] | ^^^^^^ help: replace it with: `rx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/main.rs:216:13 [INFO] [stderr] | [INFO] [stderr] 216 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/daemon.rs:108:13 [INFO] [stderr] | [INFO] [stderr] 108 | log: log, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `log` [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/daemon.rs:341:9 [INFO] [stderr] | [INFO] [stderr] 341 | shared: shared, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `shared` [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/daemon.rs:343:9 [INFO] [stderr] | [INFO] [stderr] 343 | tx_exit: tx_exit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `tx_exit` [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/daemon.rs:702:13 [INFO] [stderr] | [INFO] [stderr] 702 | tx_kill: tx_kill, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `tx_kill` [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/daemon.rs:803:13 [INFO] [stderr] | [INFO] [stderr] 803 | state: state, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `state` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/daemon.rs:817:9 [INFO] [stderr] | [INFO] [stderr] 817 | common: common, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `common` [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/daemon.rs:819:9 [INFO] [stderr] | [INFO] [stderr] 819 | rx: rx, [INFO] [stderr] | ^^^^^^ help: replace it with: `rx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/main.rs:216:13 [INFO] [stderr] | [INFO] [stderr] 216 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | #[macro_use] extern crate structopt; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/daemon.rs:297:17 [INFO] [stderr] | [INFO] [stderr] 297 | return Err(()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(())` [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: unneeded return statement [INFO] [stderr] --> src/daemon.rs:305:17 [INFO] [stderr] | [INFO] [stderr] 305 | return Ok(Async::NotReady); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Async::NotReady)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/daemon.rs:443:17 [INFO] [stderr] | [INFO] [stderr] 443 | return process_close_command(state.common, params, state.tx, state.rx); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `process_close_command(state.common, params, state.tx, state.rx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/daemon.rs:447:17 [INFO] [stderr] | [INFO] [stderr] 447 | return process_open_command(state.common, params, state.tx, state.rx); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `process_open_command(state.common, params, state.tx, state.rx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/daemon.rs:471:17 [INFO] [stderr] | [INFO] [stderr] 471 | return process_status_query(state.common, state.tx, state.rx); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `process_status_query(state.common, state.tx, state.rx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/daemon.rs:475:17 [INFO] [stderr] | [INFO] [stderr] 475 | return Err(format_err!("unexpected message from client: {:?}", other)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(format_err!("unexpected message from client: {:?}", other))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::length_delimited::FramedRead': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:30:41 [INFO] [stderr] | [INFO] [stderr] 30 | use tokio_io::codec::length_delimited::{FramedRead, FramedWrite}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::length_delimited::FramedWrite': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:30:53 [INFO] [stderr] | [INFO] [stderr] 30 | use tokio_io::codec::length_delimited::{FramedRead, FramedWrite}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::BytesCodec': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:31:23 [INFO] [stderr] | [INFO] [stderr] 31 | use tokio_io::codec::{BytesCodec, Framed}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:31:35 [INFO] [stderr] | [INFO] [stderr] 31 | use tokio_io::codec::{BytesCodec, Framed}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::length_delimited::FramedWrite': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:40:25 [INFO] [stderr] | [INFO] [stderr] 40 | type Ser = WriteBincode>, ServerMessage>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::length_delimited::FramedRead': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:41:23 [INFO] [stderr] | [INFO] [stderr] 41 | type De = ReadBincode>, ClientMessage>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:195:30 [INFO] [stderr] | [INFO] [stderr] 195 | type PtyStream = SplitStream>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::BytesCodec': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:195:53 [INFO] [stderr] | [INFO] [stderr] 195 | type PtyStream = SplitStream>; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:196:26 [INFO] [stderr] | [INFO] [stderr] 196 | type PtySink = SplitSink>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::BytesCodec': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:196:49 [INFO] [stderr] | [INFO] [stderr] 196 | type PtySink = SplitSink>; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::length_delimited::FramedWrite': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:330:18 [INFO] [stderr] | [INFO] [stderr] 330 | let wdelim = FramedWrite::new(write); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::length_delimited::FramedRead': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:332:18 [INFO] [stderr] | [INFO] [stderr] 332 | let rdelim = FramedRead::new(read); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:676:17 [INFO] [stderr] | [INFO] [stderr] 676 | ) -> Result, Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::BytesCodec': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:676:40 [INFO] [stderr] | [INFO] [stderr] 676 | ) -> Result, Error> { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::BytesCodec': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:705:29 [INFO] [stderr] | [INFO] [stderr] 705 | Ok(ptymaster.framed(BytesCodec::new())) [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead [INFO] [stderr] --> src/daemon.rs:705:22 [INFO] [stderr] | [INFO] [stderr] 705 | Ok(ptymaster.framed(BytesCodec::new())) [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | #[macro_use] extern crate structopt; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/daemon.rs:297:17 [INFO] [stderr] | [INFO] [stderr] 297 | return Err(()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(())` [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: unneeded return statement [INFO] [stderr] --> src/daemon.rs:305:17 [INFO] [stderr] | [INFO] [stderr] 305 | return Ok(Async::NotReady); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Async::NotReady)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/daemon.rs:443:17 [INFO] [stderr] | [INFO] [stderr] 443 | return process_close_command(state.common, params, state.tx, state.rx); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `process_close_command(state.common, params, state.tx, state.rx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/daemon.rs:447:17 [INFO] [stderr] | [INFO] [stderr] 447 | return process_open_command(state.common, params, state.tx, state.rx); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `process_open_command(state.common, params, state.tx, state.rx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/daemon.rs:471:17 [INFO] [stderr] | [INFO] [stderr] 471 | return process_status_query(state.common, state.tx, state.rx); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `process_status_query(state.common, state.tx, state.rx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/daemon.rs:475:17 [INFO] [stderr] | [INFO] [stderr] 475 | return Err(format_err!("unexpected message from client: {:?}", other)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(format_err!("unexpected message from client: {:?}", other))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::length_delimited::FramedRead': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:30:41 [INFO] [stderr] | [INFO] [stderr] 30 | use tokio_io::codec::length_delimited::{FramedRead, FramedWrite}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::length_delimited::FramedWrite': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:30:53 [INFO] [stderr] | [INFO] [stderr] 30 | use tokio_io::codec::length_delimited::{FramedRead, FramedWrite}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::BytesCodec': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:31:23 [INFO] [stderr] | [INFO] [stderr] 31 | use tokio_io::codec::{BytesCodec, Framed}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:31:35 [INFO] [stderr] | [INFO] [stderr] 31 | use tokio_io::codec::{BytesCodec, Framed}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::length_delimited::FramedWrite': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:40:25 [INFO] [stderr] | [INFO] [stderr] 40 | type Ser = WriteBincode>, ServerMessage>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::length_delimited::FramedRead': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:41:23 [INFO] [stderr] | [INFO] [stderr] 41 | type De = ReadBincode>, ClientMessage>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:195:30 [INFO] [stderr] | [INFO] [stderr] 195 | type PtyStream = SplitStream>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::BytesCodec': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:195:53 [INFO] [stderr] | [INFO] [stderr] 195 | type PtyStream = SplitStream>; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:196:26 [INFO] [stderr] | [INFO] [stderr] 196 | type PtySink = SplitSink>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::BytesCodec': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:196:49 [INFO] [stderr] | [INFO] [stderr] 196 | type PtySink = SplitSink>; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::length_delimited::FramedWrite': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:330:18 [INFO] [stderr] | [INFO] [stderr] 330 | let wdelim = FramedWrite::new(write); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::length_delimited::FramedRead': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:332:18 [INFO] [stderr] | [INFO] [stderr] 332 | let rdelim = FramedRead::new(read); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:676:17 [INFO] [stderr] | [INFO] [stderr] 676 | ) -> Result, Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::BytesCodec': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:676:40 [INFO] [stderr] | [INFO] [stderr] 676 | ) -> Result, Error> { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::BytesCodec': Moved to tokio-codec [INFO] [stderr] --> src/daemon.rs:705:29 [INFO] [stderr] | [INFO] [stderr] 705 | Ok(ptymaster.framed(BytesCodec::new())) [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/daemon.rs:386:5 [INFO] [stderr] | [INFO] [stderr] 386 | / CommunicatingForOpen { [INFO] [stderr] 387 | | common: ClientCommonState, [INFO] [stderr] 388 | | cl_tx: Ser, [INFO] [stderr] 389 | | cl_rx: De, [INFO] [stderr] ... | [INFO] [stderr] 396 | | ssh_die: StreamFuture>>, [INFO] [stderr] 397 | | }, [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/daemon.rs:386:5 [INFO] [stderr] | [INFO] [stderr] 386 | / CommunicatingForOpen { [INFO] [stderr] 387 | | common: ClientCommonState, [INFO] [stderr] 388 | | cl_tx: Ser, [INFO] [stderr] 389 | | cl_rx: De, [INFO] [stderr] ... | [INFO] [stderr] 396 | | ssh_die: StreamFuture>>, [INFO] [stderr] 397 | | }, [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/daemon.rs:375:27 [INFO] [stderr] | [INFO] [stderr] 375 | #[derive(StateMachineFuture)] [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/daemon.rs:559:35 [INFO] [stderr] | [INFO] [stderr] 559 | let msg = format!("unexpected EOF from SSH (program died?)"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"unexpected EOF from SSH (program died?)".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: length comparison to zero [INFO] [stderr] --> src/daemon.rs:569:12 [INFO] [stderr] | [INFO] [stderr] 569 | if state.cl_buf.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!state.cl_buf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/daemon.rs:579:12 [INFO] [stderr] | [INFO] [stderr] 579 | if state.ssh_buf.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!state.ssh_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: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/daemon.rs:777:12 [INFO] [stderr] | [INFO] [stderr] 777 | if let Err(_) = tx_kill.send(()) { [INFO] [stderr] | _____- ^^^^^^ [INFO] [stderr] 778 | | let msg = "failed to send internal kill signal (?)".to_owned(); [INFO] [stderr] 779 | | transition!(abort_client(common, tx, rx, msg)); [INFO] [stderr] 780 | | } [INFO] [stderr] | |_____- help: try this: `if tx_kill.send(()).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 don't need to add `&` to all patterns [INFO] [stderr] --> src/daemon.rs:795:21 [INFO] [stderr] | [INFO] [stderr] 795 | let state = match tinfo { [INFO] [stderr] | _____________________^ [INFO] [stderr] 796 | | &TunnelState::Running { .. } => super::TunnelState::Open, [INFO] [stderr] 797 | | &TunnelState::Exited { status: None } => super::TunnelState::Closed, [INFO] [stderr] 798 | | &TunnelState::Exited { status: _other } => super::TunnelState::Died, [INFO] [stderr] 799 | | }; [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] 795 | let state = match *tinfo { [INFO] [stderr] 796 | TunnelState::Running { .. } => super::TunnelState::Open, [INFO] [stderr] 797 | TunnelState::Exited { status: None } => super::TunnelState::Closed, [INFO] [stderr] 798 | TunnelState::Exited { status: _other } => super::TunnelState::Died, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:175:12 [INFO] [stderr] | [INFO] [stderr] 175 | if self.after_command.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.after_command.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: length comparison to zero [INFO] [stderr] --> src/main.rs:206:12 [INFO] [stderr] | [INFO] [stderr] 206 | if info.tunnels.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `info.tunnels.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: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead [INFO] [stderr] --> src/daemon.rs:705:22 [INFO] [stderr] | [INFO] [stderr] 705 | Ok(ptymaster.framed(BytesCodec::new())) [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/daemon.rs:386:5 [INFO] [stderr] | [INFO] [stderr] 386 | / CommunicatingForOpen { [INFO] [stderr] 387 | | common: ClientCommonState, [INFO] [stderr] 388 | | cl_tx: Ser, [INFO] [stderr] 389 | | cl_rx: De, [INFO] [stderr] ... | [INFO] [stderr] 396 | | ssh_die: StreamFuture>>, [INFO] [stderr] 397 | | }, [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/daemon.rs:386:5 [INFO] [stderr] | [INFO] [stderr] 386 | / CommunicatingForOpen { [INFO] [stderr] 387 | | common: ClientCommonState, [INFO] [stderr] 388 | | cl_tx: Ser, [INFO] [stderr] 389 | | cl_rx: De, [INFO] [stderr] ... | [INFO] [stderr] 396 | | ssh_die: StreamFuture>>, [INFO] [stderr] 397 | | }, [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/daemon.rs:375:27 [INFO] [stderr] | [INFO] [stderr] 375 | #[derive(StateMachineFuture)] [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/daemon.rs:559:35 [INFO] [stderr] | [INFO] [stderr] 559 | let msg = format!("unexpected EOF from SSH (program died?)"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"unexpected EOF from SSH (program died?)".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: length comparison to zero [INFO] [stderr] --> src/daemon.rs:569:12 [INFO] [stderr] | [INFO] [stderr] 569 | if state.cl_buf.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!state.cl_buf.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/daemon.rs:579:12 [INFO] [stderr] | [INFO] [stderr] 579 | if state.ssh_buf.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!state.ssh_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: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/daemon.rs:777:12 [INFO] [stderr] | [INFO] [stderr] 777 | if let Err(_) = tx_kill.send(()) { [INFO] [stderr] | _____- ^^^^^^ [INFO] [stderr] 778 | | let msg = "failed to send internal kill signal (?)".to_owned(); [INFO] [stderr] 779 | | transition!(abort_client(common, tx, rx, msg)); [INFO] [stderr] 780 | | } [INFO] [stderr] | |_____- help: try this: `if tx_kill.send(()).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 don't need to add `&` to all patterns [INFO] [stderr] --> src/daemon.rs:795:21 [INFO] [stderr] | [INFO] [stderr] 795 | let state = match tinfo { [INFO] [stderr] | _____________________^ [INFO] [stderr] 796 | | &TunnelState::Running { .. } => super::TunnelState::Open, [INFO] [stderr] 797 | | &TunnelState::Exited { status: None } => super::TunnelState::Closed, [INFO] [stderr] 798 | | &TunnelState::Exited { status: _other } => super::TunnelState::Died, [INFO] [stderr] 799 | | }; [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] 795 | let state = match *tinfo { [INFO] [stderr] 796 | TunnelState::Running { .. } => super::TunnelState::Open, [INFO] [stderr] 797 | TunnelState::Exited { status: None } => super::TunnelState::Closed, [INFO] [stderr] 798 | TunnelState::Exited { status: _other } => super::TunnelState::Died, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:175:12 [INFO] [stderr] | [INFO] [stderr] 175 | if self.after_command.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.after_command.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: length comparison to zero [INFO] [stderr] --> src/main.rs:206:12 [INFO] [stderr] | [INFO] [stderr] 206 | if info.tunnels.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `info.tunnels.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] Finished dev [unoptimized + debuginfo] target(s) in 43.92s [INFO] running `"docker" "inspect" "a9fa46cb7d32435b4d0e3519a0796c065357daeafdc993388cfc15e52781fa80"` [INFO] running `"docker" "rm" "-f" "a9fa46cb7d32435b4d0e3519a0796c065357daeafdc993388cfc15e52781fa80"` [INFO] [stdout] a9fa46cb7d32435b4d0e3519a0796c065357daeafdc993388cfc15e52781fa80