[INFO] cloning repository https://github.com/Start9Labs/start-fs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Start9Labs/start-fs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FStart9Labs%2Fstart-fs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FStart9Labs%2Fstart-fs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 91d2e1f1ef870041eff43b700a32f8098d74023a [INFO] linting Start9Labs/start-fs against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FStart9Labs%2Fstart-fs" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/Start9Labs/start-fs [INFO] finished tweaking git repo https://github.com/Start9Labs/start-fs [INFO] tweaked toml for git repo https://github.com/Start9Labs/start-fs written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Start9Labs/start-fs on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/Start9Labs/start-fs already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Updating git repository `https://github.com/Start9Labs/fuser.git` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded test-log v0.2.16 [INFO] [stderr] Downloaded env_logger v0.11.3 [INFO] [stderr] Downloaded tempdir v0.3.7 [INFO] [stderr] Downloaded env_filter v0.1.0 [INFO] [stderr] Downloaded test-log-macros v0.2.16 [INFO] [stderr] Downloaded ctrlc v3.4.4 [INFO] [stderr] Downloaded fd-lock-rs v0.1.4 [INFO] [stderr] Downloaded generic-array v1.0.0 [INFO] [stderr] Downloaded bitmaps v3.2.1 [INFO] [stderr] Downloaded cc v1.1.0 [INFO] [stderr] Downloaded imbl-sized-chunks v0.1.2 [INFO] [stderr] Downloaded oneshot v0.1.8 [INFO] [stderr] Downloaded syn v2.0.68 [INFO] [stderr] Downloaded imbl v3.0.0 [INFO] [stderr] Downloaded object v0.36.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] de620e71a57f83a3989ff04245fa50d616bb39edc2133b1088110b6a3cdec854 [INFO] running `Command { std: "docker" "start" "-a" "de620e71a57f83a3989ff04245fa50d616bb39edc2133b1088110b6a3cdec854", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "de620e71a57f83a3989ff04245fa50d616bb39edc2133b1088110b6a3cdec854", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "de620e71a57f83a3989ff04245fa50d616bb39edc2133b1088110b6a3cdec854", kill_on_drop: false }` [INFO] [stdout] de620e71a57f83a3989ff04245fa50d616bb39edc2133b1088110b6a3cdec854 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 7895c61417f643bfcba97cd0b91029207ce51159c793f5dc7371e00150256af4 [INFO] running `Command { std: "docker" "start" "-a" "7895c61417f643bfcba97cd0b91029207ce51159c793f5dc7371e00150256af4", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.86 [INFO] [stderr] Compiling libc v0.2.155 [INFO] [stderr] Checking cfg-if v1.0.0 [INFO] [stderr] Compiling typenum v1.17.0 [INFO] [stderr] Compiling serde v1.0.203 [INFO] [stderr] Checking utf8parse v0.2.2 [INFO] [stderr] Checking memchr v2.7.4 [INFO] [stderr] Checking colorchoice v1.0.1 [INFO] [stderr] Checking anstyle v1.0.7 [INFO] [stderr] Checking anstyle-query v1.1.0 [INFO] [stderr] Checking is_terminal_polyfill v1.70.0 [INFO] [stderr] Compiling autocfg v1.3.0 [INFO] [stderr] Checking regex-syntax v0.8.4 [INFO] [stderr] Compiling cfg_aliases v0.1.1 [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Checking subtle v2.6.1 [INFO] [stderr] Checking bitflags v2.6.0 [INFO] [stderr] Compiling nix v0.28.0 [INFO] [stderr] Checking strsim v0.11.1 [INFO] [stderr] Checking clap_lex v0.7.1 [INFO] [stderr] Checking anstyle-parse v0.2.4 [INFO] [stderr] Compiling pkg-config v0.3.30 [INFO] [stderr] Compiling cfg_aliases v0.2.1 [INFO] [stderr] Checking anstream v0.6.14 [INFO] [stderr] Compiling nix v0.29.0 [INFO] [stderr] Compiling memoffset v0.6.5 [INFO] [stderr] Checking cpufeatures v0.2.12 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Checking humantime v2.1.0 [INFO] [stderr] Checking bitflags v1.3.2 [INFO] [stderr] Checking bitmaps v3.2.1 [INFO] [stderr] Checking ppv-lite86 v0.2.17 [INFO] [stderr] Checking smallvec v1.13.2 [INFO] [stderr] Checking either v1.13.0 [INFO] [stderr] Checking remove_dir_all v0.5.3 [INFO] [stderr] Checking clap_builder v4.5.7 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking pin-project-lite v0.2.14 [INFO] [stderr] Checking oneshot v0.1.8 [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Compiling fuser v0.14.0 (https://github.com/Start9Labs/fuser.git#b60f00a8) [INFO] [stderr] Checking imbl-sized-chunks v0.1.2 [INFO] [stderr] Compiling quote v1.0.36 [INFO] [stderr] Compiling syn v2.0.68 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Checking inout v0.1.3 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Checking sha2 v0.10.8 [INFO] [stderr] Checking regex-automata v0.4.7 [INFO] [stderr] Checking pbkdf2 v0.12.2 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Checking page_size v0.6.0 [INFO] [stderr] Checking nix v0.24.3 [INFO] [stderr] Checking rand v0.4.6 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand_xoshiro v0.6.0 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking tempdir v0.3.7 [INFO] [stderr] Checking ctrlc v3.4.4 [INFO] [stderr] Checking regex v1.10.5 [INFO] [stderr] Compiling serde_derive v1.0.203 [INFO] [stderr] Compiling zerocopy-derive v0.7.34 [INFO] [stderr] Compiling clap_derive v4.5.5 [INFO] [stderr] Compiling test-log-macros v0.2.16 [INFO] [stderr] Compiling tokio-macros v2.3.0 [INFO] [stderr] Checking env_filter v0.1.0 [INFO] [stderr] Checking env_logger v0.11.3 [INFO] [stderr] Checking zerocopy v0.7.34 [INFO] [stderr] Checking test-log v0.2.16 [INFO] [stderr] Checking tokio v1.38.0 [INFO] [stderr] Checking clap v4.5.7 [INFO] [stderr] Checking fd-lock-rs v0.1.4 [INFO] [stderr] Checking zeroize v1.8.1 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking generic-array v1.0.0 [INFO] [stderr] Checking imbl v3.0.0 [INFO] [stderr] Checking cipher v0.4.4 [INFO] [stderr] Checking chacha20 v0.9.1 [INFO] [stderr] Checking startos-backup-fs v0.1.0 (/opt/rustwide/workdir/backup-fs) [INFO] [stdout] warning: unused import: `std::os::raw::c_void` [INFO] [stdout] --> backup-fs/src/inode.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::os::raw::c_void; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::os::raw::c_void` [INFO] [stdout] --> backup-fs/src/inode.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::os::raw::c_void; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `read` [INFO] [stdout] --> backup-fs/src/handle.rs:658:27 [INFO] [stdout] | [INFO] [stdout] 658 | let (access_mask, read, _) = match flags & libc::O_ACCMODE { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_read` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `read` [INFO] [stdout] --> backup-fs/src/handle.rs:658:27 [INFO] [stdout] | [INFO] [stdout] 658 | let (access_mask, read, _) = match flags & libc::O_ACCMODE { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_read` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `lock` is never read [INFO] [stdout] --> backup-fs/src/lib.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 99 | pub struct BackupFS { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 100 | lock: FdLock, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `rollback` is never used [INFO] [stdout] --> backup-fs/src/atomic_file.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl AtomicFile { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn rollback(mut self) -> BkfsResult<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> backup-fs/src/util.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 10 | impl RandReader { [INFO] [stdout] | ------------------------------ associated function in this implementation [INFO] [stdout] 11 | pub fn new(rng: R) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `last`, `release`, and `try_join` are never used [INFO] [stdout] --> backup-fs/src/util.rs:95:8 [INFO] [stdout] | [INFO] [stdout] 71 | impl NonContinuousRange { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 95 | fn last(&self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 165 | fn release(&mut self, id: u64) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 239 | fn try_join(left: Self, right: Self) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `empty`, `peek_next`, and `release` are never used [INFO] [stdout] --> backup-fs/src/util.rs:281:12 [INFO] [stdout] | [INFO] [stdout] 274 | impl IdPool { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 281 | pub fn empty() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 294 | pub fn peek_next(&self, after: u64) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 312 | pub fn release(&mut self, id: u64) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> backup-fs/src/atomic_file.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | &OpenOptions::new().write(true).truncate(true).create(true), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `OpenOptions::new().write(true).truncate(true).create(true)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> backup-fs/src/contents.rs:190:10 [INFO] [stdout] | [INFO] [stdout] 190 | ) -> (SmallVec<[Range; 1]>, SmallVec<[Range; 1]>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual backwards iteration [INFO] [stdout] --> backup-fs/src/contents.rs:198:26 [INFO] [stdout] | [INFO] [stdout] 198 | .range(..pos) [INFO] [stdout] | __________________________^ [INFO] [stdout] 199 | | .rev() [INFO] [stdout] 200 | | .next() [INFO] [stdout] | |___________________^ help: use: `.next_back()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_next_back [INFO] [stdout] = note: `#[warn(clippy::manual_next_back)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual backwards iteration [INFO] [stdout] --> backup-fs/src/contents.rs:232:31 [INFO] [stdout] | [INFO] [stdout] 232 | .range_mut(..=pos) [INFO] [stdout] | _______________________________^ [INFO] [stdout] 233 | | .rev() [INFO] [stdout] 234 | | .next() [INFO] [stdout] | |___________________^ help: use: `.next_back()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_next_back [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> backup-fs/src/contents.rs:356:12 [INFO] [stdout] | [INFO] [stdout] 356 | if self.file.as_ref().map_or(false, |f| f.is_ok()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 356 - if self.file.as_ref().map_or(false, |f| f.is_ok()) { [INFO] [stdout] 356 + if self.file.as_ref().is_some_and(|f| f.is_ok()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> backup-fs/src/ctrl.rs:93:54 [INFO] [stdout] | [INFO] [stdout] 93 | .and_then(|f| EncryptedFile::open(f, &self.key())) [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `self.key()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> backup-fs/src/error.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | e.raw_os_error().unwrap_or_else(|| libc::EIO) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 11 - e.raw_os_error().unwrap_or_else(|| libc::EIO) [INFO] [stdout] 11 + e.raw_os_error().unwrap_or(libc::EIO) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (15/7) [INFO] [stdout] --> backup-fs/src/handle.rs:187:5 [INFO] [stdout] | [INFO] [stdout] 187 | / pub fn setattr( [INFO] [stdout] 188 | | &mut self, [INFO] [stdout] 189 | | req: &Request, [INFO] [stdout] 190 | | inode: Inode, [INFO] [stdout] ... | [INFO] [stdout] 202 | | flags: Option, [INFO] [stdout] 203 | | ) -> BkfsResult { [INFO] [stdout] | |____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> backup-fs/src/handle.rs:245:5 [INFO] [stdout] | [INFO] [stdout] 245 | / pub fn mknod FileData>( [INFO] [stdout] 246 | | &mut self, [INFO] [stdout] 247 | | req: &Request, [INFO] [stdout] 248 | | parent: Inode, [INFO] [stdout] ... | [INFO] [stdout] 253 | | contents: Option, [INFO] [stdout] 254 | | ) -> BkfsResult { [INFO] [stdout] | |____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> backup-fs/src/handle.rs:580:5 [INFO] [stdout] | [INFO] [stdout] 580 | / pub fn read( [INFO] [stdout] 581 | | &mut self, [INFO] [stdout] 582 | | _req: &Request, [INFO] [stdout] 583 | | _inode: Inode, [INFO] [stdout] ... | [INFO] [stdout] 588 | | _lock_owner: Option, [INFO] [stdout] 589 | | ) -> BkfsResult> { [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> backup-fs/src/handle.rs:609:5 [INFO] [stdout] | [INFO] [stdout] 609 | / pub fn write( [INFO] [stdout] 610 | | &mut self, [INFO] [stdout] 611 | | _req: &Request, [INFO] [stdout] 612 | | _inode: Inode, [INFO] [stdout] ... | [INFO] [stdout] 618 | | _lock_owner: Option, [INFO] [stdout] 619 | | ) -> BkfsResult { [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take` [INFO] [stdout] --> backup-fs/src/handle.rs:826:22 [INFO] [stdout] | [INFO] [stdout] 826 | let xattrs = std::mem::replace(&mut attrs.xattrs, Default::default()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(&mut attrs.xattrs)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_with_default [INFO] [stdout] = note: `#[warn(clippy::mem_replace_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `lock` is never read [INFO] [stdout] --> backup-fs/src/lib.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 99 | pub struct BackupFS { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 100 | lock: FdLock, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `rollback` is never used [INFO] [stdout] --> backup-fs/src/atomic_file.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl AtomicFile { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn rollback(mut self) -> BkfsResult<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> backup-fs/src/util.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 10 | impl RandReader { [INFO] [stdout] | ------------------------------ associated function in this implementation [INFO] [stdout] 11 | pub fn new(rng: R) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `last`, `release`, and `try_join` are never used [INFO] [stdout] --> backup-fs/src/util.rs:95:8 [INFO] [stdout] | [INFO] [stdout] 71 | impl NonContinuousRange { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 95 | fn last(&self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 165 | fn release(&mut self, id: u64) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 239 | fn try_join(left: Self, right: Self) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> backup-fs/src/handle.rs:878:5 [INFO] [stdout] | [INFO] [stdout] 878 | / pub fn copy_file_range( [INFO] [stdout] 879 | | &mut self, [INFO] [stdout] 880 | | req: &Request, [INFO] [stdout] 881 | | src_inode: Inode, [INFO] [stdout] ... | [INFO] [stdout] 888 | | flags: u32, [INFO] [stdout] 889 | | ) -> BkfsResult { [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `empty`, `peek_next`, and `release` are never used [INFO] [stdout] --> backup-fs/src/util.rs:281:12 [INFO] [stdout] | [INFO] [stdout] 274 | impl IdPool { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 281 | pub fn empty() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 294 | pub fn peek_next(&self, after: u64) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 312 | pub fn release(&mut self, id: u64) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> backup-fs/src/atomic_file.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | &OpenOptions::new().write(true).truncate(true).create(true), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `OpenOptions::new().write(true).truncate(true).create(true)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> backup-fs/src/contents.rs:190:10 [INFO] [stdout] | [INFO] [stdout] 190 | ) -> (SmallVec<[Range; 1]>, SmallVec<[Range; 1]>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual backwards iteration [INFO] [stdout] --> backup-fs/src/contents.rs:198:26 [INFO] [stdout] | [INFO] [stdout] 198 | .range(..pos) [INFO] [stdout] | __________________________^ [INFO] [stdout] 199 | | .rev() [INFO] [stdout] 200 | | .next() [INFO] [stdout] | |___________________^ help: use: `.next_back()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_next_back [INFO] [stdout] = note: `#[warn(clippy::manual_next_back)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual backwards iteration [INFO] [stdout] --> backup-fs/src/contents.rs:232:31 [INFO] [stdout] | [INFO] [stdout] 232 | .range_mut(..=pos) [INFO] [stdout] | _______________________________^ [INFO] [stdout] 233 | | .rev() [INFO] [stdout] 234 | | .next() [INFO] [stdout] | |___________________^ help: use: `.next_back()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_next_back [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> backup-fs/src/contents.rs:356:12 [INFO] [stdout] | [INFO] [stdout] 356 | if self.file.as_ref().map_or(false, |f| f.is_ok()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 356 - if self.file.as_ref().map_or(false, |f| f.is_ok()) { [INFO] [stdout] 356 + if self.file.as_ref().is_some_and(|f| f.is_ok()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> backup-fs/src/inode.rs:170:21 [INFO] [stdout] | [INFO] [stdout] 170 | blocks: (attrs.size + BLOCK_SIZE - 1) / BLOCK_SIZE, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `attrs.size.div_ceil(BLOCK_SIZE)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> backup-fs/src/inode.rs:227:6 [INFO] [stdout] | [INFO] [stdout] 227 | impl<'a> Save for &'a InodeAttributes { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 227 - impl<'a> Save for &'a InodeAttributes { [INFO] [stdout] 227 + impl Save for &InodeAttributes { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> backup-fs/src/inode.rs:242:28 [INFO] [stdout] | [INFO] [stdout] 242 | File::open(&ctrl.inode_path(inode))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `ctrl.inode_path(inode)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> backup-fs/src/inode.rs:310:20 [INFO] [stdout] | [INFO] [stdout] 310 | if !self.is_root_for(&handler.ctrl().config().idmapped_root, req.uid(), [uid]) [INFO] [stdout] | ____________________^ [INFO] [stdout] 311 | | // but no-op changes by the owner are not an error [INFO] [stdout] 312 | | && !(uid == self.uid && req.uid() == self.uid) [INFO] [stdout] | |______________________________________________________________________^ help: try: `!(self.is_root_for(&handler.ctrl().config().idmapped_root, req.uid(), [uid]) || uid == self.uid && req.uid() == self.uid)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (16/7) [INFO] [stdout] --> backup-fs/src/inode.rs:256:5 [INFO] [stdout] | [INFO] [stdout] 256 | / pub fn setattr( [INFO] [stdout] 257 | | &mut self, [INFO] [stdout] 258 | | handler: &mut Handler, [INFO] [stdout] 259 | | req: &Request, [INFO] [stdout] ... | [INFO] [stdout] 272 | | _flags: Option, [INFO] [stdout] 273 | | ) -> BkfsResult { [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> backup-fs/src/ctrl.rs:93:54 [INFO] [stdout] | [INFO] [stdout] 93 | .and_then(|f| EncryptedFile::open(f, &self.key())) [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `self.key()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> backup-fs/src/inode.rs:458:18 [INFO] [stdout] | [INFO] [stdout] 458 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> backup-fs/src/inode.rs:552:21 [INFO] [stdout] | [INFO] [stdout] 552 | / { [INFO] [stdout] 553 | | return BkfsResult::errno(libc::EPERM); [INFO] [stdout] 554 | | } else if key.eq(b"system.posix_acl_access") [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> backup-fs/src/inode.rs:557:21 [INFO] [stdout] | [INFO] [stdout] 557 | / { [INFO] [stdout] 558 | | return BkfsResult::errno(libc::EPERM); [INFO] [stdout] 559 | | } else if request.uid() != 0 { [INFO] [stdout] | |_____________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> backup-fs/src/inode.rs:557:21 [INFO] [stdout] | [INFO] [stdout] 557 | / { [INFO] [stdout] 558 | | return BkfsResult::errno(libc::EPERM); [INFO] [stdout] 559 | | } else if request.uid() != 0 { [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> backup-fs/src/inode.rs:559:50 [INFO] [stdout] | [INFO] [stdout] 559 | } else if request.uid() != 0 { [INFO] [stdout] | __________________________________________________^ [INFO] [stdout] 560 | | return BkfsResult::errno(libc::EPERM); [INFO] [stdout] 561 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> backup-fs/src/error.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | e.raw_os_error().unwrap_or_else(|| libc::EIO) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 11 - e.raw_os_error().unwrap_or_else(|| libc::EIO) [INFO] [stdout] 11 + e.raw_os_error().unwrap_or(libc::EIO) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> backup-fs/src/util.rs:66:1 [INFO] [stdout] | [INFO] [stdout] 66 | / impl Default for NonContinuousRange { [INFO] [stdout] 67 | | fn default() -> Self { [INFO] [stdout] 68 | | Self::Empty [INFO] [stdout] 69 | | } [INFO] [stdout] 70 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 61 + #[derive(Default)] [INFO] [stdout] 62 | enum NonContinuousRange { [INFO] [stdout] 63 ~ #[default] [INFO] [stdout] 64 ~ Empty, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (15/7) [INFO] [stdout] --> backup-fs/src/handle.rs:187:5 [INFO] [stdout] | [INFO] [stdout] 187 | / pub fn setattr( [INFO] [stdout] 188 | | &mut self, [INFO] [stdout] 189 | | req: &Request, [INFO] [stdout] 190 | | inode: Inode, [INFO] [stdout] ... | [INFO] [stdout] 202 | | flags: Option, [INFO] [stdout] 203 | | ) -> BkfsResult { [INFO] [stdout] | |____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> backup-fs/src/handle.rs:245:5 [INFO] [stdout] | [INFO] [stdout] 245 | / pub fn mknod FileData>( [INFO] [stdout] 246 | | &mut self, [INFO] [stdout] 247 | | req: &Request, [INFO] [stdout] 248 | | parent: Inode, [INFO] [stdout] ... | [INFO] [stdout] 253 | | contents: Option, [INFO] [stdout] 254 | | ) -> BkfsResult { [INFO] [stdout] | |____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `CryptInfo` [INFO] [stdout] --> backup-fs/src/lib.rs:114:5 [INFO] [stdout] | [INFO] [stdout] 114 | / pub fn new() -> Self { [INFO] [stdout] 115 | | Self { [INFO] [stdout] 116 | | key: Zeroizing::new(rand::random()), [INFO] [stdout] 117 | | inode_iv: rand::random(), [INFO] [stdout] ... | [INFO] [stdout] 120 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 113 + impl Default for CryptInfo { [INFO] [stdout] 114 + fn default() -> Self { [INFO] [stdout] 115 + Self::new() [INFO] [stdout] 116 + } [INFO] [stdout] 117 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> backup-fs/src/handle.rs:580:5 [INFO] [stdout] | [INFO] [stdout] 580 | / pub fn read( [INFO] [stdout] 581 | | &mut self, [INFO] [stdout] 582 | | _req: &Request, [INFO] [stdout] 583 | | _inode: Inode, [INFO] [stdout] ... | [INFO] [stdout] 588 | | _lock_owner: Option, [INFO] [stdout] 589 | | ) -> BkfsResult> { [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> backup-fs/src/handle.rs:609:5 [INFO] [stdout] | [INFO] [stdout] 609 | / pub fn write( [INFO] [stdout] 610 | | &mut self, [INFO] [stdout] 611 | | _req: &Request, [INFO] [stdout] 612 | | _inode: Inode, [INFO] [stdout] ... | [INFO] [stdout] 618 | | _lock_owner: Option, [INFO] [stdout] 619 | | ) -> BkfsResult { [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take` [INFO] [stdout] --> backup-fs/src/handle.rs:826:22 [INFO] [stdout] | [INFO] [stdout] 826 | let xattrs = std::mem::replace(&mut attrs.xattrs, Default::default()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(&mut attrs.xattrs)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_with_default [INFO] [stdout] = note: `#[warn(clippy::mem_replace_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> backup-fs/src/handle.rs:878:5 [INFO] [stdout] | [INFO] [stdout] 878 | / pub fn copy_file_range( [INFO] [stdout] 879 | | &mut self, [INFO] [stdout] 880 | | req: &Request, [INFO] [stdout] 881 | | src_inode: Inode, [INFO] [stdout] ... | [INFO] [stdout] 888 | | flags: u32, [INFO] [stdout] 889 | | ) -> BkfsResult { [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> backup-fs/src/inode.rs:170:21 [INFO] [stdout] | [INFO] [stdout] 170 | blocks: (attrs.size + BLOCK_SIZE - 1) / BLOCK_SIZE, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `attrs.size.div_ceil(BLOCK_SIZE)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> backup-fs/src/inode.rs:227:6 [INFO] [stdout] | [INFO] [stdout] 227 | impl<'a> Save for &'a InodeAttributes { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 227 - impl<'a> Save for &'a InodeAttributes { [INFO] [stdout] 227 + impl Save for &InodeAttributes { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> backup-fs/src/inode.rs:242:28 [INFO] [stdout] | [INFO] [stdout] 242 | File::open(&ctrl.inode_path(inode))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `ctrl.inode_path(inode)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> backup-fs/src/inode.rs:310:20 [INFO] [stdout] | [INFO] [stdout] 310 | if !self.is_root_for(&handler.ctrl().config().idmapped_root, req.uid(), [uid]) [INFO] [stdout] | ____________________^ [INFO] [stdout] 311 | | // but no-op changes by the owner are not an error [INFO] [stdout] 312 | | && !(uid == self.uid && req.uid() == self.uid) [INFO] [stdout] | |______________________________________________________________________^ help: try: `!(self.is_root_for(&handler.ctrl().config().idmapped_root, req.uid(), [uid]) || uid == self.uid && req.uid() == self.uid)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (16/7) [INFO] [stdout] --> backup-fs/src/inode.rs:256:5 [INFO] [stdout] | [INFO] [stdout] 256 | / pub fn setattr( [INFO] [stdout] 257 | | &mut self, [INFO] [stdout] 258 | | handler: &mut Handler, [INFO] [stdout] 259 | | req: &Request, [INFO] [stdout] ... | [INFO] [stdout] 272 | | _flags: Option, [INFO] [stdout] 273 | | ) -> BkfsResult { [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> backup-fs/src/inode.rs:458:18 [INFO] [stdout] | [INFO] [stdout] 458 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> backup-fs/src/inode.rs:552:21 [INFO] [stdout] | [INFO] [stdout] 552 | / { [INFO] [stdout] 553 | | return BkfsResult::errno(libc::EPERM); [INFO] [stdout] 554 | | } else if key.eq(b"system.posix_acl_access") [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> backup-fs/src/inode.rs:557:21 [INFO] [stdout] | [INFO] [stdout] 557 | / { [INFO] [stdout] 558 | | return BkfsResult::errno(libc::EPERM); [INFO] [stdout] 559 | | } else if request.uid() != 0 { [INFO] [stdout] | |_____________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> backup-fs/src/inode.rs:557:21 [INFO] [stdout] | [INFO] [stdout] 557 | / { [INFO] [stdout] 558 | | return BkfsResult::errno(libc::EPERM); [INFO] [stdout] 559 | | } else if request.uid() != 0 { [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> backup-fs/src/inode.rs:559:50 [INFO] [stdout] | [INFO] [stdout] 559 | } else if request.uid() != 0 { [INFO] [stdout] | __________________________________________________^ [INFO] [stdout] 560 | | return BkfsResult::errno(libc::EPERM); [INFO] [stdout] 561 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> backup-fs/src/util.rs:66:1 [INFO] [stdout] | [INFO] [stdout] 66 | / impl Default for NonContinuousRange { [INFO] [stdout] 67 | | fn default() -> Self { [INFO] [stdout] 68 | | Self::Empty [INFO] [stdout] 69 | | } [INFO] [stdout] 70 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 61 + #[derive(Default)] [INFO] [stdout] 62 | enum NonContinuousRange { [INFO] [stdout] 63 ~ #[default] [INFO] [stdout] 64 ~ Empty, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `CryptInfo` [INFO] [stdout] --> backup-fs/src/lib.rs:114:5 [INFO] [stdout] | [INFO] [stdout] 114 | / pub fn new() -> Self { [INFO] [stdout] 115 | | Self { [INFO] [stdout] 116 | | key: Zeroizing::new(rand::random()), [INFO] [stdout] 117 | | inode_iv: rand::random(), [INFO] [stdout] ... | [INFO] [stdout] 120 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 113 + impl Default for CryptInfo { [INFO] [stdout] 114 + fn default() -> Self { [INFO] [stdout] 115 + Self::new() [INFO] [stdout] 116 + } [INFO] [stdout] 117 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BkfsError` [INFO] [stdout] --> backup-fs/src/main.rs:1:23 [INFO] [stdout] | [INFO] [stdout] 1 | use backupfs::error::{BkfsError, BkfsErrorKind}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BkfsError` [INFO] [stdout] --> backup-fs/src/main.rs:1:23 [INFO] [stdout] | [INFO] [stdout] 1 | use backupfs::error::{BkfsError, BkfsErrorKind}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [optimized + debuginfo] target(s) in 26.27s [INFO] running `Command { std: "docker" "inspect" "7895c61417f643bfcba97cd0b91029207ce51159c793f5dc7371e00150256af4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7895c61417f643bfcba97cd0b91029207ce51159c793f5dc7371e00150256af4", kill_on_drop: false }` [INFO] [stdout] 7895c61417f643bfcba97cd0b91029207ce51159c793f5dc7371e00150256af4