[INFO] crate gaol 0.2.0 is already in cache [INFO] extracting crate gaol 0.2.0 into work/ex/clippy-test-run/sources/stable/reg/gaol/0.2.0 [INFO] extracting crate gaol 0.2.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gaol/0.2.0 [INFO] validating manifest of gaol-0.2.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of gaol-0.2.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing gaol-0.2.0 [INFO] removed 0 missing tests [INFO] finished frobbing gaol-0.2.0 [INFO] frobbed toml for gaol-0.2.0 written to work/ex/clippy-test-run/sources/stable/reg/gaol/0.2.0/Cargo.toml [INFO] started frobbing gaol-0.2.0 [INFO] removed 0 missing tests [INFO] finished frobbing gaol-0.2.0 [INFO] frobbed toml for gaol-0.2.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gaol/0.2.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting gaol-0.2.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/gaol/0.2.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-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] 463a4fbb3eb6bd93bee944181ed9f859642e15e3b944344aac79709565f7a95a [INFO] running `"docker" "start" "-a" "463a4fbb3eb6bd93bee944181ed9f859642e15e3b944344aac79709565f7a95a"` [INFO] [stderr] Checking gaol v0.2.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> profile.rs:139:17 [INFO] [stderr] | [INFO] [stderr] 139 | allowed_operations: allowed_operations, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `allowed_operations` [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] --> platform/linux/mod.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | profile: profile, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `profile` [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] --> platform/linux/mod.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | profile: profile, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `profile` [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] --> platform/unix/process.rs:54:21 [INFO] [stderr] | [INFO] [stderr] 54 | pid: pid, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pid` [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] --> profile.rs:139:17 [INFO] [stderr] | [INFO] [stderr] 139 | allowed_operations: allowed_operations, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `allowed_operations` [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] --> platform/linux/mod.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | profile: profile, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `profile` [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] --> platform/linux/mod.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | profile: profile, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `profile` [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] --> platform/unix/process.rs:54:21 [INFO] [stderr] | [INFO] [stderr] 54 | pid: pid, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pid` [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: unused `#[macro_use]` import [INFO] [stderr] --> lib.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> platform/linux/namespace.rs:327:42 [INFO] [stderr] | [INFO] [stderr] 327 | const _LINUX_CAPABILITY_VERSION_3: u32 = 0x20080522; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x2008_0522` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> lib.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> platform/linux/namespace.rs:327:42 [INFO] [stderr] | [INFO] [stderr] 327 | const _LINUX_CAPABILITY_VERSION_3: u32 = 0x20080522; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x2008_0522` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EM_386` [INFO] [stderr] --> platform/linux/seccomp.rs:108:1 [INFO] [stderr] | [INFO] [stderr] 108 | const EM_386: u32 = 3; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EM_PPC` [INFO] [stderr] --> platform/linux/seccomp.rs:109:1 [INFO] [stderr] | [INFO] [stderr] 109 | const EM_PPC: u32 = 20; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EM_PPC64` [INFO] [stderr] --> platform/linux/seccomp.rs:110:1 [INFO] [stderr] | [INFO] [stderr] 110 | const EM_PPC64: u32 = 21; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EM_ARM` [INFO] [stderr] --> platform/linux/seccomp.rs:111:1 [INFO] [stderr] | [INFO] [stderr] 111 | const EM_ARM: u32 = 40; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EM_AARCH64` [INFO] [stderr] --> platform/linux/seccomp.rs:113:1 [INFO] [stderr] | [INFO] [stderr] 113 | const EM_AARCH64: u32 = 183; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `AUDIT_ARCH_X86` [INFO] [stderr] --> platform/linux/seccomp.rs:120:1 [INFO] [stderr] | [INFO] [stderr] 120 | const AUDIT_ARCH_X86: u32 = EM_386 | __AUDIT_ARCH_LE; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `AUDIT_ARCH_ARM` [INFO] [stderr] --> platform/linux/seccomp.rs:124:1 [INFO] [stderr] | [INFO] [stderr] 124 | const AUDIT_ARCH_ARM: u32 = EM_ARM | __AUDIT_ARCH_LE; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `AUDIT_ARCH_AARCH64` [INFO] [stderr] --> platform/linux/seccomp.rs:126:1 [INFO] [stderr] | [INFO] [stderr] 126 | const AUDIT_ARCH_AARCH64: u32 = EM_AARCH64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `AUDIT_ARCH_PPC` [INFO] [stderr] --> platform/linux/seccomp.rs:128:1 [INFO] [stderr] | [INFO] [stderr] 128 | const AUDIT_ARCH_PPC: u32 = EM_PPC; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `AUDIT_ARCH_PPC64` [INFO] [stderr] --> platform/linux/seccomp.rs:130:1 [INFO] [stderr] | [INFO] [stderr] 130 | const AUDIT_ARCH_PPC64: u32 = EM_PPC64 | __AUDIT_ARCH_64BIT; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `AUDIT_ARCH_PPC64LE` [INFO] [stderr] --> platform/linux/seccomp.rs:132:1 [INFO] [stderr] | [INFO] [stderr] 132 | const AUDIT_ARCH_PPC64LE: u32 = EM_PPC64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> profile.rs:131:54 [INFO] [stderr] | [INFO] [stderr] 131 | if allowed_operations.iter().all(|operation| { [INFO] [stderr] | ______________________________________________________^ [INFO] [stderr] 132 | | match operation.support() { [INFO] [stderr] 133 | | OperationSupportLevel::NeverAllowed | OperationSupportLevel::CanBeAllowed => true, [INFO] [stderr] 134 | | OperationSupportLevel::CannotBeAllowedPrecisely | [INFO] [stderr] 135 | | OperationSupportLevel::AlwaysAllowed => false, [INFO] [stderr] 136 | | } [INFO] [stderr] 137 | | }) { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> sandbox.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | / pub fn arg<'a,T>(&'a mut self, arg: T) -> &'a mut Command where T: AsRef { [INFO] [stderr] 84 | | self.args.push(cstring(arg)); [INFO] [stderr] 85 | | self [INFO] [stderr] 86 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> sandbox.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | / pub fn env<'a,T,U>(&'a mut self, key: T, val: U) -> &'a mut Command [INFO] [stderr] 96 | | where T: AsRef, U: AsRef { [INFO] [stderr] 97 | | self.env.insert(cstring(key), cstring(val)); [INFO] [stderr] 98 | | self [INFO] [stderr] 99 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> platform/linux/namespace.rs:46:35 [INFO] [stderr] | [INFO] [stderr] 46 | let mut prefix: Vec = prefix.as_bytes_with_nul().iter().map(|x| *x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `prefix.as_bytes_with_nul().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> platform/linux/namespace.rs:218:61 [INFO] [stderr] | [INFO] [stderr] 218 | if !profile.allowed_operations().iter().any(|operation| { [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 219 | | match *operation { [INFO] [stderr] 220 | | Operation::NetworkOutbound(_) => true, [INFO] [stderr] 221 | | _ => false, [INFO] [stderr] 222 | | } [INFO] [stderr] 223 | | }) { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> platform/linux/seccomp.rs:254:22 [INFO] [stderr] | [INFO] [stderr] 254 | program: FILTER_PROLOGUE.iter().map(|x| *x).collect(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `FILTER_PROLOGUE.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> platform/linux/seccomp.rs:258:64 [INFO] [stderr] | [INFO] [stderr] 258 | if profile.allowed_operations().iter().any(|operation| { [INFO] [stderr] | ________________________________________________________________^ [INFO] [stderr] 259 | | match *operation { [INFO] [stderr] 260 | | Operation::FileReadAll(_) | Operation::FileReadMetadata(_) => true, [INFO] [stderr] 261 | | _ => false, [INFO] [stderr] 262 | | } [INFO] [stderr] 263 | | }) { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> platform/linux/seccomp.rs:279:64 [INFO] [stderr] | [INFO] [stderr] 279 | if profile.allowed_operations().iter().any(|operation| { [INFO] [stderr] | ________________________________________________________________^ [INFO] [stderr] 280 | | match *operation { [INFO] [stderr] 281 | | Operation::NetworkOutbound(_) => true, [INFO] [stderr] 282 | | _ => false, [INFO] [stderr] 283 | | } [INFO] [stderr] 284 | | }) { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> platform/unix/process.rs:82:33 [INFO] [stderr] | [INFO] [stderr] 82 | Ok(ExitStatus::Code(WEXITSTATUS(stat) as i32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(WEXITSTATUS(stat))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> platform/unix/process.rs:84:35 [INFO] [stderr] | [INFO] [stderr] 84 | Ok(ExitStatus::Signal(WTERMSIG(stat) as i32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(WTERMSIG(stat))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: bit mask could be simplified with a call to `trailing_zeros` [INFO] [stderr] --> platform/unix/process.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | (stat & 0o177) == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `stat.trailing_zeros() >= 7` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::verbose_bit_mask)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#verbose_bit_mask [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EM_386` [INFO] [stderr] --> platform/linux/seccomp.rs:108:1 [INFO] [stderr] | [INFO] [stderr] 108 | const EM_386: u32 = 3; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EM_PPC` [INFO] [stderr] --> platform/linux/seccomp.rs:109:1 [INFO] [stderr] | [INFO] [stderr] 109 | const EM_PPC: u32 = 20; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EM_PPC64` [INFO] [stderr] --> platform/linux/seccomp.rs:110:1 [INFO] [stderr] | [INFO] [stderr] 110 | const EM_PPC64: u32 = 21; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EM_ARM` [INFO] [stderr] --> platform/linux/seccomp.rs:111:1 [INFO] [stderr] | [INFO] [stderr] 111 | const EM_ARM: u32 = 40; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EM_AARCH64` [INFO] [stderr] --> platform/linux/seccomp.rs:113:1 [INFO] [stderr] | [INFO] [stderr] 113 | const EM_AARCH64: u32 = 183; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `AUDIT_ARCH_X86` [INFO] [stderr] --> platform/linux/seccomp.rs:120:1 [INFO] [stderr] | [INFO] [stderr] 120 | const AUDIT_ARCH_X86: u32 = EM_386 | __AUDIT_ARCH_LE; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `AUDIT_ARCH_ARM` [INFO] [stderr] --> platform/linux/seccomp.rs:124:1 [INFO] [stderr] | [INFO] [stderr] 124 | const AUDIT_ARCH_ARM: u32 = EM_ARM | __AUDIT_ARCH_LE; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `AUDIT_ARCH_AARCH64` [INFO] [stderr] --> platform/linux/seccomp.rs:126:1 [INFO] [stderr] | [INFO] [stderr] 126 | const AUDIT_ARCH_AARCH64: u32 = EM_AARCH64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `AUDIT_ARCH_PPC` [INFO] [stderr] --> platform/linux/seccomp.rs:128:1 [INFO] [stderr] | [INFO] [stderr] 128 | const AUDIT_ARCH_PPC: u32 = EM_PPC; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `AUDIT_ARCH_PPC64` [INFO] [stderr] --> platform/linux/seccomp.rs:130:1 [INFO] [stderr] | [INFO] [stderr] 130 | const AUDIT_ARCH_PPC64: u32 = EM_PPC64 | __AUDIT_ARCH_64BIT; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `AUDIT_ARCH_PPC64LE` [INFO] [stderr] --> platform/linux/seccomp.rs:132:1 [INFO] [stderr] | [INFO] [stderr] 132 | const AUDIT_ARCH_PPC64LE: u32 = EM_PPC64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> profile.rs:131:54 [INFO] [stderr] | [INFO] [stderr] 131 | if allowed_operations.iter().all(|operation| { [INFO] [stderr] | ______________________________________________________^ [INFO] [stderr] 132 | | match operation.support() { [INFO] [stderr] 133 | | OperationSupportLevel::NeverAllowed | OperationSupportLevel::CanBeAllowed => true, [INFO] [stderr] 134 | | OperationSupportLevel::CannotBeAllowedPrecisely | [INFO] [stderr] 135 | | OperationSupportLevel::AlwaysAllowed => false, [INFO] [stderr] 136 | | } [INFO] [stderr] 137 | | }) { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> sandbox.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | / pub fn arg<'a,T>(&'a mut self, arg: T) -> &'a mut Command where T: AsRef { [INFO] [stderr] 84 | | self.args.push(cstring(arg)); [INFO] [stderr] 85 | | self [INFO] [stderr] 86 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> sandbox.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | / pub fn env<'a,T,U>(&'a mut self, key: T, val: U) -> &'a mut Command [INFO] [stderr] 96 | | where T: AsRef, U: AsRef { [INFO] [stderr] 97 | | self.env.insert(cstring(key), cstring(val)); [INFO] [stderr] 98 | | self [INFO] [stderr] 99 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> platform/linux/namespace.rs:46:35 [INFO] [stderr] | [INFO] [stderr] 46 | let mut prefix: Vec = prefix.as_bytes_with_nul().iter().map(|x| *x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `prefix.as_bytes_with_nul().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> platform/linux/namespace.rs:218:61 [INFO] [stderr] | [INFO] [stderr] 218 | if !profile.allowed_operations().iter().any(|operation| { [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 219 | | match *operation { [INFO] [stderr] 220 | | Operation::NetworkOutbound(_) => true, [INFO] [stderr] 221 | | _ => false, [INFO] [stderr] 222 | | } [INFO] [stderr] 223 | | }) { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> platform/linux/seccomp.rs:254:22 [INFO] [stderr] | [INFO] [stderr] 254 | program: FILTER_PROLOGUE.iter().map(|x| *x).collect(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `FILTER_PROLOGUE.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> platform/linux/seccomp.rs:258:64 [INFO] [stderr] | [INFO] [stderr] 258 | if profile.allowed_operations().iter().any(|operation| { [INFO] [stderr] | ________________________________________________________________^ [INFO] [stderr] 259 | | match *operation { [INFO] [stderr] 260 | | Operation::FileReadAll(_) | Operation::FileReadMetadata(_) => true, [INFO] [stderr] 261 | | _ => false, [INFO] [stderr] 262 | | } [INFO] [stderr] 263 | | }) { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> platform/linux/seccomp.rs:279:64 [INFO] [stderr] | [INFO] [stderr] 279 | if profile.allowed_operations().iter().any(|operation| { [INFO] [stderr] | ________________________________________________________________^ [INFO] [stderr] 280 | | match *operation { [INFO] [stderr] 281 | | Operation::NetworkOutbound(_) => true, [INFO] [stderr] 282 | | _ => false, [INFO] [stderr] 283 | | } [INFO] [stderr] 284 | | }) { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> platform/unix/process.rs:82:33 [INFO] [stderr] | [INFO] [stderr] 82 | Ok(ExitStatus::Code(WEXITSTATUS(stat) as i32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(WEXITSTATUS(stat))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> platform/unix/process.rs:84:35 [INFO] [stderr] | [INFO] [stderr] 84 | Ok(ExitStatus::Signal(WTERMSIG(stat) as i32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(WTERMSIG(stat))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: bit mask could be simplified with a call to `trailing_zeros` [INFO] [stderr] --> platform/unix/process.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | (stat & 0o177) == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `stat.trailing_zeros() >= 7` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::verbose_bit_mask)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#verbose_bit_mask [INFO] [stderr] [INFO] [stderr] warning: unused imports: `ChildSandboxMethods`, `ChildSandbox`, `Command`, `SandboxMethods`, `Sandbox` [INFO] [stderr] --> tests/system-info-read.rs:8:21 [INFO] [stderr] | [INFO] [stderr] 8 | use gaol::sandbox::{ChildSandbox, ChildSandboxMethods, Command, Sandbox, SandboxMethods}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `c_char`, `c_int`, `c_void`, `size_t` [INFO] [stderr] --> tests/system-info-read.rs:9:12 [INFO] [stderr] | [INFO] [stderr] 9 | use libc::{c_char, c_int, c_void, size_t}; [INFO] [stderr] | ^^^^^^ ^^^^^ ^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::env` [INFO] [stderr] --> tests/system-info-read.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::env; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ffi::CString` [INFO] [stderr] --> tests/system-info-read.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use std::ffi::CString; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::iter` [INFO] [stderr] --> tests/system-info-read.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::iter; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ptr` [INFO] [stderr] --> tests/system-info-read.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | use std::ptr; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `SYSCTL_NAME` [INFO] [stderr] --> tests/system-info-read.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | static SYSCTL_NAME: &'static str = "hw.ncpu"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `allowance_profile` [INFO] [stderr] --> tests/system-info-read.rs:32:1 [INFO] [stderr] | [INFO] [stderr] 32 | fn allowance_profile() -> Profile { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `prohibition_profile` [INFO] [stderr] --> tests/system-info-read.rs:36:1 [INFO] [stderr] | [INFO] [stderr] 36 | fn prohibition_profile() -> Profile { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> tests/forbidden-syscalls.rs:31:24 [INFO] [stderr] | [INFO] [stderr] 31 | if let Some(arg) = env::args().skip(1).next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_skip_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> examples/example.rs:44:11 [INFO] [stderr] | [INFO] [stderr] 44 | match env::args().skip(1).next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_skip_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> tests/network-outbound.rs:32:11 [INFO] [stderr] | [INFO] [stderr] 32 | match env::args().skip(1).next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_skip_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> tests/file-read-metadata.rs:48:11 [INFO] [stderr] | [INFO] [stderr] 48 | match env::args().skip(1).next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_skip_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a value that implements Copy. Dropping a copy leaves the original intact. [INFO] [stderr] --> tests/file-read-metadata.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | drop(realpath(c_temp_path.as_ptr(), new_temp_path.as_mut_ptr() as *mut c_char)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::drop_copy)] on by default [INFO] [stderr] note: argument has type *mut i8 [INFO] [stderr] --> tests/file-read-metadata.rs:61:14 [INFO] [stderr] | [INFO] [stderr] 61 | drop(realpath(c_temp_path.as_ptr(), new_temp_path.as_mut_ptr() as *mut c_char)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `gaol`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> tests/file-read-all.rs:47:11 [INFO] [stderr] | [INFO] [stderr] 47 | match env::args().skip(1).next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_skip_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a value that implements Copy. Dropping a copy leaves the original intact. [INFO] [stderr] --> tests/file-read-all.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | drop(realpath(c_temp_path.as_ptr(), new_temp_path.as_mut_ptr() as *mut c_char)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::drop_copy)] on by default [INFO] [stderr] note: argument has type *mut i8 [INFO] [stderr] --> tests/file-read-all.rs:60:14 [INFO] [stderr] | [INFO] [stderr] 60 | drop(realpath(c_temp_path.as_ptr(), new_temp_path.as_mut_ptr() as *mut c_char)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `gaol`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "463a4fbb3eb6bd93bee944181ed9f859642e15e3b944344aac79709565f7a95a"` [INFO] running `"docker" "rm" "-f" "463a4fbb3eb6bd93bee944181ed9f859642e15e3b944344aac79709565f7a95a"` [INFO] [stdout] 463a4fbb3eb6bd93bee944181ed9f859642e15e3b944344aac79709565f7a95a