[INFO] crate ubend 0.2.1 is already in cache [INFO] extracting crate ubend 0.2.1 into work/ex/clippy-test-run/sources/stable/reg/ubend/0.2.1 [INFO] extracting crate ubend 0.2.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/ubend/0.2.1 [INFO] validating manifest of ubend-0.2.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 ubend-0.2.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 ubend-0.2.1 [INFO] finished frobbing ubend-0.2.1 [INFO] frobbed toml for ubend-0.2.1 written to work/ex/clippy-test-run/sources/stable/reg/ubend/0.2.1/Cargo.toml [INFO] started frobbing ubend-0.2.1 [INFO] finished frobbing ubend-0.2.1 [INFO] frobbed toml for ubend-0.2.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/ubend/0.2.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 ubend-0.2.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/ubend/0.2.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] 316ccf106c6b1718098025cbb060e57fdd98cb5c723d43372a54d371bade11f2 [INFO] running `"docker" "start" "-a" "316ccf106c6b1718098025cbb060e57fdd98cb5c723d43372a54d371bade11f2"` [INFO] [stderr] Checking ubend v0.2.1 (/opt/crater/workdir) [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:330:5 [INFO] [stderr] | [INFO] [stderr] 330 | fd [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/lib.rs:324:14 [INFO] [stderr] | [INFO] [stderr] 324 | let fd = match mode { [INFO] [stderr] | __________________________^ [INFO] [stderr] 325 | | Mode::Read => open(cstr!(name), O_RDONLY), [INFO] [stderr] 326 | | Mode::Write => open(cstr!(name), O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH), [INFO] [stderr] 327 | | Mode::Append => open(cstr!(name), O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH), [INFO] [stderr] 328 | | }; [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: unneeded return statement [INFO] [stderr] --> src/lib.rs:475:6 [INFO] [stderr] | [INFO] [stderr] 475 | return f.write_str(s); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `f.write_str(s)` [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/lib.rs:816:2 [INFO] [stderr] | [INFO] [stderr] 816 | return -1; [INFO] [stderr] | ^^^^^^^^^^ help: remove `return` as shown: `-1` [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/lib.rs:830:3 [INFO] [stderr] | [INFO] [stderr] 830 | return fd; [INFO] [stderr] | ^^^^^^^^^^ help: remove `return` as shown: `fd` [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/lib.rs:832:3 [INFO] [stderr] | [INFO] [stderr] 832 | return open_temp_fd_fallback(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `open_temp_fd_fallback()` [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/lib.rs:931:3 [INFO] [stderr] | [INFO] [stderr] 931 | return Err(WaitError::ChildInvalid); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(WaitError::ChildInvalid)` [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/lib.rs:1113:3 [INFO] [stderr] | [INFO] [stderr] 1113 | return Err(Error::OS(errno)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Error::OS(errno))` [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/lib.rs:1401:3 [INFO] [stderr] | [INFO] [stderr] 1401 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:330:5 [INFO] [stderr] | [INFO] [stderr] 330 | fd [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/lib.rs:324:14 [INFO] [stderr] | [INFO] [stderr] 324 | let fd = match mode { [INFO] [stderr] | __________________________^ [INFO] [stderr] 325 | | Mode::Read => open(cstr!(name), O_RDONLY), [INFO] [stderr] 326 | | Mode::Write => open(cstr!(name), O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH), [INFO] [stderr] 327 | | Mode::Append => open(cstr!(name), O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH), [INFO] [stderr] 328 | | }; [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: unneeded return statement [INFO] [stderr] --> src/lib.rs:475:6 [INFO] [stderr] | [INFO] [stderr] 475 | return f.write_str(s); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `f.write_str(s)` [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/lib.rs:816:2 [INFO] [stderr] | [INFO] [stderr] 816 | return -1; [INFO] [stderr] | ^^^^^^^^^^ help: remove `return` as shown: `-1` [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/lib.rs:830:3 [INFO] [stderr] | [INFO] [stderr] 830 | return fd; [INFO] [stderr] | ^^^^^^^^^^ help: remove `return` as shown: `fd` [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/lib.rs:832:3 [INFO] [stderr] | [INFO] [stderr] 832 | return open_temp_fd_fallback(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `open_temp_fd_fallback()` [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/lib.rs:931:3 [INFO] [stderr] | [INFO] [stderr] 931 | return Err(WaitError::ChildInvalid); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(WaitError::ChildInvalid)` [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/lib.rs:1113:3 [INFO] [stderr] | [INFO] [stderr] 1113 | return Err(Error::OS(errno)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Error::OS(errno))` [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/lib.rs:1401:3 [INFO] [stderr] | [INFO] [stderr] 1401 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: The function/method `extend_from_slice` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:1030:34 [INFO] [stderr] | [INFO] [stderr] 1030 | stdout.extend_from_slice(&mut buf[..size]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `extend_from_slice` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:1050:34 [INFO] [stderr] | [INFO] [stderr] 1050 | stderr.extend_from_slice(&mut buf[..size]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/lib.rs:1269:7 [INFO] [stderr] | [INFO] [stderr] 1269 | if envp != ptr::null() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_null)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [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/lib.rs:1436:3 [INFO] [stderr] | [INFO] [stderr] 1436 | match self.stdin { [INFO] [stderr] | _________^ [INFO] [stderr] 1437 | | PipeSetup::Redirect(target) => { [INFO] [stderr] 1438 | | return Err(Error::CannotRedirectStdinTo(target)); [INFO] [stderr] 1439 | | }, [INFO] [stderr] 1440 | | _ => {} [INFO] [stderr] 1441 | | } [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] 1436 | if let PipeSetup::Redirect(target) = self.stdin { [INFO] [stderr] 1437 | return Err(Error::CannotRedirectStdinTo(target)); [INFO] [stderr] 1438 | } [INFO] [stderr] | [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/lib.rs:1472:24 [INFO] [stderr] | [INFO] [stderr] 1472 | fn make_ptr_array(buf: &Vec, len: usize) -> Vec<*const c_char> { [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1519:12 [INFO] [stderr] | [INFO] [stderr] 1519 | buf.push('=' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'=' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [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/lib.rs:1549:4 [INFO] [stderr] | [INFO] [stderr] 1549 | match pipe.stdin { [INFO] [stderr] | _____________^ [INFO] [stderr] 1550 | | PipeSetup::Redirect(target) => { [INFO] [stderr] 1551 | | return Err(Error::CannotRedirectStdinTo(target)); [INFO] [stderr] 1552 | | }, [INFO] [stderr] 1553 | | _ => {} [INFO] [stderr] 1554 | | } [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] 1549 | if let PipeSetup::Redirect(target) = pipe.stdin { [INFO] [stderr] 1550 | return Err(Error::CannotRedirectStdinTo(target)); [INFO] [stderr] 1551 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the variable `index` is used as a loop counter. Consider using `for (index, item) in pipes.enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:1559:15 [INFO] [stderr] | [INFO] [stderr] 1559 | for pipe in pipes { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [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/lib.rs:1595:4 [INFO] [stderr] | [INFO] [stderr] 1595 | match res { [INFO] [stderr] | _____________^ [INFO] [stderr] 1596 | | Err(err) => { [INFO] [stderr] 1597 | | for mut child in &mut children { [INFO] [stderr] 1598 | | unsafe { kill(child.pid, SIGTERM); } [INFO] [stderr] ... | [INFO] [stderr] 1602 | | _ => {} [INFO] [stderr] 1603 | | } [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] 1595 | if let Err(err) = res { [INFO] [stderr] 1596 | for mut child in &mut children { [INFO] [stderr] 1597 | unsafe { kill(child.pid, SIGTERM); } [INFO] [stderr] 1598 | } [INFO] [stderr] 1599 | return Err(err); [INFO] [stderr] 1600 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: The function/method `extend_from_slice` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:1030:34 [INFO] [stderr] | [INFO] [stderr] 1030 | stdout.extend_from_slice(&mut buf[..size]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `extend_from_slice` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:1050:34 [INFO] [stderr] | [INFO] [stderr] 1050 | stderr.extend_from_slice(&mut buf[..size]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/lib.rs:1269:7 [INFO] [stderr] | [INFO] [stderr] 1269 | if envp != ptr::null() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_null)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [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/lib.rs:1436:3 [INFO] [stderr] | [INFO] [stderr] 1436 | match self.stdin { [INFO] [stderr] | _________^ [INFO] [stderr] 1437 | | PipeSetup::Redirect(target) => { [INFO] [stderr] 1438 | | return Err(Error::CannotRedirectStdinTo(target)); [INFO] [stderr] 1439 | | }, [INFO] [stderr] 1440 | | _ => {} [INFO] [stderr] 1441 | | } [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] 1436 | if let PipeSetup::Redirect(target) = self.stdin { [INFO] [stderr] 1437 | return Err(Error::CannotRedirectStdinTo(target)); [INFO] [stderr] 1438 | } [INFO] [stderr] | [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/lib.rs:1472:24 [INFO] [stderr] | [INFO] [stderr] 1472 | fn make_ptr_array(buf: &Vec, len: usize) -> Vec<*const c_char> { [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1519:12 [INFO] [stderr] | [INFO] [stderr] 1519 | buf.push('=' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'=' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [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/lib.rs:1549:4 [INFO] [stderr] | [INFO] [stderr] 1549 | match pipe.stdin { [INFO] [stderr] | _____________^ [INFO] [stderr] 1550 | | PipeSetup::Redirect(target) => { [INFO] [stderr] 1551 | | return Err(Error::CannotRedirectStdinTo(target)); [INFO] [stderr] 1552 | | }, [INFO] [stderr] 1553 | | _ => {} [INFO] [stderr] 1554 | | } [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] 1549 | if let PipeSetup::Redirect(target) = pipe.stdin { [INFO] [stderr] 1550 | return Err(Error::CannotRedirectStdinTo(target)); [INFO] [stderr] 1551 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the variable `index` is used as a loop counter. Consider using `for (index, item) in pipes.enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:1559:15 [INFO] [stderr] | [INFO] [stderr] 1559 | for pipe in pipes { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [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/lib.rs:1595:4 [INFO] [stderr] | [INFO] [stderr] 1595 | match res { [INFO] [stderr] | _____________^ [INFO] [stderr] 1596 | | Err(err) => { [INFO] [stderr] 1597 | | for mut child in &mut children { [INFO] [stderr] 1598 | | unsafe { kill(child.pid, SIGTERM); } [INFO] [stderr] ... | [INFO] [stderr] 1602 | | _ => {} [INFO] [stderr] 1603 | | } [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] 1595 | if let Err(err) = res { [INFO] [stderr] 1596 | for mut child in &mut children { [INFO] [stderr] 1597 | unsafe { kill(child.pid, SIGTERM); } [INFO] [stderr] 1598 | } [INFO] [stderr] 1599 | return Err(err); [INFO] [stderr] 1600 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> tests/main.rs:67:21 [INFO] [stderr] | [INFO] [stderr] 67 | remove_file(name).expect(msg.as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| { let msg = msg.as_str(); panic!(msg) }))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> tests/main.rs:180:3 [INFO] [stderr] | [INFO] [stderr] 180 | write!(stream, "hello world"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> tests/main.rs:211:3 [INFO] [stderr] | [INFO] [stderr] 211 | write!(stream, "spam\neggs\nspam spam\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.24s [INFO] running `"docker" "inspect" "316ccf106c6b1718098025cbb060e57fdd98cb5c723d43372a54d371bade11f2"` [INFO] running `"docker" "rm" "-f" "316ccf106c6b1718098025cbb060e57fdd98cb5c723d43372a54d371bade11f2"` [INFO] [stdout] 316ccf106c6b1718098025cbb060e57fdd98cb5c723d43372a54d371bade11f2