[INFO] crate unix-fd 0.0.1 is already in cache [INFO] extracting crate unix-fd 0.0.1 into work/ex/clippy-test-run/sources/stable/reg/unix-fd/0.0.1 [INFO] extracting crate unix-fd 0.0.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/unix-fd/0.0.1 [INFO] validating manifest of unix-fd-0.0.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of unix-fd-0.0.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing unix-fd-0.0.1 [INFO] finished frobbing unix-fd-0.0.1 [INFO] frobbed toml for unix-fd-0.0.1 written to work/ex/clippy-test-run/sources/stable/reg/unix-fd/0.0.1/Cargo.toml [INFO] started frobbing unix-fd-0.0.1 [INFO] finished frobbing unix-fd-0.0.1 [INFO] frobbed toml for unix-fd-0.0.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/unix-fd/0.0.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting unix-fd-0.0.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/unix-fd/0.0.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] dda779fe63ae1ad3b6f2e92efb2ba595e77296ba178c1b533cb1d90e3a9c0b3b [INFO] running `"docker" "start" "-a" "dda779fe63ae1ad3b6f2e92efb2ba595e77296ba178c1b533cb1d90e3a9c0b3b"` [INFO] [stderr] Checking errno v0.2.4 [INFO] [stderr] Checking error-chain v0.11.0 [INFO] [stderr] Checking unix-fd v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/fd.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | fd: fd, [INFO] [stderr] | ^^^^^^ help: replace it with: `fd` [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/fd.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | fd: fd, [INFO] [stderr] | ^^^^^^ help: replace it with: `fd` [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/dir.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | dir: dir, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dir` [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/chroot.rs:117:13 [INFO] [stderr] | [INFO] [stderr] 117 | stat: stat, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `stat` [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/chroot.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | is_root: is_root, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `is_root` [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/fd.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | fd: fd, [INFO] [stderr] | ^^^^^^ help: replace it with: `fd` [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/fd.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | fd: fd, [INFO] [stderr] | ^^^^^^ help: replace it with: `fd` [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/dir.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | dir: dir, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dir` [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/chroot.rs:117:13 [INFO] [stderr] | [INFO] [stderr] 117 | stat: stat, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `stat` [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/chroot.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | is_root: is_root, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `is_root` [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/tests/chroot.inc.rs:247:9 [INFO] [stderr] | [INFO] [stderr] 247 | chroot: chroot, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `chroot` [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/tests/chroot.inc.rs:248:9 [INFO] [stderr] | [INFO] [stderr] 248 | root_fd: root_fd, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `root_fd` [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/fd.rs:138:24 [INFO] [stderr] | [INFO] [stderr] 138 | let cmd: int = match cloexec { [INFO] [stderr] | ________________________^ [INFO] [stderr] 139 | | true => libc::F_DUPFD_CLOEXEC, [INFO] [stderr] 140 | | false => libc::F_DUPFD, [INFO] [stderr] 141 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if cloexec { libc::F_DUPFD_CLOEXEC } else { libc::F_DUPFD }` [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: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/fd.rs:258:16 [INFO] [stderr] | [INFO] [stderr] 258 | fn to_self(fd: FdRaw) -> Self { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `libc::O_DIRECTORY` [INFO] [stderr] --> src/chroot.rs:159:26 [INFO] [stderr] | [INFO] [stderr] 159 | let open_flags = 0 [INFO] [stderr] | __________________________^ [INFO] [stderr] 160 | | | libc::O_DIRECTORY | libc::O_CLOEXEC | libc::O_RDONLY [INFO] [stderr] | |_______________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:134:9 [INFO] [stderr] | [INFO] [stderr] 134 | res [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:131:19 [INFO] [stderr] | [INFO] [stderr] 131 | let res = TempDir::new("unix-fd-test") [INFO] [stderr] | ___________________^ [INFO] [stderr] 132 | | .expect("failed to create tmpdir"); [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/fd.rs:138:24 [INFO] [stderr] | [INFO] [stderr] 138 | let cmd: int = match cloexec { [INFO] [stderr] | ________________________^ [INFO] [stderr] 139 | | true => libc::F_DUPFD_CLOEXEC, [INFO] [stderr] 140 | | false => libc::F_DUPFD, [INFO] [stderr] 141 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if cloexec { libc::F_DUPFD_CLOEXEC } else { libc::F_DUPFD }` [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: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/fd.rs:258:16 [INFO] [stderr] | [INFO] [stderr] 258 | fn to_self(fd: FdRaw) -> Self { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `libc::O_DIRECTORY` [INFO] [stderr] --> src/chroot.rs:159:26 [INFO] [stderr] | [INFO] [stderr] 159 | let open_flags = 0 [INFO] [stderr] | __________________________^ [INFO] [stderr] 160 | | | libc::O_DIRECTORY | libc::O_CLOEXEC | libc::O_RDONLY [INFO] [stderr] | |_______________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tests/chroot.inc.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | / match item { [INFO] [stderr] 30 | | &FsItem::Empty => return, [INFO] [stderr] 31 | | _ => {} [INFO] [stderr] 32 | | } [INFO] [stderr] | |_____^ help: try this: `if let &FsItem::Empty = item { return }` [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] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tests/chroot.inc.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | / match item { [INFO] [stderr] 30 | | &FsItem::Empty => return, [INFO] [stderr] 31 | | _ => {} [INFO] [stderr] 32 | | } [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] 29 | match *item { [INFO] [stderr] 30 | FsItem::Empty => return, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tests/chroot.inc.rs:34:29 [INFO] [stderr] | [INFO] [stderr] 34 | let (path, full_path) = match item { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 35 | | &FsItem::Dir(name, _) | [INFO] [stderr] 36 | | &FsItem::File(name, _) | [INFO] [stderr] 37 | | &FsItem::DirLink(name, _, _) | [INFO] [stderr] ... | [INFO] [stderr] 49 | | &FsItem::Empty => unreachable!(), [INFO] [stderr] 50 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 34 | let (path, full_path) = match *item { [INFO] [stderr] 35 | FsItem::Dir(name, _) | [INFO] [stderr] 36 | FsItem::File(name, _) | [INFO] [stderr] 37 | FsItem::DirLink(name, _, _) | [INFO] [stderr] 38 | FsItem::FileLink(name, _, _) | [INFO] [stderr] 39 | FsItem::DeadLink(name, _) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tests/chroot.inc.rs:54:5 [INFO] [stderr] | [INFO] [stderr] 54 | / match item { [INFO] [stderr] 55 | | &FsItem::Dir(_, _) => assert!(chroot.is_dirat(dir_fd, &path)), [INFO] [stderr] 56 | | [INFO] [stderr] 57 | | &FsItem::FileLink(_, _, _) | [INFO] [stderr] ... | [INFO] [stderr] 63 | | &FsItem::Empty => unreachable!(), [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 54 | match *item { [INFO] [stderr] 55 | FsItem::Dir(_, _) => assert!(chroot.is_dirat(dir_fd, &path)), [INFO] [stderr] 56 | [INFO] [stderr] 57 | FsItem::FileLink(_, _, _) | [INFO] [stderr] 58 | FsItem::DirLink(_, _, _) | [INFO] [stderr] 59 | FsItem::DeadLink(_, _) => assert!(chroot.is_lnkat(dir_fd, &path)), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tests/chroot.inc.rs:66:16 [INFO] [stderr] | [INFO] [stderr] 66 | let link = match item { [INFO] [stderr] | ________________^ [INFO] [stderr] 67 | | &FsItem::FileLink(_, _, _) | [INFO] [stderr] 68 | | &FsItem::DirLink(_, _, _) | [INFO] [stderr] 69 | | &FsItem::DeadLink(_, _) => Some( [INFO] [stderr] ... | [INFO] [stderr] 76 | | _ => None, [INFO] [stderr] 77 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 66 | let link = match *item { [INFO] [stderr] 67 | FsItem::FileLink(_, _, _) | [INFO] [stderr] 68 | FsItem::DirLink(_, _, _) | [INFO] [stderr] 69 | FsItem::DeadLink(_, _) => Some( [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/tests/chroot.inc.rs:70:38 [INFO] [stderr] | [INFO] [stderr] 70 | dir_fd.readlinkat(&path).expect(&format!( [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 71 | | "failed to read link {:?}", [INFO] [stderr] 72 | | full_path [INFO] [stderr] 73 | | )), [INFO] [stderr] | |______________^ help: try this: `unwrap_or_else(|_| panic!("failed to read link {:?}", full_path))` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tests/chroot.inc.rs:79:23 [INFO] [stderr] | [INFO] [stderr] 79 | let target_stat = match item { [INFO] [stderr] | _______________________^ [INFO] [stderr] 80 | | &FsItem::File(_, _) | [INFO] [stderr] 81 | | &FsItem::Dir(_, _) => chroot.fstatat(dir_fd, &path), [INFO] [stderr] 82 | | [INFO] [stderr] ... | [INFO] [stderr] 89 | | &FsItem::Empty => unreachable!(), [INFO] [stderr] 90 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 79 | let target_stat = match *item { [INFO] [stderr] 80 | FsItem::File(_, _) | [INFO] [stderr] 81 | FsItem::Dir(_, _) => chroot.fstatat(dir_fd, &path), [INFO] [stderr] 82 | [INFO] [stderr] 83 | FsItem::FileLink(_, _, _) | [INFO] [stderr] 84 | FsItem::DirLink(_, _, _) | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/tests/chroot.inc.rs:92:53 [INFO] [stderr] | [INFO] [stderr] 92 | let source_stat = chroot.fstatat(dir_fd, &path).expect(&format!( [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 93 | | "failed to stat component {:?}", [INFO] [stderr] 94 | | full_path [INFO] [stderr] 95 | | )); [INFO] [stderr] | |______^ help: try this: `unwrap_or_else(|_| panic!("failed to stat component {:?}", full_path))` [INFO] [stderr] | [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: use of `expect` followed by a function call [INFO] [stderr] --> src/tests/chroot.inc.rs:97:63 [INFO] [stderr] | [INFO] [stderr] 97 | let full_stat = chroot.fstatat(&root.root_fd, &full_path).expect(&format!( [INFO] [stderr] | _______________________________________________________________^ [INFO] [stderr] 98 | | "failed to stat path {:?}", [INFO] [stderr] 99 | | full_path [INFO] [stderr] 100 | | )); [INFO] [stderr] | |______^ help: try this: `unwrap_or_else(|_| panic!("failed to stat path {:?}", full_path))` [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tests/chroot.inc.rs:104:15 [INFO] [stderr] | [INFO] [stderr] 104 | let fds = match item { [INFO] [stderr] | _______________^ [INFO] [stderr] 105 | | &FsItem::Dir(_, _) | [INFO] [stderr] 106 | | &FsItem::DirLink(_, _, _) => { [INFO] [stderr] 107 | | Some((chroot.openat(dir_fd, &path, 0 [INFO] [stderr] ... | [INFO] [stderr] 131 | | &FsItem::Empty => unreachable!(), [INFO] [stderr] 132 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 104 | let fds = match *item { [INFO] [stderr] 105 | FsItem::Dir(_, _) | [INFO] [stderr] 106 | FsItem::DirLink(_, _, _) => { [INFO] [stderr] 107 | Some((chroot.openat(dir_fd, &path, 0 [INFO] [stderr] 108 | | libc::O_RDONLY | libc::O_DIRECTORY [INFO] [stderr] 109 | | libc::O_CLOEXEC) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/tests/chroot.inc.rs:110:20 [INFO] [stderr] | [INFO] [stderr] 110 | .expect(&format!("failed to open dir component {:?}", full_path)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("failed to open dir component {:?}", full_path))` [INFO] [stderr] | [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: the operation is ineffective. Consider reducing it to `libc::O_RDONLY` [INFO] [stderr] --> src/tests/chroot.inc.rs:107:48 [INFO] [stderr] | [INFO] [stderr] 107 | Some((chroot.openat(dir_fd, &path, 0 [INFO] [stderr] | ________________________________________________^ [INFO] [stderr] 108 | | | libc::O_RDONLY | libc::O_DIRECTORY [INFO] [stderr] | |________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/tests/chroot.inc.rs:115:20 [INFO] [stderr] | [INFO] [stderr] 115 | .expect(&format!("failed to open dir path {:?}", full_path)))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("failed to open dir path {:?}", full_path))` [INFO] [stderr] | [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: the operation is ineffective. Consider reducing it to `libc::O_RDONLY` [INFO] [stderr] --> src/tests/chroot.inc.rs:112:53 [INFO] [stderr] | [INFO] [stderr] 112 | chroot.openat(dir_fd, &full_path, 0 [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 113 | | | libc::O_RDONLY | libc::O_DIRECTORY [INFO] [stderr] | |________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/tests/chroot.inc.rs:124:20 [INFO] [stderr] | [INFO] [stderr] 124 | .expect(&format!("failed to open file component {:?}", full_path)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("failed to open file component {:?}", full_path))` [INFO] [stderr] | [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: the operation is ineffective. Consider reducing it to `libc::O_RDONLY` [INFO] [stderr] --> src/tests/chroot.inc.rs:122:48 [INFO] [stderr] | [INFO] [stderr] 122 | Some((chroot.openat(dir_fd, &path, 0 [INFO] [stderr] | ________________________________________________^ [INFO] [stderr] 123 | | | libc::O_RDONLY | libc::O_CLOEXEC) [INFO] [stderr] | |________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/tests/chroot.inc.rs:128:20 [INFO] [stderr] | [INFO] [stderr] 128 | .expect(&format!("failed to open file path {:?}", full_path)))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("failed to open file path {:?}", full_path))` [INFO] [stderr] | [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: the operation is ineffective. Consider reducing it to `libc::O_RDONLY` [INFO] [stderr] --> src/tests/chroot.inc.rs:126:53 [INFO] [stderr] | [INFO] [stderr] 126 | chroot.openat(dir_fd, &full_path, 0 [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 127 | | | libc::O_RDONLY | libc::O_CLOEXEC) [INFO] [stderr] | |________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tests/chroot.inc.rs:146:5 [INFO] [stderr] | [INFO] [stderr] 146 | / match item { [INFO] [stderr] 147 | | &FsItem::Dir(_, content) => { [INFO] [stderr] 148 | | let fd = fd_ref.unwrap(); [INFO] [stderr] 149 | | [INFO] [stderr] ... | [INFO] [stderr] 225 | | &FsItem::Empty => unreachable!(), [INFO] [stderr] 226 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 146 | match *item { [INFO] [stderr] 147 | FsItem::Dir(_, content) => { [INFO] [stderr] 148 | let fd = fd_ref.unwrap(); [INFO] [stderr] 149 | [INFO] [stderr] 150 | for i in content { [INFO] [stderr] 151 | check_fsitem(root, &fd, i); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/tests/chroot.inc.rs:165:18 [INFO] [stderr] | [INFO] [stderr] 165 | .expect(&format!("failed to read file {:?}", full_path)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("failed to read file {:?}", full_path))` [INFO] [stderr] | [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: use of `expect` followed by a function call [INFO] [stderr] --> src/tests/chroot.inc.rs:182:18 [INFO] [stderr] | [INFO] [stderr] 182 | .expect(&format!("failed to open dirlink {:?}", full_path)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("failed to open dirlink {:?}", full_path))` [INFO] [stderr] | [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: the operation is ineffective. Consider reducing it to `libc::O_RDONLY` [INFO] [stderr] --> src/tests/chroot.inc.rs:179:68 [INFO] [stderr] | [INFO] [stderr] 179 | let fd = chroot.openat(dir_fd, link.as_ref().unwrap(), 0 [INFO] [stderr] | ____________________________________________________________________^ [INFO] [stderr] 180 | | | libc::O_RDONLY | libc::O_CLOEXEC [INFO] [stderr] | |___________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/tests/chroot.inc.rs:184:35 [INFO] [stderr] | [INFO] [stderr] 184 | let st_a = fd.fstat().expect(&format!( [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 185 | | "failed to stat dirlink {:?}", [INFO] [stderr] 186 | | full_path [INFO] [stderr] 187 | | )); [INFO] [stderr] | |______________^ help: try this: `unwrap_or_else(|_| panic!("failed to stat dirlink {:?}", full_path))` [INFO] [stderr] | [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: use of `expect` followed by a function call [INFO] [stderr] --> src/tests/chroot.inc.rs:190:63 [INFO] [stderr] | [INFO] [stderr] 190 | ::fd::FdRaw::stat(&root.dir.join(exp), false).expect(&format!( [INFO] [stderr] | _______________________________________________________________^ [INFO] [stderr] 191 | | "failed to stat reference dir {:?}", [INFO] [stderr] 192 | | exp [INFO] [stderr] 193 | | )); [INFO] [stderr] | |__________________^ help: try this: `unwrap_or_else(|_| panic!("failed to stat reference dir {:?}", exp))` [INFO] [stderr] | [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: the operation is ineffective. Consider reducing it to `libc::O_RDONLY` [INFO] [stderr] --> src/tests/chroot.inc.rs:206:21 [INFO] [stderr] | [INFO] [stderr] 206 | 0 | libc::O_RDONLY | libc::O_CLOEXEC | libc::O_DIRECTORY, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `libc::O_RDONLY` [INFO] [stderr] --> src/tests/chroot.inc.rs:217:21 [INFO] [stderr] | [INFO] [stderr] 217 | 0 | libc::O_RDONLY | libc::O_CLOEXEC, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `libc::O_DIRECTORY` [INFO] [stderr] --> src/tests/chroot.inc.rs:258:55 [INFO] [stderr] | [INFO] [stderr] 258 | let mut fd = root.chroot.open(&Path::new("/tmp"), 0 [INFO] [stderr] | _______________________________________________________^ [INFO] [stderr] 259 | | | libc::O_DIRECTORY | libc::O_RDONLY [INFO] [stderr] | |_____________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | / match item { [INFO] [stderr] 69 | | &FsItem::Dir(name, content) => { [INFO] [stderr] 70 | | let path = OsString::from_vec(name.to_vec()); [INFO] [stderr] 71 | | [INFO] [stderr] ... | [INFO] [stderr] 116 | | &FsItem::Empty => { }, [INFO] [stderr] 117 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 68 | match *item { [INFO] [stderr] 69 | FsItem::Dir(name, content) => { [INFO] [stderr] 70 | let path = OsString::from_vec(name.to_vec()); [INFO] [stderr] 71 | [INFO] [stderr] 72 | if name != b"." { [INFO] [stderr] 73 | dir_fd [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/lib.rs:75:26 [INFO] [stderr] | [INFO] [stderr] 75 | .expect(&format!("failed to create dir {:?}", name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("failed to create dir {:?}", name))` [INFO] [stderr] | [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: use of `expect` followed by a function call [INFO] [stderr] --> src/lib.rs:81:22 [INFO] [stderr] | [INFO] [stderr] 81 | .expect(&format!("failed to open dir {:?}", path)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("failed to open dir {:?}", path))` [INFO] [stderr] | [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: the operation is ineffective. Consider reducing it to `libc::O_RDONLY` [INFO] [stderr] --> src/lib.rs:78:51 [INFO] [stderr] | [INFO] [stderr] 78 | let sub_fd = dir_fd.openat(&path, 0 [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 79 | | | libc::O_RDONLY | libc::O_DIRECTORY [INFO] [stderr] | |___________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/lib.rs:94:22 [INFO] [stderr] | [INFO] [stderr] 94 | .expect(&format!("failed to create file {:?}", path)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("failed to create file {:?}", path))` [INFO] [stderr] | [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: the operation is ineffective. Consider reducing it to `libc::O_WRONLY` [INFO] [stderr] --> src/lib.rs:91:44 [INFO] [stderr] | [INFO] [stderr] 91 | dir_fd.createat(&path, 0 [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 92 | | | libc::O_WRONLY | libc::O_CLOEXEC [INFO] [stderr] | |____________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/lib.rs:102:22 [INFO] [stderr] | [INFO] [stderr] 102 | .expect(&format!("failed to fill file {:?}", path)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("failed to fill file {:?}", path))` [INFO] [stderr] | [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: use of `expect` followed by a function call [INFO] [stderr] --> src/lib.rs:100:22 [INFO] [stderr] | [INFO] [stderr] 100 | .expect(&format!("failed to transform file {:?}", path)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("failed to transform file {:?}", path))` [INFO] [stderr] | [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: use of `expect` followed by a function call [INFO] [stderr] --> src/lib.rs:98:22 [INFO] [stderr] | [INFO] [stderr] 98 | .expect(&format!("failed to unref fd")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("failed to unref fd"))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/lib.rs:98:30 [INFO] [stderr] | [INFO] [stderr] 98 | .expect(&format!("failed to unref fd")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"failed to unref fd".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: use of `expect` followed by a function call [INFO] [stderr] --> src/lib.rs:112:22 [INFO] [stderr] | [INFO] [stderr] 112 | .expect(&format!("failed to create {:?} -> {:?} link", [INFO] [stderr] | ______________________^ [INFO] [stderr] 113 | | path, target)); [INFO] [stderr] | |___________________________________________________^ help: try this: `unwrap_or_else(|_| panic!("failed to create {:?} -> {:?} link", path))` [INFO] [stderr] | [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: use of `expect` followed by a function call [INFO] [stderr] --> src/lib.rs:125:14 [INFO] [stderr] | [INFO] [stderr] 125 | .expect(&format!("failed to open tmpdir {:?}", tmpdir)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("failed to open tmpdir {:?}", tmpdir))` [INFO] [stderr] | [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: the operation is ineffective. Consider reducing it to `libc::O_RDONLY` [INFO] [stderr] --> src/lib.rs:122:37 [INFO] [stderr] | [INFO] [stderr] 122 | ::fd::Fd::open(&tmpdir, 0 [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 123 | | | libc::O_RDONLY | libc::O_DIRECTORY [INFO] [stderr] | |___________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3.03s [INFO] running `"docker" "inspect" "dda779fe63ae1ad3b6f2e92efb2ba595e77296ba178c1b533cb1d90e3a9c0b3b"` [INFO] running `"docker" "rm" "-f" "dda779fe63ae1ad3b6f2e92efb2ba595e77296ba178c1b533cb1d90e3a9c0b3b"` [INFO] [stdout] dda779fe63ae1ad3b6f2e92efb2ba595e77296ba178c1b533cb1d90e3a9c0b3b