[INFO] cloning repository https://github.com/cnpm/rapid [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/cnpm/rapid" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcnpm%2Frapid", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcnpm%2Frapid'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 0c56518557c69c40dd33458d40734d09d9c369e1 [INFO] linting cnpm/rapid against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcnpm%2Frapid" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-1-tc1/source/.cargo/config.toml [INFO] started tweaking git repo https://github.com/cnpm/rapid [INFO] finished tweaking git repo https://github.com/cnpm/rapid [INFO] tweaked toml for git repo https://github.com/cnpm/rapid written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/cnpm/rapid 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/cnpm/rapid 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] Downloading crates ... [INFO] [stderr] Downloaded hyperlocal v0.8.0 [INFO] [stderr] Downloaded cache-padded v1.1.1 [INFO] [stderr] Downloaded neon-build v0.9.1 [INFO] [stderr] Downloaded gloo-timers v0.2.1 [INFO] [stderr] Downloaded event-listener v2.5.1 [INFO] [stderr] Downloaded neon-runtime v0.9.1 [INFO] [stderr] Downloaded async-recursion v1.0.0 [INFO] [stderr] Downloaded quanta v0.4.1 [INFO] [stderr] Downloaded napi-derive v2.0.7 [INFO] [stderr] Downloaded ahash v0.3.8 [INFO] [stderr] Downloaded napi-sys v2.1.0 [INFO] [stderr] Downloaded darling v0.13.0 [INFO] [stderr] Downloaded convert_case v0.5.0 [INFO] [stderr] Downloaded cargo-lock v4.0.1 [INFO] [stderr] Downloaded async-compression v0.3.8 [INFO] [stderr] Downloaded napi v2.0.3 [INFO] [stderr] Downloaded tokio-util v0.7.8 [INFO] [stderr] Downloaded hyper v1.1.0 [INFO] [stderr] Downloaded governor v0.3.2 [INFO] [stderr] Downloaded hyper v0.13.10 [INFO] [stderr] Downloaded git2 v0.13.23 [INFO] [stderr] Downloaded nix v0.23.0 [INFO] [stderr] Downloaded async-std v1.10.0 [INFO] [stderr] Downloaded neon v0.9.1 [INFO] [stderr] Downloaded webpki-roots v0.22.1 [INFO] [stderr] Downloaded nix v0.17.0 [INFO] [stderr] Downloaded axum v0.7.4 [INFO] [stderr] Downloaded lz4-sys v1.9.2 [INFO] [stderr] Downloaded h2 v0.4.2 [INFO] [stderr] Downloaded time v0.3.9 [INFO] [stderr] Downloaded http v1.0.0 [INFO] [stderr] Downloaded hashbrown v0.8.2 [INFO] [stderr] Downloaded flexi_logger v0.17.1 [INFO] [stderr] Downloaded security-framework v2.4.2 [INFO] [stderr] Downloaded tokio v0.2.25 [INFO] [stderr] Downloaded wmi v0.13.1 [INFO] [stderr] Downloaded serde_with v1.11.0 [INFO] [stderr] Downloaded vmm-sys-util v0.9.0 [INFO] [stderr] Downloaded serde_json v1.0.69 [INFO] [stderr] Downloaded napi-derive-backend v1.0.23 [INFO] [stderr] Downloaded time-macros v0.2.4 [INFO] [stderr] Downloaded async-task v4.0.3 [INFO] [stderr] Downloaded blocking v1.0.2 [INFO] [stderr] Downloaded arc-swap v0.4.8 [INFO] [stderr] Downloaded darling_core v0.13.0 [INFO] [stderr] Downloaded colored v1.9.3 [INFO] [stderr] Downloaded hyper-util v0.1.2 [INFO] [stderr] Downloaded windows_i686_msvc v0.29.0 [INFO] [stderr] Downloaded windows_x86_64_gnu v0.29.0 [INFO] [stderr] Downloaded polling v2.1.0 [INFO] [stderr] Downloaded serde_with_macros v1.5.1 [INFO] [stderr] Downloaded windows_aarch64_msvc v0.29.0 [INFO] [stderr] Downloaded windows_i686_gnu v0.29.0 [INFO] [stderr] Downloaded windows_x86_64_msvc v0.29.0 [INFO] [stderr] Downloaded log4rs v1.2.0 [INFO] [stderr] Downloaded num_threads v0.1.5 [INFO] [stderr] Downloaded simple_logger v2.1.0 [INFO] [stderr] Downloaded sendfd v0.3.3 [INFO] [stderr] Downloaded simple_logger v1.13.0 [INFO] [stderr] Downloaded homedir v0.2.1 [INFO] [stderr] Downloaded serde_yaml v0.8.26 [INFO] [stderr] Downloaded darling_macro v0.13.0 [INFO] [stderr] Downloaded spmc v0.3.0 [INFO] [stderr] Downloaded http-body-util v0.1.0 [INFO] [stderr] Downloaded async-global-executor v2.0.2 [INFO] [stderr] Downloaded async-lock v2.4.0 [INFO] [stderr] Downloaded fastrand v1.5.0 [INFO] [stderr] Downloaded neon-macros v0.9.1 [INFO] [stderr] Downloaded built v0.4.3 [INFO] [stderr] Downloaded nonzero_ext v0.2.0 [INFO] [stderr] Downloaded cslice v0.2.0 [INFO] [stderr] Downloaded arc-swap v1.6.0 [INFO] [stderr] Downloaded libz-sys v1.1.3 [INFO] [stderr] Downloaded libgit2-sys v0.12.24+1.3.0 [INFO] [stderr] Downloaded napi-build v1.2.1 [INFO] [stderr] Downloaded windows v0.29.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 205df8929d0763b54fb3b93b06527a228afad05f5043f03e8b20aa8c27f0308b [INFO] running `Command { std: "docker" "start" "-a" "205df8929d0763b54fb3b93b06527a228afad05f5043f03e8b20aa8c27f0308b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "205df8929d0763b54fb3b93b06527a228afad05f5043f03e8b20aa8c27f0308b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "205df8929d0763b54fb3b93b06527a228afad05f5043f03e8b20aa8c27f0308b", kill_on_drop: false }` [INFO] [stdout] 205df8929d0763b54fb3b93b06527a228afad05f5043f03e8b20aa8c27f0308b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] cf352b39bb8c71e89e851b998d509ad36927160af59933a0cb797fe5d668531a [INFO] running `Command { std: "docker" "start" "-a" "cf352b39bb8c71e89e851b998d509ad36927160af59933a0cb797fe5d668531a", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.152 [INFO] [stderr] Compiling autocfg v1.1.0 [INFO] [stderr] Compiling proc-macro2 v1.0.76 [INFO] [stderr] Compiling syn v1.0.81 [INFO] [stderr] Compiling unicode-xid v0.2.2 [INFO] [stderr] Compiling futures-core v0.3.17 [INFO] [stderr] Compiling memchr v2.4.1 [INFO] [stderr] Checking smallvec v1.7.0 [INFO] [stderr] Checking value-bag v1.6.0 [INFO] [stderr] Checking scopeguard v1.1.0 [INFO] [stderr] Checking bytes v1.1.0 [INFO] [stderr] Compiling lock_api v0.4.11 [INFO] [stderr] Checking futures-io v0.3.17 [INFO] [stderr] Checking slab v0.4.5 [INFO] [stderr] Compiling tokio v1.29.1 [INFO] [stderr] Compiling proc-macro-hack v0.5.19 [INFO] [stderr] Checking futures-sink v0.3.17 [INFO] [stderr] Compiling pkg-config v0.3.22 [INFO] [stderr] Compiling futures-macro v0.3.17 [INFO] [stderr] Compiling futures-task v0.3.17 [INFO] [stderr] Compiling quote v1.0.35 [INFO] [stderr] Compiling futures-channel v0.3.17 [INFO] [stderr] Compiling proc-macro-nested v0.1.7 [INFO] [stderr] Compiling futures-util v0.3.17 [INFO] [stderr] Compiling num-traits v0.2.14 [INFO] [stderr] Compiling syn v2.0.48 [INFO] [stderr] Checking itoa v0.4.8 [INFO] [stderr] Compiling num-integer v0.1.44 [INFO] [stderr] Compiling ryu v1.0.5 [INFO] [stderr] Checking ppv-lite86 v0.2.15 [INFO] [stderr] Compiling tinyvec_macros v0.1.0 [INFO] [stderr] Compiling tinyvec v1.5.1 [INFO] [stderr] Checking num_cpus v1.13.0 [INFO] [stderr] Checking socket2 v0.4.10 [INFO] [stderr] Checking parking_lot_core v0.9.9 [INFO] [stderr] Checking signal-hook-registry v1.4.0 [INFO] [stderr] Checking parking_lot v0.12.1 [INFO] [stderr] Checking mio v0.8.10 [INFO] [stderr] Checking getrandom v0.2.3 [INFO] [stderr] Compiling jobserver v0.1.24 [INFO] [stderr] Checking rand_core v0.6.3 [INFO] [stderr] Compiling cc v1.0.71 [INFO] [stderr] Compiling matches v0.1.9 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Compiling unicode-bidi v0.3.7 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling serde_json v1.0.69 [INFO] [stderr] Compiling percent-encoding v2.1.0 [INFO] [stderr] Compiling unicode-normalization v0.1.19 [INFO] [stderr] Compiling form_urlencoded v1.0.1 [INFO] [stderr] Checking rand v0.8.4 [INFO] [stderr] Checking time v0.1.44 [INFO] [stderr] Checking tracing-core v0.1.32 [INFO] [stderr] Compiling typenum v1.14.0 [INFO] [stderr] Compiling version_check v0.9.3 [INFO] [stderr] Checking filetime v0.2.15 [INFO] [stderr] Checking xattr v0.2.2 [INFO] [stderr] Compiling generic-array v0.14.4 [INFO] [stderr] Checking aho-corasick v0.7.18 [INFO] [stderr] Compiling idna v0.2.3 [INFO] [stderr] Compiling miniz_oxide v0.4.4 [INFO] [stderr] Checking regex-syntax v0.6.25 [INFO] [stderr] Compiling libz-sys v1.1.3 [INFO] [stderr] Compiling libgit2-sys v0.12.24+1.3.0 [INFO] [stderr] Compiling semver-parser v0.7.0 [INFO] [stderr] Compiling url v2.2.2 [INFO] [stderr] Compiling bitflags v1.3.2 [INFO] [stderr] Compiling ring v0.16.20 [INFO] [stderr] Compiling strsim v0.10.0 [INFO] [stderr] Compiling anyhow v1.0.45 [INFO] [stderr] Compiling miniz-sys v0.1.12 [INFO] [stderr] Compiling backtrace v0.3.63 [INFO] [stderr] Compiling hashbrown v0.8.2 [INFO] [stderr] Compiling indexmap v1.7.0 [INFO] [stderr] Compiling parking_lot_core v0.8.5 [INFO] [stderr] Compiling crc32fast v1.2.1 [INFO] [stderr] Compiling nix v0.17.0 [INFO] [stderr] Checking gimli v0.26.1 [INFO] [stderr] Checking object v0.27.1 [INFO] [stderr] Checking instant v0.1.12 [INFO] [stderr] Checking base64 v0.13.0 [INFO] [stderr] Checking glob v0.3.0 [INFO] [stderr] Checking regex v1.5.4 [INFO] [stderr] Checking yansi v0.5.0 [INFO] [stderr] Checking rustc-demangle v0.1.21 [INFO] [stderr] Checking void v1.0.2 [INFO] [stderr] Compiling darling_core v0.13.0 [INFO] [stderr] Checking try-lock v0.2.3 [INFO] [stderr] Checking hashbrown v0.11.2 [INFO] [stderr] Compiling serde_derive v1.0.195 [INFO] [stderr] Compiling tokio-macros v2.1.0 [INFO] [stderr] Checking tower-service v0.3.1 [INFO] [stderr] Checking ahash v0.3.8 [INFO] [stderr] Checking addr2line v0.17.0 [INFO] [stderr] Checking digest v0.9.0 [INFO] [stderr] Compiling blake3 v0.3.8 [INFO] [stderr] Compiling lz4-sys v1.9.2 [INFO] [stderr] Compiling thiserror-impl v1.0.30 [INFO] [stderr] Checking subtle v2.4.1 [INFO] [stderr] Checking httpdate v1.0.1 [INFO] [stderr] Compiling darling_macro v0.13.0 [INFO] [stderr] Checking crypto-mac v0.8.0 [INFO] [stderr] Compiling darling v0.13.0 [INFO] [stderr] Compiling serde_with_macros v1.5.1 [INFO] [stderr] Checking parking_lot v0.11.2 [INFO] [stderr] Checking no-std-compat v0.4.1 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Checking flate2 v1.0.22 [INFO] [stderr] Compiling openssl-sys v0.9.70 [INFO] [stderr] Checking dashmap v4.0.2 [INFO] [stderr] Checking quanta v0.4.1 [INFO] [stderr] Checking http v0.2.5 [INFO] [stderr] Checking nonzero_ext v0.2.0 [INFO] [stderr] Checking thiserror v1.0.30 [INFO] [stderr] Checking opaque-debug v0.3.0 [INFO] [stderr] Checking arrayref v0.3.6 [INFO] [stderr] Checking arrayvec v0.5.2 [INFO] [stderr] Checking cpufeatures v0.2.1 [INFO] [stderr] Checking constant_time_eq v0.1.5 [INFO] [stderr] Checking futures-timer v3.0.2 [INFO] [stderr] Checking sha2 v0.9.8 [INFO] [stderr] Checking spmc v0.3.0 [INFO] [stderr] Checking arc-swap v0.4.8 [INFO] [stderr] Checking unicode-width v0.1.9 [INFO] [stderr] Checking colored v1.9.3 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Checking ansi_term v0.11.0 [INFO] [stderr] Checking cache-padded v1.1.1 [INFO] [stderr] Checking concurrent-queue v1.2.2 [INFO] [stderr] Checking tar v0.4.37 [INFO] [stderr] Compiling memoffset v0.6.4 [INFO] [stderr] Checking clap v2.33.3 [INFO] [stderr] Checking event-listener v2.5.1 [INFO] [stderr] Checking parking v2.0.0 [INFO] [stderr] Checking serde v1.0.195 [INFO] [stderr] Checking waker-fn v1.1.0 [INFO] [stderr] Checking fastrand v1.5.0 [INFO] [stderr] Compiling openssl v0.10.38 [INFO] [stderr] Checking openssl-probe v0.1.4 [INFO] [stderr] Checking futures-lite v1.12.0 [INFO] [stderr] Checking http-body v0.4.4 [INFO] [stderr] Checking tokio-stream v0.1.8 [INFO] [stderr] Checking mime v0.3.16 [INFO] [stderr] Compiling native-tls v0.2.8 [INFO] [stderr] Checking tokio-tar v0.3.0 (/opt/rustwide/workdir/packages/tokio-tar) [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> packages/tokio-tar/src/entry_type.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | / /// which can be used to inspect what the header is describing. [INFO] [stdout] 6 | | [INFO] [stdout] | |_^ [INFO] [stdout] ... [INFO] [stdout] 10 | pub enum EntryType { [INFO] [stdout] | ------------------ the comment documents this enum [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 2 ~ //! Indicate for the type of file described by a header. [INFO] [stdout] 3 ~ //! [INFO] [stdout] 4 ~ //! Each `Header` has an `entry_type` method returning an instance of this type [INFO] [stdout] 5 ~ //! which can be used to inspect what the header is describing. [INFO] [stdout] | [INFO] [stdout] help: if the documentation should include the empty line include it in the comment [INFO] [stdout] | [INFO] [stdout] 6 | /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: can be more succinctly written as a byte str [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1517:25 [INFO] [stdout] | [INFO] [stdout] 1517 | copy(&mut slot, &[b'/'])?; [INFO] [stdout] | ^^^^^^^ help: try: `b"/"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#byte_char_slices [INFO] [stdout] = note: `#[warn(clippy::byte_char_slices)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: can be more succinctly written as a byte str [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1542:40 [INFO] [stdout] | [INFO] [stdout] 1542 | p.as_os_str().as_bytes().ends_with(&[b'/']) [INFO] [stdout] | ^^^^^^^ help: try: `b"/"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#byte_char_slices [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling neon-build v0.9.1 [INFO] [stderr] Checking futures-executor v0.3.17 [INFO] [stderr] Compiling async-trait v0.1.77 [INFO] [stderr] Checking futures v0.3.17 [INFO] [stderr] Checking governor v0.3.2 [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:858:13 [INFO] [stdout] | [INFO] [stdout] 858 | let mut this = self.get_mut(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> packages/tokio-tar/src/archive.rs:508:16 [INFO] [stdout] | [INFO] [stdout] 508 | if (size - remaining) % 512 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `!(size - remaining).is_multiple_of(512)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/tokio-tar/src/builder.rs:185:21 [INFO] [stdout] | [INFO] [stdout] 185 | self.append(&header, data).await?; [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/tokio-tar/src/builder.rs:531:31 [INFO] [stdout] | [INFO] [stdout] 531 | let data = path2bytes(&path)?; [INFO] [stdout] | ^^^^^ help: change this to: `path` [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: the borrowed expression implements the required traits [INFO] [stdout] --> packages/tokio-tar/src/builder.rs:556:42 [INFO] [stdout] | [INFO] [stdout] 556 | if let Err(e) = header.set_link_name(&link_name) { [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `link_name` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/tokio-tar/src/builder.rs:557:31 [INFO] [stdout] | [INFO] [stdout] 557 | let data = path2bytes(&link_name)?; [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `link_name` [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: the borrowed expression implements the required traits [INFO] [stdout] --> packages/tokio-tar/src/builder.rs:598:47 [INFO] [stdout] | [INFO] [stdout] 598 | let dest = path.join(src.strip_prefix(&src_path).unwrap()); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `src_path` [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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:476:53 [INFO] [stdout] | [INFO] [stdout] 476 | let canon_target = self.validate_inside_dst(&dst, parent).await?; [INFO] [stdout] | ^^^^ help: change this to: `dst` [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: the borrowed expression implements the required traits [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:684:42 [INFO] [stdout] | [INFO] [stdout] 684 | filetime::set_file_times(&dst, mtime, mtime).map_err(|e| { [INFO] [stdout] | ^^^^ help: change this to: `dst` [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] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:546:26 [INFO] [stdout] | [INFO] [stdout] 546 | Some(ref p) => { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 546 - Some(ref p) => { [INFO] [stdout] 546 + Some(p) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:844:17 [INFO] [stdout] | [INFO] [stdout] 844 | Error::new(ErrorKind::Other, "Invalid argument"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 844 - Error::new(ErrorKind::Other, "Invalid argument"), [INFO] [stdout] 844 + Error::other("Invalid argument"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> packages/tokio-tar/src/header.rs:450:22 [INFO] [stdout] | [INFO] [stdout] 450 | .map(|u| u as u64) [INFO] [stdout] | ^^^^^^^^ help: try: `u` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> packages/tokio-tar/src/header.rs:467:22 [INFO] [stdout] | [INFO] [stdout] 467 | .map(|u| u as u64) [INFO] [stdout] | ^^^^^^^^ help: try: `u` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/src/header.rs:690:20 [INFO] [stdout] | [INFO] [stdout] 690 | .chain(iter::repeat(&b' ').take(len)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(&b' ', len)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/tokio-tar/src/header.rs:726:31 [INFO] [stdout] | [INFO] [stdout] 726 | self.set_mode(meta.mode() as u32); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `meta.mode()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1109:37 [INFO] [stdout] | [INFO] [stdout] 1109 | String::from_utf8_lossy(&self.groupname_bytes()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.groupname_bytes()` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1110:37 [INFO] [stdout] | [INFO] [stdout] 1110 | String::from_utf8_lossy(&self.username_bytes()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.username_bytes()` [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 `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1426:9 [INFO] [stdout] | [INFO] [stdout] 1426 | / repeat(0) [INFO] [stdout] 1427 | | .take(len - 8) // to zero init extra bytes [INFO] [stdout] | |__________________________^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(0, len - 8)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1464:15 [INFO] [stdout] | [INFO] [stdout] 1464 | } else if bytes.iter().any(|b| *b == 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `bytes.contains(&0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1507:25 [INFO] [stdout] | [INFO] [stdout] 1507 | copy(&mut slot, &*bytes)?; [INFO] [stdout] | ^^^^^^^ help: try: `&bytes` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1522:19 [INFO] [stdout] | [INFO] [stdout] 1522 | copy_into(*slot, bytes)?; [INFO] [stdout] | ^^^^^ help: try: `slot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [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] --> packages/tokio-tar/src/header.rs:1523:19 [INFO] [stdout] | [INFO] [stdout] 1523 | let tmp = mem::replace(slot, &mut []); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(slot)` [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: unnecessary `map` on constructor `Ok(_)` [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1570:5 [INFO] [stdout] | [INFO] [stdout] 1570 | Ok(p.as_os_str().as_bytes()).map(Cow::Borrowed) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Ok(Cow::Borrowed(p.as_os_str().as_bytes()))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_on_constructor [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_on_constructor)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking async-task v4.0.3 [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> packages/tokio-tar/src/pax.rs:32:27 [INFO] [stdout] | [INFO] [stdout] 32 | Some(line) if line.is_empty() => return None, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] = note: `#[warn(clippy::redundant_guards)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 32 - Some(line) if line.is_empty() => return None, [INFO] [stdout] 32 + Some([]) => return None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/tokio-tar/src/lib.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | Error::new(ErrorKind::Other, msg) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 44 - Error::new(ErrorKind::Other, msg) [INFO] [stdout] 44 + Error::other(msg) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:115:17 [INFO] [stdout] | [INFO] [stdout] 115 | pub fn path(&self) -> io::Result> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 115 | pub fn path(&self) -> io::Result> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:125:23 [INFO] [stdout] | [INFO] [stdout] 125 | pub fn path_bytes(&self) -> Cow<[u8]> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 125 | pub fn path_bytes(&self) -> Cow<'_, [u8]> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:142:22 [INFO] [stdout] | [INFO] [stdout] 142 | pub fn link_name(&self) -> io::Result>> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 142 | pub fn link_name(&self) -> io::Result>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:151:28 [INFO] [stdout] | [INFO] [stdout] 151 | pub fn link_name_bytes(&self) -> Option> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 151 | pub fn link_name_bytes(&self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:356:19 [INFO] [stdout] | [INFO] [stdout] 356 | fn path_bytes(&self) -> Cow<[u8]> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 356 | fn path_bytes(&self) -> Cow<'_, [u8]> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:385:18 [INFO] [stdout] | [INFO] [stdout] 385 | fn link_name(&self) -> io::Result>> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 385 | fn link_name(&self) -> io::Result>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:392:24 [INFO] [stdout] | [INFO] [stdout] 392 | fn link_name_bytes(&self) -> Option> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 392 | fn link_name_bytes(&self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/header.rs:331:17 [INFO] [stdout] | [INFO] [stdout] 331 | pub fn path(&self) -> io::Result> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 331 | pub fn path(&self) -> io::Result> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/header.rs:342:23 [INFO] [stdout] | [INFO] [stdout] 342 | pub fn path_bytes(&self) -> Cow<[u8]> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 342 | pub fn path_bytes(&self) -> Cow<'_, [u8]> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/header.rs:385:22 [INFO] [stdout] | [INFO] [stdout] 385 | pub fn link_name(&self) -> io::Result>> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 385 | pub fn link_name(&self) -> io::Result>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/header.rs:399:28 [INFO] [stdout] | [INFO] [stdout] 399 | pub fn link_name_bytes(&self) -> Option> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 399 | pub fn link_name_bytes(&self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/header.rs:930:23 [INFO] [stdout] | [INFO] [stdout] 930 | pub fn path_bytes(&self) -> Cow<[u8]> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 930 | pub fn path_bytes(&self) -> Cow<'_, [u8]> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1569:22 [INFO] [stdout] | [INFO] [stdout] 1569 | pub fn path2bytes(p: &Path) -> io::Result> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1569 | pub fn path2bytes(p: &Path) -> io::Result> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/pax.rs:21:26 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn pax_extensions(a: &[u8]) -> PaxExtensions { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 21 | pub fn pax_extensions(a: &[u8]) -> PaxExtensions<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking async-channel v1.6.1 [INFO] [stderr] Checking http v1.0.0 [INFO] [stderr] Compiling derivative v2.2.0 [INFO] [stderr] Compiling crossbeam-utils v0.8.5 [INFO] [stderr] Checking atomic-waker v1.0.0 [INFO] [stderr] Compiling encoding_rs v0.8.29 [INFO] [stderr] Checking blocking v1.0.2 [INFO] [stderr] Compiling neon v0.9.1 [INFO] [stderr] Checking async-executor v1.4.1 [INFO] [stderr] Checking async-mutex v1.4.0 [INFO] [stderr] Checking libloading v0.6.7 [INFO] [stderr] Checking remove_dir_all v0.5.3 [INFO] [stderr] Checking tempfile v3.2.0 [INFO] [stderr] Checking http-body v1.0.0 [INFO] [stderr] Checking neon-runtime v0.9.1 [INFO] [stderr] Checking log v0.4.20 [INFO] [stderr] Checking chrono v0.4.19 [INFO] [stderr] Checking serde_with v1.11.0 [INFO] [stderr] Checking serde_urlencoded v0.7.0 [INFO] [stderr] Checking tracing v0.1.40 [INFO] [stderr] Checking want v0.3.0 [INFO] [stderr] Checking tokio-util v0.6.9 [INFO] [stderr] Compiling toml v0.5.8 [INFO] [stderr] Compiling semver v0.9.0 [INFO] [stderr] Checking flexi_logger v0.17.1 [INFO] [stderr] Checking simple_logger v1.13.0 [INFO] [stderr] Checking h2 v0.3.7 [INFO] [stderr] Checking polling v2.1.0 [INFO] [stderr] Checking kv-log-macro v1.0.7 [INFO] [stderr] Checking tokio-native-tls v0.3.0 [INFO] [stderr] Checking async-io v1.6.0 [INFO] [stderr] Checking async-lock v2.4.0 [INFO] [stderr] Compiling pin-project-internal v1.0.8 [INFO] [stderr] Checking async-global-executor v2.0.2 [INFO] [stderr] Compiling neon-macros v0.9.1 [INFO] [stderr] Checking bytes v0.5.6 [INFO] [stderr] Checking hashbrown v0.14.3 [INFO] [stderr] Checking ipnet v2.3.1 [INFO] [stderr] Checking cslice v0.2.0 [INFO] [stderr] Compiling cargo-lock v4.0.1 [INFO] [stderr] Checking async-compression v0.3.8 [INFO] [stderr] Checking async-std v1.10.0 [INFO] [stderr] Checking tokio-util v0.7.8 [INFO] [stderr] Checking indexmap v2.1.0 [INFO] [stderr] Checking nix v0.23.0 [INFO] [stderr] Compiling async-recursion v1.0.0 [INFO] [stderr] Checking uuid v0.8.2 [INFO] [stderr] Compiling memoffset v0.7.1 [INFO] [stderr] Checking pin-project v1.0.8 [INFO] [stderr] Checking h2 v0.4.2 [INFO] [stderr] Checking destructure_traitobject v0.2.0 [INFO] [stderr] Checking unsafe-any-ors v1.0.0 [INFO] [stderr] Checking tower v0.4.13 [INFO] [stderr] Checking http-body-util v0.1.0 [INFO] [stderr] Compiling axum v0.7.4 [INFO] [stderr] Checking ordered-float v2.10.1 [INFO] [stderr] Checking fs2 v0.4.3 [INFO] [stderr] Checking socket2 v0.5.5 [INFO] [stderr] Checking num_threads v0.1.5 [INFO] [stderr] Checking termcolor v1.1.2 [INFO] [stderr] Compiling convert_case v0.5.0 [INFO] [stderr] Compiling napi-build v1.2.1 [INFO] [stderr] Compiling time-macros v0.2.4 [INFO] [stderr] Checking axum-core v0.4.3 [INFO] [stderr] Checking env_logger v0.8.4 [INFO] [stderr] Compiling binding v0.1.0 (/opt/rustwide/workdir/packages/binding) [INFO] [stderr] Checking serde-value v0.7.0 [INFO] [stderr] Checking hyper v0.14.14 [INFO] [stderr] Checking nix v0.26.4 [INFO] [stderr] Checking serde_yaml v0.8.26 [INFO] [stderr] Checking time v0.3.9 [INFO] [stderr] Checking typemap-ors v1.0.0 [INFO] [stderr] Checking serde_path_to_error v0.1.15 [INFO] [stderr] Compiling napi-derive-backend v1.0.23 [INFO] [stderr] Compiling ctor v0.1.22 [INFO] [stderr] Checking colored v2.0.0 [INFO] [stderr] Checking vmm-sys-util v0.9.0 [INFO] [stderr] Checking thread-id v4.2.1 [INFO] [stderr] Checking arc-swap v1.6.0 [INFO] [stderr] Checking log-mdc v0.1.0 [INFO] [stderr] Checking napi-sys v2.1.0 [INFO] [stderr] Checking log4rs v1.2.0 [INFO] [stderr] Checking simple_logger v2.1.0 [INFO] [stderr] Checking napi v2.0.3 [INFO] [stderr] Checking fcntl v0.1.0 (/opt/rustwide/workdir/packages/fcntl) [INFO] [stdout] warning: unused import: `lock_contended_error` [INFO] [stdout] --> packages/fcntl/src/lib.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use fs2::{lock_contended_error, FileExt}; [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: `msg` [INFO] [stdout] --> packages/fcntl/src/lib.rs:27:16 [INFO] [stdout] | [INFO] [stdout] 27 | Ok(msg) => Ok(()), [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_msg` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> packages/fcntl/src/lib.rs:14:14 [INFO] [stdout] | [INFO] [stdout] 14 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> packages/fcntl/src/lib.rs:15:19 [INFO] [stdout] | [INFO] [stdout] 15 | .open(&path) [INFO] [stdout] | ^^^^^ help: change this to: `path` [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] [stderr] Checking nix v0.25.1 [INFO] [stderr] Checking hyper v1.1.0 [INFO] [stderr] Checking sendfd v0.3.3 [INFO] [stdout] warning: unused import: `lock_contended_error` [INFO] [stdout] --> packages/fcntl/src/lib.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use fs2::{lock_contended_error, FileExt}; [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: `msg` [INFO] [stdout] --> packages/fcntl/src/lib.rs:27:16 [INFO] [stdout] | [INFO] [stdout] 27 | Ok(msg) => Ok(()), [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_msg` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> packages/fcntl/src/lib.rs:14:14 [INFO] [stdout] | [INFO] [stdout] 14 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> packages/fcntl/src/lib.rs:15:19 [INFO] [stdout] | [INFO] [stdout] 15 | .open(&path) [INFO] [stdout] | ^^^^^ help: change this to: `path` [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: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/fcntl/src/lib.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 44 | fs::remove_file(fp); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 44 | let _ = fs::remove_file(fp); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/fcntl/src/lib.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | f.lock(); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 48 | let _ = f.lock(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/fcntl/src/lib.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | f.unlock(); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 49 | let _ = f.unlock(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/fcntl/src/lib.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | f2.lock(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 51 | let _ = f2.lock(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/fcntl/src/lib.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | f2.unlock(); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 52 | let _ = f2.unlock(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/fcntl/src/lib.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | fs::remove_file(fp); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 59 | let _ = fs::remove_file(fp); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/fcntl/src/lib.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | f.lock(); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 63 | let _ = f.lock(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/fcntl/src/lib.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | f2.lock(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 64 | let _ = f2.lock(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling napi-derive v2.0.7 [INFO] [stderr] Checking rapid-rs v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> packages/tokio-tar/src/entry_type.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | / /// which can be used to inspect what the header is describing. [INFO] [stdout] 6 | | [INFO] [stdout] | |_^ [INFO] [stdout] ... [INFO] [stdout] 10 | pub enum EntryType { [INFO] [stdout] | ------------------ the comment documents this enum [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 2 ~ //! Indicate for the type of file described by a header. [INFO] [stdout] 3 ~ //! [INFO] [stdout] 4 ~ //! Each `Header` has an `entry_type` method returning an instance of this type [INFO] [stdout] 5 ~ //! which can be used to inspect what the header is describing. [INFO] [stdout] | [INFO] [stdout] help: if the documentation should include the empty line include it in the comment [INFO] [stdout] | [INFO] [stdout] 6 | /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: can be more succinctly written as a byte str [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1517:25 [INFO] [stdout] | [INFO] [stdout] 1517 | copy(&mut slot, &[b'/'])?; [INFO] [stdout] | ^^^^^^^ help: try: `b"/"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#byte_char_slices [INFO] [stdout] = note: `#[warn(clippy::byte_char_slices)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: can be more succinctly written as a byte str [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1542:40 [INFO] [stdout] | [INFO] [stdout] 1542 | p.as_os_str().as_bytes().ends_with(&[b'/']) [INFO] [stdout] | ^^^^^^^ help: try: `b"/"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#byte_char_slices [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking hyper-util v0.1.2 [INFO] [stderr] Checking homedir v0.2.1 [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> packages/tokio-tar/tests/header/mod.rs:147:21 [INFO] [stdout] | [INFO] [stdout] 147 | let long_name = iter::repeat("foo").take(100).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"foo".repeat(100)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] = note: `#[warn(clippy::manual_str_repeat)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/tests/header/mod.rs:147:21 [INFO] [stdout] | [INFO] [stdout] 147 | let long_name = iter::repeat("foo").take(100).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n("foo", 100)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> packages/tokio-tar/tests/header/mod.rs:148:19 [INFO] [stdout] | [INFO] [stdout] 148 | let medium1 = iter::repeat("foo").take(52).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"foo".repeat(52)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/tests/header/mod.rs:148:19 [INFO] [stdout] | [INFO] [stdout] 148 | let medium1 = iter::repeat("foo").take(52).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n("foo", 52)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> packages/tokio-tar/tests/header/mod.rs:149:19 [INFO] [stdout] | [INFO] [stdout] 149 | let medium2 = iter::repeat("fo/").take(52).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"fo/".repeat(52)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/tests/header/mod.rs:149:19 [INFO] [stdout] | [INFO] [stdout] 149 | let medium2 = iter::repeat("fo/").take(52).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n("fo/", 52)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> packages/tokio-tar/tests/header/mod.rs:169:33 [INFO] [stdout] | [INFO] [stdout] 169 | let p = Path::new("a").join(&vec!["a"; 100].join("")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `vec!["a"; 100].join("")` [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: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> packages/tokio-tar/tests/all.rs:177:20 [INFO] [stdout] | [INFO] [stdout] 177 | let filename = repeat("abcd/").take(50).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"abcd/".repeat(50)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/tests/all.rs:177:20 [INFO] [stdout] | [INFO] [stdout] 177 | let filename = repeat("abcd/").take(50).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n("abcd/", 50)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> packages/tokio-tar/tests/all.rs:183:20 [INFO] [stdout] | [INFO] [stdout] 183 | let too_long = repeat("abcd").take(200).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"abcd".repeat(200)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/tests/all.rs:183:20 [INFO] [stdout] | [INFO] [stdout] 183 | let too_long = repeat("abcd").take(200).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n("abcd", 200)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:858:13 [INFO] [stdout] | [INFO] [stdout] 858 | let mut this = self.get_mut(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> packages/tokio-tar/src/archive.rs:508:16 [INFO] [stdout] | [INFO] [stdout] 508 | if (size - remaining) % 512 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `!(size - remaining).is_multiple_of(512)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/tokio-tar/src/builder.rs:185:21 [INFO] [stdout] | [INFO] [stdout] 185 | self.append(&header, data).await?; [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/tokio-tar/src/builder.rs:531:31 [INFO] [stdout] | [INFO] [stdout] 531 | let data = path2bytes(&path)?; [INFO] [stdout] | ^^^^^ help: change this to: `path` [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: the borrowed expression implements the required traits [INFO] [stdout] --> packages/tokio-tar/src/builder.rs:556:42 [INFO] [stdout] | [INFO] [stdout] 556 | if let Err(e) = header.set_link_name(&link_name) { [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `link_name` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/tokio-tar/src/builder.rs:557:31 [INFO] [stdout] | [INFO] [stdout] 557 | let data = path2bytes(&link_name)?; [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `link_name` [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: the borrowed expression implements the required traits [INFO] [stdout] --> packages/tokio-tar/src/builder.rs:598:47 [INFO] [stdout] | [INFO] [stdout] 598 | let dest = path.join(src.strip_prefix(&src_path).unwrap()); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `src_path` [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] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> packages/tokio-tar/tests/all.rs:828:16 [INFO] [stdout] | [INFO] [stdout] 828 | let long = repeat("abcd").take(200).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"abcd".repeat(200)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/tests/all.rs:828:16 [INFO] [stdout] | [INFO] [stdout] 828 | let long = repeat("abcd").take(200).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n("abcd", 200)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:476:53 [INFO] [stdout] | [INFO] [stdout] 476 | let canon_target = self.validate_inside_dst(&dst, parent).await?; [INFO] [stdout] | ^^^^ help: change this to: `dst` [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: the borrowed expression implements the required traits [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:684:42 [INFO] [stdout] | [INFO] [stdout] 684 | filetime::set_file_times(&dst, mtime, mtime).map_err(|e| { [INFO] [stdout] | ^^^^ help: change this to: `dst` [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] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:546:26 [INFO] [stdout] | [INFO] [stdout] 546 | Some(ref p) => { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 546 - Some(ref p) => { [INFO] [stdout] 546 + Some(p) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:844:17 [INFO] [stdout] | [INFO] [stdout] 844 | Error::new(ErrorKind::Other, "Invalid argument"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 844 - Error::new(ErrorKind::Other, "Invalid argument"), [INFO] [stdout] 844 + Error::other("Invalid argument"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/tests/all.rs:951:31 [INFO] [stdout] | [INFO] [stdout] 951 | let short_path: PathBuf = repeat("abcd").take(2).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n("abcd", 2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/tests/all.rs:952:30 [INFO] [stdout] | [INFO] [stdout] 952 | let long_path: PathBuf = repeat("abcd").take(50).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n("abcd", 50)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> packages/tokio-tar/tests/all.rs:998:25 [INFO] [stdout] | [INFO] [stdout] 998 | let long_linkname = repeat("abcd").take(30).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"abcd".repeat(30)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/tests/all.rs:998:25 [INFO] [stdout] | [INFO] [stdout] 998 | let long_linkname = repeat("abcd").take(30).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n("abcd", 30)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> packages/tokio-tar/tests/all.rs:999:25 [INFO] [stdout] | [INFO] [stdout] 999 | let long_pathname = repeat("dcba").take(30).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"dcba".repeat(30)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/tests/all.rs:999:25 [INFO] [stdout] | [INFO] [stdout] 999 | let long_pathname = repeat("dcba").take(30).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n("dcba", 30)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> packages/tokio-tar/src/header.rs:450:22 [INFO] [stdout] | [INFO] [stdout] 450 | .map(|u| u as u64) [INFO] [stdout] | ^^^^^^^^ help: try: `u` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> packages/tokio-tar/src/header.rs:467:22 [INFO] [stdout] | [INFO] [stdout] 467 | .map(|u| u as u64) [INFO] [stdout] | ^^^^^^^^ help: try: `u` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/src/header.rs:690:20 [INFO] [stdout] | [INFO] [stdout] 690 | .chain(iter::repeat(&b' ').take(len)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(&b' ', len)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/tokio-tar/src/header.rs:726:31 [INFO] [stdout] | [INFO] [stdout] 726 | self.set_mode(meta.mode() as u32); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `meta.mode()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1109:37 [INFO] [stdout] | [INFO] [stdout] 1109 | String::from_utf8_lossy(&self.groupname_bytes()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.groupname_bytes()` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1110:37 [INFO] [stdout] | [INFO] [stdout] 1110 | String::from_utf8_lossy(&self.username_bytes()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.username_bytes()` [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 `repeat().take()` can be written more concisely [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1426:9 [INFO] [stdout] | [INFO] [stdout] 1426 | / repeat(0) [INFO] [stdout] 1427 | | .take(len - 8) // to zero init extra bytes [INFO] [stdout] | |__________________________^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(0, len - 8)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1464:15 [INFO] [stdout] | [INFO] [stdout] 1464 | } else if bytes.iter().any(|b| *b == 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `bytes.contains(&0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1507:25 [INFO] [stdout] | [INFO] [stdout] 1507 | copy(&mut slot, &*bytes)?; [INFO] [stdout] | ^^^^^^^ help: try: `&bytes` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1522:19 [INFO] [stdout] | [INFO] [stdout] 1522 | copy_into(*slot, bytes)?; [INFO] [stdout] | ^^^^^ help: try: `slot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [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] --> packages/tokio-tar/src/header.rs:1523:19 [INFO] [stdout] | [INFO] [stdout] 1523 | let tmp = mem::replace(slot, &mut []); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(slot)` [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: unnecessary `map` on constructor `Ok(_)` [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1570:5 [INFO] [stdout] | [INFO] [stdout] 1570 | Ok(p.as_os_str().as_bytes()).map(Cow::Borrowed) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Ok(Cow::Borrowed(p.as_os_str().as_bytes()))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_on_constructor [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_on_constructor)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> packages/tokio-tar/src/pax.rs:32:27 [INFO] [stdout] | [INFO] [stdout] 32 | Some(line) if line.is_empty() => return None, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] = note: `#[warn(clippy::redundant_guards)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 32 - Some(line) if line.is_empty() => return None, [INFO] [stdout] 32 + Some([]) => return None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/tokio-tar/src/lib.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | Error::new(ErrorKind::Other, msg) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 44 - Error::new(ErrorKind::Other, msg) [INFO] [stdout] 44 + Error::other(msg) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:115:17 [INFO] [stdout] | [INFO] [stdout] 115 | pub fn path(&self) -> io::Result> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 115 | pub fn path(&self) -> io::Result> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:125:23 [INFO] [stdout] | [INFO] [stdout] 125 | pub fn path_bytes(&self) -> Cow<[u8]> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 125 | pub fn path_bytes(&self) -> Cow<'_, [u8]> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:142:22 [INFO] [stdout] | [INFO] [stdout] 142 | pub fn link_name(&self) -> io::Result>> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 142 | pub fn link_name(&self) -> io::Result>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:151:28 [INFO] [stdout] | [INFO] [stdout] 151 | pub fn link_name_bytes(&self) -> Option> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 151 | pub fn link_name_bytes(&self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:356:19 [INFO] [stdout] | [INFO] [stdout] 356 | fn path_bytes(&self) -> Cow<[u8]> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 356 | fn path_bytes(&self) -> Cow<'_, [u8]> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:385:18 [INFO] [stdout] | [INFO] [stdout] 385 | fn link_name(&self) -> io::Result>> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 385 | fn link_name(&self) -> io::Result>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/entry.rs:392:24 [INFO] [stdout] | [INFO] [stdout] 392 | fn link_name_bytes(&self) -> Option> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 392 | fn link_name_bytes(&self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/header.rs:331:17 [INFO] [stdout] | [INFO] [stdout] 331 | pub fn path(&self) -> io::Result> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 331 | pub fn path(&self) -> io::Result> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/header.rs:342:23 [INFO] [stdout] | [INFO] [stdout] 342 | pub fn path_bytes(&self) -> Cow<[u8]> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 342 | pub fn path_bytes(&self) -> Cow<'_, [u8]> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/header.rs:385:22 [INFO] [stdout] | [INFO] [stdout] 385 | pub fn link_name(&self) -> io::Result>> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 385 | pub fn link_name(&self) -> io::Result>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/header.rs:399:28 [INFO] [stdout] | [INFO] [stdout] 399 | pub fn link_name_bytes(&self) -> Option> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 399 | pub fn link_name_bytes(&self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/header.rs:930:23 [INFO] [stdout] | [INFO] [stdout] 930 | pub fn path_bytes(&self) -> Cow<[u8]> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 930 | pub fn path_bytes(&self) -> Cow<'_, [u8]> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/header.rs:1569:22 [INFO] [stdout] | [INFO] [stdout] 1569 | pub fn path2bytes(p: &Path) -> io::Result> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1569 | pub fn path2bytes(p: &Path) -> io::Result> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/tokio-tar/src/pax.rs:21:26 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn pax_extensions(a: &[u8]) -> PaxExtensions { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 21 | pub fn pax_extensions(a: &[u8]) -> PaxExtensions<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Checking hyperlocal v0.8.0 [INFO] [stderr] Checking sct v0.6.1 [INFO] [stderr] Checking webpki v0.21.4 [INFO] [stderr] Checking webpki v0.22.0 [INFO] [stderr] Checking ct-logs v0.8.0 [INFO] [stderr] Checking webpki-roots v0.22.1 [INFO] [stderr] Checking rustls v0.19.1 [INFO] [stderr] Checking webpki-roots v0.21.1 [INFO] [stderr] Checking tokio-rustls v0.22.0 [INFO] [stderr] Checking rustls-native-certs v0.5.0 [INFO] [stderr] Checking hyper-rustls v0.22.1 [INFO] [stderr] Checking reqwest v0.11.6 [INFO] [stderr] Checking rapid_deamon v0.1.0 (/opt/rustwide/workdir/packages/deamon) [INFO] [stdout] warning: unused import: `regex::Regex` [INFO] [stdout] --> packages/deamon/src/config.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use regex::Regex; [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: `get_ps_snapshot` [INFO] [stdout] --> packages/deamon/src/config.rs:11:20 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::utils::{get_ps_snapshot, start_command}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `regex::Regex` [INFO] [stdout] --> packages/deamon/src/config.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use regex::Regex; [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: `get_ps_snapshot` [INFO] [stdout] --> packages/deamon/src/config.rs:11:20 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::utils::{get_ps_snapshot, start_command}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/deamon/src/server.rs:74:17 [INFO] [stdout] | [INFO] [stdout] 74 | if let Some(mut project) = project_tree.remove(&request.project_path) { [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/deamon/src/server.rs:74:17 [INFO] [stdout] | [INFO] [stdout] 74 | if let Some(mut project) = project_tree.remove(&request.project_path) { [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/deamon/src/config.rs:433:13 [INFO] [stdout] | [INFO] [stdout] 433 | let mut pids = vec![]; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `project` [INFO] [stdout] --> packages/deamon/src/server.rs:74:17 [INFO] [stdout] | [INFO] [stdout] 74 | if let Some(mut project) = project_tree.remove(&request.project_path) { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_project` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> packages/deamon/src/config.rs:414:12 [INFO] [stdout] | [INFO] [stdout] 413 | impl ProjectConfig { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 414 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `kill_projects` is never used [INFO] [stdout] --> packages/deamon/src/pid.rs:90:14 [INFO] [stdout] | [INFO] [stdout] 90 | pub async fn kill_projects(process_map: Arc>>) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `init_project` is never used [INFO] [stdout] --> packages/deamon/src/pid.rs:100:14 [INFO] [stdout] | [INFO] [stdout] 100 | pub async fn init_project( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_ps_snapshot` is never used [INFO] [stdout] --> packages/deamon/src/utils.rs:8:8 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn get_ps_snapshot() -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `check_and_create_file` is never used [INFO] [stdout] --> packages/deamon/src/utils.rs:54:8 [INFO] [stdout] | [INFO] [stdout] 54 | pub fn check_and_create_file(file_path: &str) -> io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/config.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | / return Err(anyhow!( [INFO] [stdout] 130 | | "Error NydusdApiMount restart: {:?}, mountpoint: {:?}", [INFO] [stdout] 131 | | body, [INFO] [stdout] 132 | | self.mountpoint [INFO] [stdout] 133 | | )); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 129 ~ Err(anyhow!( [INFO] [stdout] 130 + "Error NydusdApiMount restart: {:?}, mountpoint: {:?}", [INFO] [stdout] 131 + body, [INFO] [stdout] 132 + self.mountpoint [INFO] [stdout] 133 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/deamon/src/config.rs:433:13 [INFO] [stdout] | [INFO] [stdout] 433 | let mut pids = vec![]; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/config.rs:386:21 [INFO] [stdout] | [INFO] [stdout] 386 | / return Err(anyhow!( [INFO] [stdout] 387 | | "Error executing bootstrap restart: {:?}, stargz_config_path: {:?}", [INFO] [stdout] 388 | | output.status, [INFO] [stdout] 389 | | self.stargz_config_path [INFO] [stdout] 390 | | )); [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 386 ~ Err(anyhow!( [INFO] [stdout] 387 + "Error executing bootstrap restart: {:?}, stargz_config_path: {:?}", [INFO] [stdout] 388 + output.status, [INFO] [stdout] 389 + self.stargz_config_path [INFO] [stdout] 390 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `project` [INFO] [stdout] --> packages/deamon/src/server.rs:74:17 [INFO] [stdout] | [INFO] [stdout] 74 | if let Some(mut project) = project_tree.remove(&request.project_path) { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_project` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/config.rs:429:9 [INFO] [stdout] | [INFO] [stdout] 429 | return &self.project_path; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 429 - return &self.project_path; [INFO] [stdout] 429 + &self.project_path [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/config.rs:440:9 [INFO] [stdout] | [INFO] [stdout] 440 | return Ok(pids); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 440 - return Ok(pids); [INFO] [stdout] 440 + Ok(pids) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> packages/deamon/src/config.rs:527:13 [INFO] [stdout] | [INFO] [stdout] 527 | DAEMON_URL.to_string() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use this: `*DAEMON_URL` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u32` which implements the `Copy` trait [INFO] [stdout] --> packages/deamon/src/pid.rs:28:54 [INFO] [stdout] | [INFO] [stdout] 28 | match signal::kill(unistd::Pid::from_raw(pid.clone() as i32), Signal::SIGKILL) { [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*pid` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/pid.rs:60:17 [INFO] [stdout] | [INFO] [stdout] 60 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 60 ~ Ok(()) [INFO] [stdout] 61 | } [INFO] [stdout] ... [INFO] [stdout] 68 | } [INFO] [stdout] 69 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/pid.rs:63:17 [INFO] [stdout] | [INFO] [stdout] 63 | / return Err(anyhow!( [INFO] [stdout] 64 | | "Failed to restart project path {}. Error: {:?}", [INFO] [stdout] 65 | | self.config.get_project_path(), [INFO] [stdout] 66 | | err [INFO] [stdout] 67 | | )); [INFO] [stdout] | |__________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 63 ~ Err(anyhow!( [INFO] [stdout] 64 + "Failed to restart project path {}. Error: {:?}", [INFO] [stdout] 65 + self.config.get_project_path(), [INFO] [stdout] 66 + err [INFO] [stdout] 67 ~ )) [INFO] [stdout] 68 | } [INFO] [stdout] 69 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> packages/deamon/src/pid.rs:173:25 [INFO] [stdout] | [INFO] [stdout] 173 | async fn is_alive(pids: &Vec, directory_path: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 173 - async fn is_alive(pids: &Vec, directory_path: &str) -> bool { [INFO] [stdout] 173 + async fn is_alive(pids: &[u32], directory_path: &str) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/pid.rs:195:17 [INFO] [stdout] | [INFO] [stdout] 195 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 195 - return false; [INFO] [stdout] 195 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/pid.rs:200:13 [INFO] [stdout] | [INFO] [stdout] 200 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 200 - return false; [INFO] [stdout] 200 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> packages/deamon/src/server.rs:88:14 [INFO] [stdout] | [INFO] [stdout] 88 | msg: format!("deamon is alive"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"deamon is alive".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> packages/deamon/src/server.rs:101:18 [INFO] [stdout] | [INFO] [stdout] 101 | msg: format!("deamon be killed"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"deamon be killed".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> packages/deamon/src/utils.rs:16:8 [INFO] [stdout] | [INFO] [stdout] 16 | if !std::fs::metadata(folder_path).is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::fs::metadata(folder_path).is_err()` [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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> packages/deamon/src/utils.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | / match args { [INFO] [stdout] 46 | | Some(arg) => { [INFO] [stdout] 47 | | command.args(arg.split(' ').collect::>()); [INFO] [stdout] ... | [INFO] [stdout] 50 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 45 ~ if let Some(arg) = args { [INFO] [stdout] 46 + command.args(arg.split(' ').collect::>()); [INFO] [stdout] 47 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/utils.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 58 | return Ok(file); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 58 - return Ok(file); [INFO] [stdout] 58 + Ok(file) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/utils.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 61 | return Ok(file); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 61 - return Ok(file); [INFO] [stdout] 61 + Ok(file) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/deamon/src/server.rs:169:13 [INFO] [stdout] | [INFO] [stdout] 169 | sender.lock().await.send(0).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 169 | let _ = sender.lock().await.send(0).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `kill_projects` is never used [INFO] [stdout] --> packages/deamon/src/pid.rs:90:14 [INFO] [stdout] | [INFO] [stdout] 90 | pub async fn kill_projects(process_map: Arc>>) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `init_project` is never used [INFO] [stdout] --> packages/deamon/src/pid.rs:100:14 [INFO] [stdout] | [INFO] [stdout] 100 | pub async fn init_project( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_ps_snapshot` is never used [INFO] [stdout] --> packages/deamon/src/utils.rs:8:8 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn get_ps_snapshot() -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `check_and_create_file` is never used [INFO] [stdout] --> packages/deamon/src/utils.rs:54:8 [INFO] [stdout] | [INFO] [stdout] 54 | pub fn check_and_create_file(file_path: &str) -> io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/config.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | / return Err(anyhow!( [INFO] [stdout] 130 | | "Error NydusdApiMount restart: {:?}, mountpoint: {:?}", [INFO] [stdout] 131 | | body, [INFO] [stdout] 132 | | self.mountpoint [INFO] [stdout] 133 | | )); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 129 ~ Err(anyhow!( [INFO] [stdout] 130 + "Error NydusdApiMount restart: {:?}, mountpoint: {:?}", [INFO] [stdout] 131 + body, [INFO] [stdout] 132 + self.mountpoint [INFO] [stdout] 133 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/config.rs:386:21 [INFO] [stdout] | [INFO] [stdout] 386 | / return Err(anyhow!( [INFO] [stdout] 387 | | "Error executing bootstrap restart: {:?}, stargz_config_path: {:?}", [INFO] [stdout] 388 | | output.status, [INFO] [stdout] 389 | | self.stargz_config_path [INFO] [stdout] 390 | | )); [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 386 ~ Err(anyhow!( [INFO] [stdout] 387 + "Error executing bootstrap restart: {:?}, stargz_config_path: {:?}", [INFO] [stdout] 388 + output.status, [INFO] [stdout] 389 + self.stargz_config_path [INFO] [stdout] 390 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/config.rs:429:9 [INFO] [stdout] | [INFO] [stdout] 429 | return &self.project_path; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 429 - return &self.project_path; [INFO] [stdout] 429 + &self.project_path [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/config.rs:440:9 [INFO] [stdout] | [INFO] [stdout] 440 | return Ok(pids); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 440 - return Ok(pids); [INFO] [stdout] 440 + Ok(pids) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> packages/deamon/src/config.rs:527:13 [INFO] [stdout] | [INFO] [stdout] 527 | DAEMON_URL.to_string() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use this: `*DAEMON_URL` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u32` which implements the `Copy` trait [INFO] [stdout] --> packages/deamon/src/pid.rs:28:54 [INFO] [stdout] | [INFO] [stdout] 28 | match signal::kill(unistd::Pid::from_raw(pid.clone() as i32), Signal::SIGKILL) { [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*pid` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/pid.rs:60:17 [INFO] [stdout] | [INFO] [stdout] 60 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 60 ~ Ok(()) [INFO] [stdout] 61 | } [INFO] [stdout] ... [INFO] [stdout] 68 | } [INFO] [stdout] 69 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/pid.rs:63:17 [INFO] [stdout] | [INFO] [stdout] 63 | / return Err(anyhow!( [INFO] [stdout] 64 | | "Failed to restart project path {}. Error: {:?}", [INFO] [stdout] 65 | | self.config.get_project_path(), [INFO] [stdout] 66 | | err [INFO] [stdout] 67 | | )); [INFO] [stdout] | |__________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 63 ~ Err(anyhow!( [INFO] [stdout] 64 + "Failed to restart project path {}. Error: {:?}", [INFO] [stdout] 65 + self.config.get_project_path(), [INFO] [stdout] 66 + err [INFO] [stdout] 67 ~ )) [INFO] [stdout] 68 | } [INFO] [stdout] 69 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> packages/deamon/src/pid.rs:173:25 [INFO] [stdout] | [INFO] [stdout] 173 | async fn is_alive(pids: &Vec, directory_path: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 173 - async fn is_alive(pids: &Vec, directory_path: &str) -> bool { [INFO] [stdout] 173 + async fn is_alive(pids: &[u32], directory_path: &str) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/pid.rs:195:17 [INFO] [stdout] | [INFO] [stdout] 195 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 195 - return false; [INFO] [stdout] 195 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/pid.rs:200:13 [INFO] [stdout] | [INFO] [stdout] 200 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 200 - return false; [INFO] [stdout] 200 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> packages/deamon/src/server.rs:88:14 [INFO] [stdout] | [INFO] [stdout] 88 | msg: format!("deamon is alive"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"deamon is alive".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> packages/deamon/src/server.rs:101:18 [INFO] [stdout] | [INFO] [stdout] 101 | msg: format!("deamon be killed"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"deamon be killed".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> packages/deamon/src/utils.rs:16:8 [INFO] [stdout] | [INFO] [stdout] 16 | if !std::fs::metadata(folder_path).is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::fs::metadata(folder_path).is_err()` [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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> packages/deamon/src/utils.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | / match args { [INFO] [stdout] 46 | | Some(arg) => { [INFO] [stdout] 47 | | command.args(arg.split(' ').collect::>()); [INFO] [stdout] ... | [INFO] [stdout] 50 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 45 ~ if let Some(arg) = args { [INFO] [stdout] 46 + command.args(arg.split(' ').collect::>()); [INFO] [stdout] 47 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/utils.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 58 | return Ok(file); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 58 - return Ok(file); [INFO] [stdout] 58 + Ok(file) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/deamon/src/utils.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 61 | return Ok(file); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 61 - return Ok(file); [INFO] [stdout] 61 + Ok(file) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> packages/deamon/src/utils.rs:94:17 [INFO] [stdout] | [INFO] [stdout] 94 | assert!(false); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] = note: `#[warn(clippy::assertions_on_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/deamon/src/server.rs:169:13 [INFO] [stdout] | [INFO] [stdout] 169 | sender.lock().await.send(0).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 169 | let _ = sender.lock().await.send(0).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling git2 v0.13.23 [INFO] [stderr] Compiling built v0.4.3 [INFO] [stderr] Compiling nydus-utils v0.1.0 (/opt/rustwide/workdir/packages/utils) [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> packages/utils/src/lib.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | (n + d - 1) / d [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `n.div_ceil(d)` [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] [stderr] Checking rafs v0.1.0 (/opt/rustwide/workdir/packages/rafs) [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> packages/utils/src/logger.rs:81:13 [INFO] [stdout] | [INFO] [stdout] 81 | assert_eq!(r.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 81 - assert_eq!(r.is_ok(), true); [INFO] [stdout] 81 + assert!(r.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> packages/utils/src/logger.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | assert_eq!(holder.total_errors <= 10, true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 85 - assert_eq!(holder.total_errors <= 10, true); [INFO] [stdout] 85 + assert!(holder.total_errors <= 10); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> packages/utils/src/logger.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | assert_eq!(holder.total_size <= 80, true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 86 - assert_eq!(holder.total_size <= 80, true); [INFO] [stdout] 86 + assert!(holder.total_size <= 80); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> packages/utils/src/lib.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | (n + d - 1) / d [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `n.div_ceil(d)` [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: unused import: `statvfs64` [INFO] [stdout] --> packages/rafs/src/metadata/abi.rs:2:55 [INFO] [stdout] | [INFO] [stdout] 2 | use libc::{blksize_t, dev_t, mode_t, nlink_t, stat64, statvfs64}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: can be more succinctly written as a byte str [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:638:33 [INFO] [stdout] | [INFO] [stdout] 638 | w.write_all(&[b'\0'])?; [INFO] [stdout] | ^^^^^^^^ help: try: `b"\0"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#byte_char_slices [INFO] [stdout] = note: `#[warn(clippy::byte_char_slices)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `statvfs64` [INFO] [stdout] --> packages/rafs/src/metadata/abi.rs:2:55 [INFO] [stdout] | [INFO] [stdout] 2 | use libc::{blksize_t, dev_t, mode_t, nlink_t, stat64, statvfs64}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: can be more succinctly written as a byte str [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:638:33 [INFO] [stdout] | [INFO] [stdout] 638 | w.write_all(&[b'\0'])?; [INFO] [stdout] | ^^^^^^^^ help: try: `b"\0"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#byte_char_slices [INFO] [stdout] = note: `#[warn(clippy::byte_char_slices)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `enable`, `threads_count`, `merging_size`, and `bandwidth_rate` are never read [INFO] [stdout] --> packages/rafs/src/fs.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct FsPrefetchControl { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 62 | #[serde(default)] [INFO] [stdout] 63 | enable: bool, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 64 | #[serde(default = "default_threads_count")] [INFO] [stdout] 65 | threads_count: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | merging_size: usize, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | bandwidth_rate: u32, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FsPrefetchControl` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DOT` is never used [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:50:7 [INFO] [stdout] | [INFO] [stdout] 50 | const DOT: &str = "."; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DOTDOT` is never used [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:51:7 [INFO] [stdout] | [INFO] [stdout] 51 | const DOTDOT: &str = ".."; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `path_from_ino` and `ino_from_path` are never used [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:382:19 [INFO] [stdout] | [INFO] [stdout] 182 | impl RafsSuper { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 382 | pub(crate) fn path_from_ino(&self, ino: Inode) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 406 | pub(crate) fn ino_from_path(&self, f: &Path) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ROOT_ID` is never used [INFO] [stdout] --> packages/rafs/src/metadata/abi.rs:85:11 [INFO] [stdout] | [INFO] [stdout] 85 | pub const ROOT_ID: u64 = 1; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/abi.rs:50:19 [INFO] [stdout] | [INFO] [stdout] 50 | mode: st.st_mode as u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `st.st_mode` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> packages/rafs/src/metadata/abi.rs:61:1 [INFO] [stdout] | [INFO] [stdout] 61 | impl Into for Attr { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 61 ~ impl From for stat64 { [INFO] [stdout] 62 ~ fn from(val: Attr) -> Self { [INFO] [stdout] 63 | // Safe because we are zero-initializing a struct [INFO] [stdout] 64 | let mut out: stat64 = unsafe { mem::zeroed() }; [INFO] [stdout] 65 ~ out.st_ino = val.ino; [INFO] [stdout] 66 ~ out.st_size = val.size as i64; [INFO] [stdout] 67 ~ out.st_blocks = val.blocks as i64; [INFO] [stdout] 68 ~ out.st_atime = val.atime as i64; [INFO] [stdout] 69 ~ out.st_mtime = val.mtime as i64; [INFO] [stdout] 70 ~ out.st_ctime = val.ctime as i64; [INFO] [stdout] 71 ~ out.st_atime_nsec = val.atimensec as i64; [INFO] [stdout] 72 ~ out.st_mtime_nsec = val.mtimensec as i64; [INFO] [stdout] 73 ~ out.st_ctime_nsec = val.ctimensec as i64; [INFO] [stdout] 74 ~ out.st_mode = val.mode as mode_t; [INFO] [stdout] 75 ~ out.st_nlink = val.nlink as nlink_t; [INFO] [stdout] 76 ~ out.st_uid = val.uid; [INFO] [stdout] 77 ~ out.st_gid = val.gid; [INFO] [stdout] 78 ~ out.st_rdev = val.rdev as dev_t; [INFO] [stdout] 79 ~ out.st_blksize = val.blksize as blksize_t; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to pop elements from a `Vec` in a loop [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:75:13 [INFO] [stdout] | [INFO] [stdout] 75 | let ino = dir_ino_set.pop().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_while_let_some [INFO] [stdout] = note: `#[warn(clippy::manual_while_let_some)]` on by default [INFO] [stdout] help: consider using a `while..let` loop [INFO] [stdout] | [INFO] [stdout] 74 ~ while let Some(ino) = dir_ino_set.pop() { [INFO] [stdout] 75 ~ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:353:20 [INFO] [stdout] | [INFO] [stdout] 353 | nlink: self.i_nlink as u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `self.i_nlink` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:378:24 [INFO] [stdout] | [INFO] [stdout] 378 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFDIR as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFMT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:378:48 [INFO] [stdout] | [INFO] [stdout] 378 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFDIR as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFDIR` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:382:24 [INFO] [stdout] | [INFO] [stdout] 382 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFLNK as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFMT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:382:48 [INFO] [stdout] | [INFO] [stdout] 382 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFLNK as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFLNK` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:386:24 [INFO] [stdout] | [INFO] [stdout] 386 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFREG as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFMT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:386:48 [INFO] [stdout] | [INFO] [stdout] 386 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFREG as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFREG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> packages/rafs/src/metadata/digest.rs:127:1 [INFO] [stdout] | [INFO] [stdout] 127 | impl Into for RafsDigest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 127 ~ impl From for String { [INFO] [stdout] 128 ~ fn from(val: RafsDigest) -> Self { [INFO] [stdout] 129 ~ format!("{}", val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:110:20 [INFO] [stdout] | [INFO] [stdout] 110 | fn cast_to_ref<'a, 'b, T>(&'a self, base: *const u8, offset: usize) -> Result<&'b T> { [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] 110 - fn cast_to_ref<'a, 'b, T>(&'a self, base: *const u8, offset: usize) -> Result<&'b T> { [INFO] [stdout] 110 + fn cast_to_ref<'b, T>(&self, base: *const u8, offset: usize) -> Result<&'b T> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:174:33 [INFO] [stdout] | [INFO] [stdout] 174 | state: ArcSwap::new(Arc::new(state)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc` is not `Send` and `Sync` as `DirectMappingState` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `DirectMappingState` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] = note: `#[warn(clippy::arc_with_non_send_sync)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `map_err` over `inspect_err` [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:276:48 [INFO] [stdout] | [INFO] [stdout] 276 | blob_table.load_from_slice(blob_slice).map_err(|e| { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_inspect [INFO] [stdout] = note: `#[warn(clippy::manual_inspect)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 276 ~ blob_table.load_from_slice(blob_slice).inspect_err(|e| { [INFO] [stdout] 277 ~ unsafe { libc::munmap(base as *mut u8 as *mut libc::c_void, size) }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:310:26 [INFO] [stdout] | [INFO] [stdout] 310 | self.state.store(Arc::new(state)); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc` is not `Send` and `Sync` as `DirectMappingState` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `DirectMappingState` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:323:26 [INFO] [stdout] | [INFO] [stdout] 323 | self.state.store(Arc::new(state)); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc` is not `Send` and `Sync` as `DirectMappingState` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `DirectMappingState` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:378:17 [INFO] [stdout] | [INFO] [stdout] 378 | fn name_ref<'a>(&self, state: &'a DirectMappingState) -> &OsStr { [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] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 378 - fn name_ref<'a>(&self, state: &'a DirectMappingState) -> &OsStr { [INFO] [stdout] 378 + fn name_ref(&self, state: &DirectMappingState) -> &OsStr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:629:20 [INFO] [stdout] | [INFO] [stdout] 629 | nlink: inode.i_nlink as u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `inode.i_nlink` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | //! inode_offset_from_sb = inode_table[child_index] << 3 [INFO] [stdout] | ^^^^^ help: try using ` ` (3 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!` in `write!` args [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:187:9 [INFO] [stdout] | [INFO] [stdout] 187 | write!(f, "{}", format!("{:?}", self))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: combine the `format!(..)` arguments with the outer `write!(..)` call [INFO] [stdout] = help: or consider changing `format!` to `format_args!` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_in_format_args [INFO] [stdout] = note: `#[warn(clippy::format_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:192:1 [INFO] [stdout] | [INFO] [stdout] 192 | impl Into for RafsSuperFlags { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 192 ~ impl From for digest::Algorithm { [INFO] [stdout] 193 ~ fn from(val: RafsSuperFlags) -> Self { [INFO] [stdout] 194 ~ match val { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:211:1 [INFO] [stdout] | [INFO] [stdout] 211 | impl Into for RafsSuperFlags { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 211 ~ impl From for compress::Algorithm { [INFO] [stdout] 212 ~ fn from(val: RafsSuperFlags) -> Self { [INFO] [stdout] 213 ~ match val { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:235:33 [INFO] [stdout] | [INFO] [stdout] 235 | s_magic: u32::to_le(RAFS_SUPER_MAGIC as u32), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `RAFS_SUPER_MAGIC` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:260:33 [INFO] [stdout] | [INFO] [stdout] 260 | || self.version() < RAFS_SUPER_MIN_VERSION as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `RAFS_SUPER_MIN_VERSION` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:261:33 [INFO] [stdout] | [INFO] [stdout] 261 | || self.version() > RAFS_SUPER_VERSION_V5 as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `RAFS_SUPER_VERSION_V5` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:406:41 [INFO] [stdout] | [INFO] [stdout] 406 | self.data[(ino - 1) as usize] = offset as u32; [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `as_bytes` [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:609:20 [INFO] [stdout] | [INFO] [stdout] 609 | || rest.as_bytes().len() <= (size_of::() * 2 + 1) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `rest.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] = note: `#[warn(clippy::needless_as_bytes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:723:15 [INFO] [stdout] | [INFO] [stdout] 723 | + (align_to_rafs(self.i_name_size as usize) [INFO] [stdout] | _______________^ [INFO] [stdout] 724 | | + align_to_rafs(self.i_symlink_size as usize)) as usize [INFO] [stdout] | |_______________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 723 ~ + (align_to_rafs(self.i_name_size as usize) [INFO] [stdout] 724 + + align_to_rafs(self.i_symlink_size as usize)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:733:24 [INFO] [stdout] | [INFO] [stdout] 733 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFDIR as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFMT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:733:48 [INFO] [stdout] | [INFO] [stdout] 733 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFDIR as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFDIR` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:738:24 [INFO] [stdout] | [INFO] [stdout] 738 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFLNK as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFMT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:738:48 [INFO] [stdout] | [INFO] [stdout] 738 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFLNK as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFLNK` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:743:24 [INFO] [stdout] | [INFO] [stdout] 743 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFREG as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFMT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:743:48 [INFO] [stdout] | [INFO] [stdout] 743 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFREG as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFREG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> packages/rafs/src/metadata/noop.rs:16:1 [INFO] [stdout] | [INFO] [stdout] 16 | / impl Default for NoopInodes { [INFO] [stdout] 17 | | fn default() -> Self { [INFO] [stdout] 18 | | Self {} [INFO] [stdout] 19 | | } [INFO] [stdout] 20 | | } [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 [INFO] [stdout] | [INFO] [stdout] 14 + #[derive(Default)] [INFO] [stdout] 15 | pub struct NoopInodes {} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:238:42 [INFO] [stdout] | [INFO] [stdout] 238 | self.meta.inodes_count = std::u64::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 238 - self.meta.inodes_count = std::u64::MAX; [INFO] [stdout] 238 + self.meta.inodes_count = u64::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:454:9 [INFO] [stdout] | [INFO] [stdout] 454 | /// Base on prefetch table which is persisted to bootstrap when building image. [INFO] [stdout] | ^^^^ help: try using ` ` (3 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:456:9 [INFO] [stdout] | [INFO] [stdout] 456 | /// Specify as a directory list when rafs is being imported. No prefetch table has to be [INFO] [stdout] | ^^^^ help: try using ` ` (3 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:457:9 [INFO] [stdout] | [INFO] [stdout] 457 | /// involved. [INFO] [stdout] | ^^^^ help: try using ` ` (3 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:458:9 [INFO] [stdout] | [INFO] [stdout] 458 | /// Each inode passed into should correspond to directory. And it already does the file type [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 458 | /// Each inode passed into should correspond to directory. And it already does the file type [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:459:9 [INFO] [stdout] | [INFO] [stdout] 459 | /// check inside. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 459 | /// check inside. [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `as_ref` does nothing [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:568:40 [INFO] [stdout] | [INFO] [stdout] 568 | let child_digest = child_digest.as_ref().as_ref(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `child_digest.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stdout] = note: `#[warn(clippy::useless_asref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `SeekFrom::Current` to start from current position [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:781:19 [INFO] [stdout] | [INFO] [stdout] 781 | let cur = w.seek(SeekFrom::Current(0))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `w.stream_position()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#seek_from_current [INFO] [stdout] = note: `#[warn(clippy::seek_from_current)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> packages/rafs/src/storage/compress/lz4_standard.rs:15:21 [INFO] [stdout] | [INFO] [stdout] 15 | if src.len() > (i32::max_value() as usize) || compress_bound <= 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 15 - if src.len() > (i32::max_value() as usize) || compress_bound <= 0 { [INFO] [stdout] 15 + if src.len() > (i32::MAX as usize) || compress_bound <= 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> packages/rafs/src/storage/compress/lz4_standard.rs:39:21 [INFO] [stdout] | [INFO] [stdout] 39 | if dst.len() >= std::i32::MAX as usize { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 39 - if dst.len() >= std::i32::MAX as usize { [INFO] [stdout] 39 + if dst.len() >= i32::MAX as usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> packages/rafs/src/io_stats.rs:387:32 [INFO] [stdout] | [INFO] [stdout] 387 | .fetch_add(elapsed as usize, Ordering::Relaxed); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `elapsed` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:365:14 [INFO] [stdout] | [INFO] [stdout] 365 | fn state(&self) -> Guard> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 365 | fn state(&self) -> Guard<'_, Arc> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:747:14 [INFO] [stdout] | [INFO] [stdout] 747 | fn state(&self) -> Guard> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 747 | fn state(&self) -> Guard<'_, Arc> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/rafs/src/storage/compress/mod.rs:61:22 [INFO] [stdout] | [INFO] [stdout] 61 | pub fn compress(src: &[u8], algorithm: Algorithm) -> Result<(Cow<[u8]>, bool)> { [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 61 | pub fn compress(src: &[u8], algorithm: Algorithm) -> Result<(Cow<'_, [u8]>, bool)> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking nydus-bootstrap v0.1.0 (/opt/rustwide/workdir/packages/bootstrap) [INFO] [stdout] warning: fields `enable`, `threads_count`, `merging_size`, and `bandwidth_rate` are never read [INFO] [stdout] --> packages/rafs/src/fs.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct FsPrefetchControl { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 62 | #[serde(default)] [INFO] [stdout] 63 | enable: bool, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 64 | #[serde(default = "default_threads_count")] [INFO] [stdout] 65 | threads_count: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | merging_size: usize, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | bandwidth_rate: u32, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FsPrefetchControl` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DOT` is never used [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:50:7 [INFO] [stdout] | [INFO] [stdout] 50 | const DOT: &str = "."; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DOTDOT` is never used [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:51:7 [INFO] [stdout] | [INFO] [stdout] 51 | const DOTDOT: &str = ".."; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `path_from_ino` and `ino_from_path` are never used [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:382:19 [INFO] [stdout] | [INFO] [stdout] 182 | impl RafsSuper { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 382 | pub(crate) fn path_from_ino(&self, ino: Inode) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 406 | pub(crate) fn ino_from_path(&self, f: &Path) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ROOT_ID` is never used [INFO] [stdout] --> packages/rafs/src/metadata/abi.rs:85:11 [INFO] [stdout] | [INFO] [stdout] 85 | pub const ROOT_ID: u64 = 1; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/abi.rs:50:19 [INFO] [stdout] | [INFO] [stdout] 50 | mode: st.st_mode as u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `st.st_mode` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> packages/rafs/src/metadata/abi.rs:61:1 [INFO] [stdout] | [INFO] [stdout] 61 | impl Into for Attr { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 61 ~ impl From for stat64 { [INFO] [stdout] 62 ~ fn from(val: Attr) -> Self { [INFO] [stdout] 63 | // Safe because we are zero-initializing a struct [INFO] [stdout] 64 | let mut out: stat64 = unsafe { mem::zeroed() }; [INFO] [stdout] 65 ~ out.st_ino = val.ino; [INFO] [stdout] 66 ~ out.st_size = val.size as i64; [INFO] [stdout] 67 ~ out.st_blocks = val.blocks as i64; [INFO] [stdout] 68 ~ out.st_atime = val.atime as i64; [INFO] [stdout] 69 ~ out.st_mtime = val.mtime as i64; [INFO] [stdout] 70 ~ out.st_ctime = val.ctime as i64; [INFO] [stdout] 71 ~ out.st_atime_nsec = val.atimensec as i64; [INFO] [stdout] 72 ~ out.st_mtime_nsec = val.mtimensec as i64; [INFO] [stdout] 73 ~ out.st_ctime_nsec = val.ctimensec as i64; [INFO] [stdout] 74 ~ out.st_mode = val.mode as mode_t; [INFO] [stdout] 75 ~ out.st_nlink = val.nlink as nlink_t; [INFO] [stdout] 76 ~ out.st_uid = val.uid; [INFO] [stdout] 77 ~ out.st_gid = val.gid; [INFO] [stdout] 78 ~ out.st_rdev = val.rdev as dev_t; [INFO] [stdout] 79 ~ out.st_blksize = val.blksize as blksize_t; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to pop elements from a `Vec` in a loop [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:75:13 [INFO] [stdout] | [INFO] [stdout] 75 | let ino = dir_ino_set.pop().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_while_let_some [INFO] [stdout] = note: `#[warn(clippy::manual_while_let_some)]` on by default [INFO] [stdout] help: consider using a `while..let` loop [INFO] [stdout] | [INFO] [stdout] 74 ~ while let Some(ino) = dir_ino_set.pop() { [INFO] [stdout] 75 ~ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:353:20 [INFO] [stdout] | [INFO] [stdout] 353 | nlink: self.i_nlink as u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `self.i_nlink` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:378:24 [INFO] [stdout] | [INFO] [stdout] 378 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFDIR as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFMT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:378:48 [INFO] [stdout] | [INFO] [stdout] 378 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFDIR as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFDIR` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:382:24 [INFO] [stdout] | [INFO] [stdout] 382 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFLNK as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFMT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:382:48 [INFO] [stdout] | [INFO] [stdout] 382 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFLNK as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFLNK` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:386:24 [INFO] [stdout] | [INFO] [stdout] 386 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFREG as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFMT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:386:48 [INFO] [stdout] | [INFO] [stdout] 386 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFREG as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFREG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:588:31 [INFO] [stdout] | [INFO] [stdout] 588 | ondisk_inode.i_mode = libc::S_IFREG as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFREG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:621:39 [INFO] [stdout] | [INFO] [stdout] 621 | let k = OsStr::from_bytes(&k); [INFO] [stdout] | ^^ help: change this to: `k` [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: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:647:31 [INFO] [stdout] | [INFO] [stdout] 647 | ondisk_inode.i_mode = libc::S_IFLNK as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFLNK` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/cached.rs:684:31 [INFO] [stdout] | [INFO] [stdout] 684 | ondisk_inode.i_mode = libc::S_IFREG as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFREG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> packages/rafs/src/metadata/digest.rs:127:1 [INFO] [stdout] | [INFO] [stdout] 127 | impl Into for RafsDigest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 127 ~ impl From for String { [INFO] [stdout] 128 ~ fn from(val: RafsDigest) -> Self { [INFO] [stdout] 129 ~ format!("{}", val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:110:20 [INFO] [stdout] | [INFO] [stdout] 110 | fn cast_to_ref<'a, 'b, T>(&'a self, base: *const u8, offset: usize) -> Result<&'b T> { [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] 110 - fn cast_to_ref<'a, 'b, T>(&'a self, base: *const u8, offset: usize) -> Result<&'b T> { [INFO] [stdout] 110 + fn cast_to_ref<'b, T>(&self, base: *const u8, offset: usize) -> Result<&'b T> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:174:33 [INFO] [stdout] | [INFO] [stdout] 174 | state: ArcSwap::new(Arc::new(state)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc` is not `Send` and `Sync` as `DirectMappingState` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `DirectMappingState` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] = note: `#[warn(clippy::arc_with_non_send_sync)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `map_err` over `inspect_err` [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:276:48 [INFO] [stdout] | [INFO] [stdout] 276 | blob_table.load_from_slice(blob_slice).map_err(|e| { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_inspect [INFO] [stdout] = note: `#[warn(clippy::manual_inspect)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 276 ~ blob_table.load_from_slice(blob_slice).inspect_err(|e| { [INFO] [stdout] 277 ~ unsafe { libc::munmap(base as *mut u8 as *mut libc::c_void, size) }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:310:26 [INFO] [stdout] | [INFO] [stdout] 310 | self.state.store(Arc::new(state)); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc` is not `Send` and `Sync` as `DirectMappingState` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `DirectMappingState` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:323:26 [INFO] [stdout] | [INFO] [stdout] 323 | self.state.store(Arc::new(state)); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc` is not `Send` and `Sync` as `DirectMappingState` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `DirectMappingState` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:378:17 [INFO] [stdout] | [INFO] [stdout] 378 | fn name_ref<'a>(&self, state: &'a DirectMappingState) -> &OsStr { [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] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 378 - fn name_ref<'a>(&self, state: &'a DirectMappingState) -> &OsStr { [INFO] [stdout] 378 + fn name_ref(&self, state: &DirectMappingState) -> &OsStr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:629:20 [INFO] [stdout] | [INFO] [stdout] 629 | nlink: inode.i_nlink as u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `inode.i_nlink` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | //! inode_offset_from_sb = inode_table[child_index] << 3 [INFO] [stdout] | ^^^^^ help: try using ` ` (3 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!` in `write!` args [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:187:9 [INFO] [stdout] | [INFO] [stdout] 187 | write!(f, "{}", format!("{:?}", self))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: combine the `format!(..)` arguments with the outer `write!(..)` call [INFO] [stdout] = help: or consider changing `format!` to `format_args!` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_in_format_args [INFO] [stdout] = note: `#[warn(clippy::format_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:192:1 [INFO] [stdout] | [INFO] [stdout] 192 | impl Into for RafsSuperFlags { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 192 ~ impl From for digest::Algorithm { [INFO] [stdout] 193 ~ fn from(val: RafsSuperFlags) -> Self { [INFO] [stdout] 194 ~ match val { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:211:1 [INFO] [stdout] | [INFO] [stdout] 211 | impl Into for RafsSuperFlags { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 211 ~ impl From for compress::Algorithm { [INFO] [stdout] 212 ~ fn from(val: RafsSuperFlags) -> Self { [INFO] [stdout] 213 ~ match val { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:235:33 [INFO] [stdout] | [INFO] [stdout] 235 | s_magic: u32::to_le(RAFS_SUPER_MAGIC as u32), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `RAFS_SUPER_MAGIC` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:260:33 [INFO] [stdout] | [INFO] [stdout] 260 | || self.version() < RAFS_SUPER_MIN_VERSION as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `RAFS_SUPER_MIN_VERSION` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:261:33 [INFO] [stdout] | [INFO] [stdout] 261 | || self.version() > RAFS_SUPER_VERSION_V5 as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `RAFS_SUPER_VERSION_V5` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:406:41 [INFO] [stdout] | [INFO] [stdout] 406 | self.data[(ino - 1) as usize] = offset as u32; [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `as_bytes` [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:609:20 [INFO] [stdout] | [INFO] [stdout] 609 | || rest.as_bytes().len() <= (size_of::() * 2 + 1) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `rest.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] = note: `#[warn(clippy::needless_as_bytes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:723:15 [INFO] [stdout] | [INFO] [stdout] 723 | + (align_to_rafs(self.i_name_size as usize) [INFO] [stdout] | _______________^ [INFO] [stdout] 724 | | + align_to_rafs(self.i_symlink_size as usize)) as usize [INFO] [stdout] | |_______________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 723 ~ + (align_to_rafs(self.i_name_size as usize) [INFO] [stdout] 724 + + align_to_rafs(self.i_symlink_size as usize)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:733:24 [INFO] [stdout] | [INFO] [stdout] 733 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFDIR as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFMT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:733:48 [INFO] [stdout] | [INFO] [stdout] 733 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFDIR as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFDIR` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:738:24 [INFO] [stdout] | [INFO] [stdout] 738 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFLNK as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFMT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:738:48 [INFO] [stdout] | [INFO] [stdout] 738 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFLNK as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFLNK` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:743:24 [INFO] [stdout] | [INFO] [stdout] 743 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFREG as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFMT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/rafs/src/metadata/layout.rs:743:48 [INFO] [stdout] | [INFO] [stdout] 743 | (self.i_mode & libc::S_IFMT as u32) == libc::S_IFREG as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFREG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> packages/rafs/src/metadata/noop.rs:16:1 [INFO] [stdout] | [INFO] [stdout] 16 | / impl Default for NoopInodes { [INFO] [stdout] 17 | | fn default() -> Self { [INFO] [stdout] 18 | | Self {} [INFO] [stdout] 19 | | } [INFO] [stdout] 20 | | } [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 [INFO] [stdout] | [INFO] [stdout] 14 + #[derive(Default)] [INFO] [stdout] 15 | pub struct NoopInodes {} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:238:42 [INFO] [stdout] | [INFO] [stdout] 238 | self.meta.inodes_count = std::u64::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 238 - self.meta.inodes_count = std::u64::MAX; [INFO] [stdout] 238 + self.meta.inodes_count = u64::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:454:9 [INFO] [stdout] | [INFO] [stdout] 454 | /// Base on prefetch table which is persisted to bootstrap when building image. [INFO] [stdout] | ^^^^ help: try using ` ` (3 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:456:9 [INFO] [stdout] | [INFO] [stdout] 456 | /// Specify as a directory list when rafs is being imported. No prefetch table has to be [INFO] [stdout] | ^^^^ help: try using ` ` (3 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:457:9 [INFO] [stdout] | [INFO] [stdout] 457 | /// involved. [INFO] [stdout] | ^^^^ help: try using ` ` (3 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:458:9 [INFO] [stdout] | [INFO] [stdout] 458 | /// Each inode passed into should correspond to directory. And it already does the file type [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 458 | /// Each inode passed into should correspond to directory. And it already does the file type [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:459:9 [INFO] [stdout] | [INFO] [stdout] 459 | /// check inside. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 459 | /// check inside. [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `as_ref` does nothing [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:568:40 [INFO] [stdout] | [INFO] [stdout] 568 | let child_digest = child_digest.as_ref().as_ref(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `child_digest.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stdout] = note: `#[warn(clippy::useless_asref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `SeekFrom::Current` to start from current position [INFO] [stdout] --> packages/rafs/src/metadata/mod.rs:781:19 [INFO] [stdout] | [INFO] [stdout] 781 | let cur = w.seek(SeekFrom::Current(0))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `w.stream_position()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#seek_from_current [INFO] [stdout] = note: `#[warn(clippy::seek_from_current)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `flate2::bufread::GzDecoder` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use flate2::bufread::GzDecoder; [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: `RafsDigest` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:14:36 [INFO] [stdout] | [INFO] [stdout] 14 | use rafs::metadata::digest::{self, RafsDigest}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::Result as SerdeJSONResult` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | use serde_json::Result as SerdeJSONResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufReader`, `Read`, and `SeekFrom` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:27:15 [INFO] [stdout] | [INFO] [stdout] 27 | use std::io::{BufReader, BufWriter, Read, SeekFrom}; [INFO] [stdout] | ^^^^^^^^^ ^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::os::unix::ffi::OsStrExt` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | use std::os::unix::ffi::OsStrExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `flate2::bufread::GzDecoder` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use flate2::bufread::GzDecoder; [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: `tar::Archive` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | use tar::Archive; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RafsDigest` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:14:36 [INFO] [stdout] | [INFO] [stdout] 14 | use rafs::metadata::digest::{self, RafsDigest}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::Result as SerdeJSONResult` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | use serde_json::Result as SerdeJSONResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufReader`, `Read`, and `SeekFrom` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:27:15 [INFO] [stdout] | [INFO] [stdout] 27 | use std::io::{BufReader, BufWriter, Read, SeekFrom}; [INFO] [stdout] | ^^^^^^^^^ ^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::os::unix::ffi::OsStrExt` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | use std::os::unix::ffi::OsStrExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tar::Archive` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | use tar::Archive; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> packages/rafs/src/storage/compress/lz4_standard.rs:15:21 [INFO] [stdout] | [INFO] [stdout] 15 | if src.len() > (i32::max_value() as usize) || compress_bound <= 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 15 - if src.len() > (i32::max_value() as usize) || compress_bound <= 0 { [INFO] [stdout] 15 + if src.len() > (i32::MAX as usize) || compress_bound <= 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `File` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use std::fs::{File, OpenOptions}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BufReader` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:10:15 [INFO] [stdout] | [INFO] [stdout] 10 | use std::io::{BufReader, BufWriter, Write}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::os::unix::ffi::OsStrExt` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use std::os::unix::ffi::OsStrExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::atomic::AtomicU64` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use std::sync::atomic::AtomicU64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bail` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:18:22 [INFO] [stdout] | [INFO] [stdout] 18 | use anyhow::{anyhow, bail, Context, Error, Result}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BlobIdsTocIndexes` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:32:40 [INFO] [stdout] | [INFO] [stdout] 32 | use crate::bootstrap::{BlobIdTocIndex, BlobIdsTocIndexes}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::stargz::TocIndex` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | use crate::stargz::TocIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> packages/rafs/src/storage/compress/lz4_standard.rs:39:21 [INFO] [stdout] | [INFO] [stdout] 39 | if dst.len() >= std::i32::MAX as usize { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 39 - if dst.len() >= std::i32::MAX as usize { [INFO] [stdout] 39 + if dst.len() >= i32::MAX as usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: can be more succinctly written as a byte str [INFO] [stdout] --> packages/bootstrap/src/node.rs:37:31 [INFO] [stdout] | [INFO] [stdout] 37 | const ROOT_PATH_NAME: &[u8] = &[b'/']; [INFO] [stdout] | ^^^^^^^ help: try: `b"/"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#byte_char_slices [INFO] [stdout] = note: `#[warn(clippy::byte_char_slices)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> packages/rafs/src/storage/compress/mod.rs:121:9 [INFO] [stdout] | [INFO] [stdout] 121 | assert_eq!(compressed.1, true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 121 - assert_eq!(compressed.1, true); [INFO] [stdout] 121 + assert!(compressed.1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::cell::RefCell` [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use std::cell::RefCell; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fs` [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use std::fs; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::rc::Rc` [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::rc::Rc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `File` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use std::fs::{File, OpenOptions}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BufReader` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:10:15 [INFO] [stdout] | [INFO] [stdout] 10 | use std::io::{BufReader, BufWriter, Write}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::os::unix::ffi::OsStrExt` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use std::os::unix::ffi::OsStrExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::atomic::AtomicU64` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use std::sync::atomic::AtomicU64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bail` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:18:22 [INFO] [stdout] | [INFO] [stdout] 18 | use anyhow::{anyhow, bail, Context, Error, Result}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bail` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:13:22 [INFO] [stdout] | [INFO] [stdout] 13 | use anyhow::{anyhow, bail, Context, Result}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Component` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:18:17 [INFO] [stdout] | [INFO] [stdout] 18 | use std::path::{Component, Path, PathBuf}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BlobIdsTocIndexes` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:32:40 [INFO] [stdout] | [INFO] [stdout] 32 | use crate::bootstrap::{BlobIdTocIndex, BlobIdsTocIndexes}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::stargz::TocIndex` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | use crate::stargz::TocIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TocIndex` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:24:24 [INFO] [stdout] | [INFO] [stdout] 24 | stargz::{TocEntry, TocIndex}, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::bootstrap::BlobIdsTocIndexes` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | use crate::bootstrap::BlobIdsTocIndexes; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::OsStr` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | use std::ffi::OsStr; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AtomicU64` and `Ordering` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:34:25 [INFO] [stdout] | [INFO] [stdout] 34 | use std::sync::atomic::{AtomicU64, Ordering}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: can be more succinctly written as a byte str [INFO] [stdout] --> packages/bootstrap/src/node.rs:37:31 [INFO] [stdout] | [INFO] [stdout] 37 | const ROOT_PATH_NAME: &[u8] = &[b'/']; [INFO] [stdout] | ^^^^^^^ help: try: `b"/"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#byte_char_slices [INFO] [stdout] = note: `#[warn(clippy::byte_char_slices)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::cell::RefCell` [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use std::cell::RefCell; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::stargz::TocIndex` [INFO] [stdout] --> packages/bootstrap/src/lib.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | use crate::stargz::TocIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tree::Tree` [INFO] [stdout] --> packages/bootstrap/src/lib.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | use crate::tree::Tree; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fs` [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use std::fs; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::rc::Rc` [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::rc::Rc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bail` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:13:22 [INFO] [stdout] | [INFO] [stdout] 13 | use anyhow::{anyhow, bail, Context, Result}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Component` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:18:17 [INFO] [stdout] | [INFO] [stdout] 18 | use std::path::{Component, Path, PathBuf}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TocIndex` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:24:24 [INFO] [stdout] | [INFO] [stdout] 24 | stargz::{TocEntry, TocIndex}, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::bootstrap::BlobIdsTocIndexes` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | use crate::bootstrap::BlobIdsTocIndexes; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::OsStr` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | use std::ffi::OsStr; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AtomicU64` and `Ordering` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:34:25 [INFO] [stdout] | [INFO] [stdout] 34 | use std::sync::atomic::{AtomicU64, Ordering}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::stargz::TocIndex` [INFO] [stdout] --> packages/bootstrap/src/lib.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | use crate::stargz::TocIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tree::Tree` [INFO] [stdout] --> packages/bootstrap/src/lib.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | use crate::tree::Tree; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> packages/rafs/src/io_stats.rs:387:32 [INFO] [stdout] | [INFO] [stdout] 387 | .fetch_add(elapsed as usize, Ordering::Relaxed); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `elapsed` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:365:14 [INFO] [stdout] | [INFO] [stdout] 365 | fn state(&self) -> Guard> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 365 | fn state(&self) -> Guard<'_, Arc> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/rafs/src/metadata/direct.rs:747:14 [INFO] [stdout] | [INFO] [stdout] 747 | fn state(&self) -> Guard> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 747 | fn state(&self) -> Guard<'_, Arc> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> packages/rafs/src/storage/compress/mod.rs:61:22 [INFO] [stdout] | [INFO] [stdout] 61 | pub fn compress(src: &[u8], algorithm: Algorithm) -> Result<(Cow<[u8]>, bool)> { [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 61 | pub fn compress(src: &[u8], algorithm: Algorithm) -> Result<(Cow<'_, [u8]>, bool)> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::os::unix::fs::MetadataExt` [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use std::os::unix::fs::MetadataExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::os::unix::fs::MetadataExt` [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use std::os::unix::fs::MetadataExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stargz_dir` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:403:9 [INFO] [stdout] | [INFO] [stdout] 403 | let stargz_dir = Path::new(stargz_dir); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stargz_dir` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stargz_dir` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:403:9 [INFO] [stdout] | [INFO] [stdout] 403 | let stargz_dir = Path::new(stargz_dir); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stargz_dir` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `whiteout_spec` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:264:48 [INFO] [stdout] | [INFO] [stdout] 264 | fn build(&mut self, explicit_uidgid: bool, whiteout_spec: &WhiteoutSpec) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_whiteout_spec` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:281:13 [INFO] [stdout] | [INFO] [stdout] 281 | let start = SystemTime::now(); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_start` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `VecBlobIdTocIndex` is never used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:43:6 [INFO] [stdout] | [INFO] [stdout] 43 | type VecBlobIdTocIndex = Vec<(String, TocIndex)>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `aligned_chunk` is never read [INFO] [stdout] --> packages/bootstrap/src/builder.rs:83:5 [INFO] [stdout] | [INFO] [stdout] 40 | pub struct Builder { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 83 | aligned_chunk: bool, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `name` is never read [INFO] [stdout] --> packages/bootstrap/src/tree.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 44 | pub struct TreeTrace { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 45 | name: PathBuf, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TreeTrace` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | use std::u64; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `u64::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:87:53 [INFO] [stdout] | [INFO] [stdout] 87 | let mut inode_table = OndiskInodeTable::new(self.nodes.len() as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.nodes.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | for blob_id in blob_ids.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, blob_id) in (0_u32..).zip(blob_ids.iter())` [INFO] [stdout] | [INFO] [stdout] = note: `index` is of type `u32`, making it ineligible for `Iterator::enumerate` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:185:17 [INFO] [stdout] | [INFO] [stdout] 185 | (*chunk).blob_index = self [INFO] [stdout] | ^^^^^^^^ help: try: `chunk` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:209:35 [INFO] [stdout] | [INFO] [stdout] 209 | self.update_node_path_map((&tree.node).path.to_owned()); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `tree.node` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:213:25 [INFO] [stdout] | [INFO] [stdout] 213 | self.build_rafs(&mut tree, &mut nodes); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `tree` [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: using `clone` on type `OndiskChunkInfo` which implements the `Copy` trait [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:280:36 [INFO] [stdout] | [INFO] [stdout] 280 | let origin_chunk = child.node.chunks.first().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*child.node.chunks.first().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `BootstrapBuilder` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:359:5 [INFO] [stdout] | [INFO] [stdout] 359 | / pub fn new() -> Self { [INFO] [stdout] 360 | | BootstrapBuilder { [INFO] [stdout] 361 | | super_block: Default::default(), [INFO] [stdout] 362 | | inode_map: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 369 | | } [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] 358 + impl Default for BootstrapBuilder { [INFO] [stdout] 359 + fn default() -> Self { [INFO] [stdout] 360 + Self::new() [INFO] [stdout] 361 + } [INFO] [stdout] 362 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `whiteout_spec` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:264:48 [INFO] [stdout] | [INFO] [stdout] 264 | fn build(&mut self, explicit_uidgid: bool, whiteout_spec: &WhiteoutSpec) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_whiteout_spec` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:281:13 [INFO] [stdout] | [INFO] [stdout] 281 | let start = SystemTime::now(); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_start` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:383:23 [INFO] [stdout] | [INFO] [stdout] 383 | .open(&self.bootstrap_path.clone().unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.bootstrap_path.clone().unwrap()` [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 returns a `Result<_, ()>` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:419:1 [INFO] [stdout] | [INFO] [stdout] 419 | pub fn is_tar(dir: &Path) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] = note: `#[warn(clippy::result_unit_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(path).is_some()` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:212:46 [INFO] [stdout] | [INFO] [stdout] 212 | if self.hint_readahead_files.get(path).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] = note: `#[warn(clippy::unnecessary_get_then_check)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/builder.rs:340:25 [INFO] [stdout] | [INFO] [stdout] 340 | self.build_rafs(&mut tree, &mut nodes); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `tree` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/builder.rs:380:37 [INFO] [stdout] | [INFO] [stdout] 380 | tree.apply2(&mut trace, &node) [INFO] [stdout] | ^^^^^ help: change this to: `node` [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: deref which would be done by auto-deref [INFO] [stdout] --> packages/bootstrap/src/builder.rs:419:17 [INFO] [stdout] | [INFO] [stdout] 419 | (*chunk).blob_index = blob_index; [INFO] [stdout] | ^^^^^^^^ help: try: `chunk` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> packages/bootstrap/src/builder.rs:462:22 [INFO] [stdout] | [INFO] [stdout] 462 | for i in self [INFO] [stdout] | ______________________^ [INFO] [stdout] 463 | | .hint_readahead_files [INFO] [stdout] 464 | | .iter() [INFO] [stdout] 465 | | .filter_map(|(_, v)| v.as_ref()) [INFO] [stdout] | |________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 462 ~ for i in self [INFO] [stdout] 463 + .hint_readahead_files.values().filter_map(|v| v.as_ref()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `VecBlobIdTocIndex` is never used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:43:6 [INFO] [stdout] | [INFO] [stdout] 43 | type VecBlobIdTocIndex = Vec<(String, TocIndex)>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `aligned_chunk` is never read [INFO] [stdout] --> packages/bootstrap/src/builder.rs:83:5 [INFO] [stdout] | [INFO] [stdout] 40 | pub struct Builder { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 83 | aligned_chunk: bool, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `name` is never read [INFO] [stdout] --> packages/bootstrap/src/tree.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 44 | pub struct TreeTrace { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 45 | name: PathBuf, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TreeTrace` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | use std::u64; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `u64::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:87:53 [INFO] [stdout] | [INFO] [stdout] 87 | let mut inode_table = OndiskInodeTable::new(self.nodes.len() as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.nodes.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/node.rs:279:38 [INFO] [stdout] | [INFO] [stdout] 279 | chunk.clone_from(&cached_chunk); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `cached_chunk` [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: the variable `index` is used as a loop counter [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | for blob_id in blob_ids.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, blob_id) in (0_u32..).zip(blob_ids.iter())` [INFO] [stdout] | [INFO] [stdout] = note: `index` is of type `u32`, making it ineligible for `Iterator::enumerate` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:185:17 [INFO] [stdout] | [INFO] [stdout] 185 | (*chunk).blob_index = self [INFO] [stdout] | ^^^^^^^^ help: try: `chunk` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:209:35 [INFO] [stdout] | [INFO] [stdout] 209 | self.update_node_path_map((&tree.node).path.to_owned()); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `tree.node` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:213:25 [INFO] [stdout] | [INFO] [stdout] 213 | self.build_rafs(&mut tree, &mut nodes); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `tree` [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: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:453:30 [INFO] [stdout] | [INFO] [stdout] 453 | (self.inode.i_mode & libc::S_IFDIR as u32) == libc::S_IFDIR as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFDIR` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:453:55 [INFO] [stdout] | [INFO] [stdout] 453 | (self.inode.i_mode & libc::S_IFDIR as u32) == libc::S_IFDIR as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFDIR` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:457:29 [INFO] [stdout] | [INFO] [stdout] 457 | self.inode.i_mode & libc::S_IFLNK as u32 == libc::S_IFLNK as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFLNK` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:457:53 [INFO] [stdout] | [INFO] [stdout] 457 | self.inode.i_mode & libc::S_IFLNK as u32 == libc::S_IFLNK as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFLNK` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:461:29 [INFO] [stdout] | [INFO] [stdout] 461 | self.inode.i_mode & libc::S_IFREG as u32 == libc::S_IFREG as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFREG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:461:53 [INFO] [stdout] | [INFO] [stdout] 461 | self.inode.i_mode & libc::S_IFREG as u32 == libc::S_IFREG as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFREG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:465:29 [INFO] [stdout] | [INFO] [stdout] 465 | self.inode.i_mode & (libc::S_IFBLK | libc::S_IFCHR | libc::S_IFIFO) as u32 != 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `((libc::S_IFBLK | libc::S_IFCHR | libc::S_IFIFO))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `as_bytes` after slicing a string [INFO] [stdout] --> packages/bootstrap/src/node.rs:511:21 [INFO] [stdout] | [INFO] [stdout] 511 | name[OCISPEC_WHITEOUT_PREFIX.len()..].as_bytes(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&name.as_bytes()[OCISPEC_WHITEOUT_PREFIX.len()..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#sliced_string_as_bytes [INFO] [stdout] = note: `#[warn(clippy::sliced_string_as_bytes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `OndiskChunkInfo` which implements the `Copy` trait [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:280:36 [INFO] [stdout] | [INFO] [stdout] 280 | let origin_chunk = child.node.chunks.first().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*child.node.chunks.first().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `BootstrapBuilder` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:359:5 [INFO] [stdout] | [INFO] [stdout] 359 | / pub fn new() -> Self { [INFO] [stdout] 360 | | BootstrapBuilder { [INFO] [stdout] 361 | | super_block: Default::default(), [INFO] [stdout] 362 | | inode_map: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 369 | | } [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] 358 + impl Default for BootstrapBuilder { [INFO] [stdout] 359 + fn default() -> Self { [INFO] [stdout] 360 + Self::new() [INFO] [stdout] 361 + } [INFO] [stdout] 362 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:383:23 [INFO] [stdout] | [INFO] [stdout] 383 | .open(&self.bootstrap_path.clone().unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.bootstrap_path.clone().unwrap()` [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 returns a `Result<_, ()>` [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:419:1 [INFO] [stdout] | [INFO] [stdout] 419 | pub fn is_tar(dir: &Path) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] = note: `#[warn(clippy::result_unit_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(path).is_some()` [INFO] [stdout] --> packages/bootstrap/src/builder.rs:212:46 [INFO] [stdout] | [INFO] [stdout] 212 | if self.hint_readahead_files.get(path).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] = note: `#[warn(clippy::unnecessary_get_then_check)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/builder.rs:340:25 [INFO] [stdout] | [INFO] [stdout] 340 | self.build_rafs(&mut tree, &mut nodes); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `tree` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/builder.rs:380:37 [INFO] [stdout] | [INFO] [stdout] 380 | tree.apply2(&mut trace, &node) [INFO] [stdout] | ^^^^^ help: change this to: `node` [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: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:179:21 [INFO] [stdout] | [INFO] [stdout] 179 | mode |= libc::S_IFDIR as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFDIR` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:181:21 [INFO] [stdout] | [INFO] [stdout] 181 | mode |= libc::S_IFREG as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFREG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:183:21 [INFO] [stdout] | [INFO] [stdout] 183 | mode |= libc::S_IFLNK as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFLNK` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:185:21 [INFO] [stdout] | [INFO] [stdout] 185 | mode |= libc::S_IFBLK as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFBLK` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:187:21 [INFO] [stdout] | [INFO] [stdout] 187 | mode |= libc::S_IFCHR as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFCHR` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> packages/bootstrap/src/builder.rs:419:17 [INFO] [stdout] | [INFO] [stdout] 419 | (*chunk).blob_index = blob_index; [INFO] [stdout] | ^^^^^^^^ help: try: `chunk` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:189:21 [INFO] [stdout] | [INFO] [stdout] 189 | mode |= libc::S_IFIFO as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFIFO` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> packages/bootstrap/src/builder.rs:462:22 [INFO] [stdout] | [INFO] [stdout] 462 | for i in self [INFO] [stdout] | ______________________^ [INFO] [stdout] 463 | | .hint_readahead_files [INFO] [stdout] 464 | | .iter() [INFO] [stdout] 465 | | .filter_map(|(_, v)| v.as_ref()) [INFO] [stdout] | |________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 462 ~ for i in self [INFO] [stdout] 463 + .hint_readahead_files.values().filter_map(|v| v.as_ref()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> packages/bootstrap/src/trace.rs:114:9 [INFO] [stdout] | [INFO] [stdout] 114 | (&g).get(&class).unwrap().clone() [INFO] [stdout] | ^^^^ help: change this to: `g` [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: unneeded `return` statement [INFO] [stdout] --> packages/bootstrap/src/tree.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | return TreeTrace::new(PathBuf::from("/"), Vec::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 52 - return TreeTrace::new(PathBuf::from("/"), Vec::new()); [INFO] [stdout] 52 + TreeTrace::new(PathBuf::from("/"), Vec::new()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/bootstrap/src/tree.rs:76:9 [INFO] [stdout] | [INFO] [stdout] 76 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 76 - return false; [INFO] [stdout] 76 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> packages/bootstrap/src/tree.rs:108:19 [INFO] [stdout] | [INFO] [stdout] 108 | fn find_child<'a, 'b>(&'a self, tree: &'b mut Tree) -> Option<&'b mut Tree> { [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] 108 - fn find_child<'a, 'b>(&'a self, tree: &'b mut Tree) -> Option<&'b mut Tree> { [INFO] [stdout] 108 + fn find_child<'b>(&self, tree: &'b mut Tree) -> Option<&'b mut Tree> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/bootstrap/src/tree.rs:109:9 [INFO] [stdout] | [INFO] [stdout] 109 | return TreeTrace::do_find_child(&self.tree_node_path, tree); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 109 - return TreeTrace::do_find_child(&self.tree_node_path, tree); [INFO] [stdout] 109 + TreeTrace::do_find_child(&self.tree_node_path, tree) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/bootstrap/src/tree.rs:120:17 [INFO] [stdout] | [INFO] [stdout] 120 | return TreeTrace::do_find_child(&index_list[1..], children); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 120 - return TreeTrace::do_find_child(&index_list[1..], children); [INFO] [stdout] 120 + TreeTrace::do_find_child(&index_list[1..], children) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> packages/bootstrap/src/tree.rs:113:12 [INFO] [stdout] | [INFO] [stdout] 113 | if index_list.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `index_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/node.rs:279:38 [INFO] [stdout] | [INFO] [stdout] 279 | chunk.clone_from(&cached_chunk); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `cached_chunk` [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: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/tree.rs:186:50 [INFO] [stdout] | [INFO] [stdout] 186 | let chunk = inode.get_chunk_info(i as u32)?.cast_ondisk()?; [INFO] [stdout] | ^^^^^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&parent_path).is_some()` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:252:37 [INFO] [stdout] | [INFO] [stdout] 252 | self.path_inode_map.get(&parent_path).is_some(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(&parent_path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&parent_path).is_none()` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:255:36 [INFO] [stdout] | [INFO] [stdout] 255 | if self.path_inode_map.get(&parent_path).is_none() { [INFO] [stdout] | --------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: replace it with: `!self.path_inode_map.contains_key(&parent_path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> packages/bootstrap/src/tree.rs:315:38 [INFO] [stdout] | [INFO] [stdout] 315 | compress_offset: entry.offset as u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `entry.offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> packages/bootstrap/src/tree.rs:318:34 [INFO] [stdout] | [INFO] [stdout] 318 | file_offset: entry.chunk_offset as u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `entry.chunk_offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/tree.rs:332:39 [INFO] [stdout] | [INFO] [stdout] 332 | last_reg_entry = Some(&entry); [INFO] [stdout] | ^^^^^^ help: change this to: `entry` [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: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:453:30 [INFO] [stdout] | [INFO] [stdout] 453 | (self.inode.i_mode & libc::S_IFDIR as u32) == libc::S_IFDIR as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFDIR` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/tree.rs:339:33 [INFO] [stdout] | [INFO] [stdout] 339 | self.make_lost_dirs(&entry, &mut lost_dirs)?; [INFO] [stdout] | ^^^^^^ help: change this to: `entry` [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: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:453:55 [INFO] [stdout] | [INFO] [stdout] 453 | (self.inode.i_mode & libc::S_IFDIR as u32) == libc::S_IFDIR as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFDIR` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:457:29 [INFO] [stdout] | [INFO] [stdout] 457 | self.inode.i_mode & libc::S_IFLNK as u32 == libc::S_IFLNK as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFLNK` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:457:53 [INFO] [stdout] | [INFO] [stdout] 457 | self.inode.i_mode & libc::S_IFLNK as u32 == libc::S_IFLNK as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFLNK` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:461:29 [INFO] [stdout] | [INFO] [stdout] 461 | self.inode.i_mode & libc::S_IFREG as u32 == libc::S_IFREG as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFREG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:461:53 [INFO] [stdout] | [INFO] [stdout] 461 | self.inode.i_mode & libc::S_IFREG as u32 == libc::S_IFREG as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFREG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/node.rs:465:29 [INFO] [stdout] | [INFO] [stdout] 465 | self.inode.i_mode & (libc::S_IFBLK | libc::S_IFCHR | libc::S_IFIFO) as u32 != 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `((libc::S_IFBLK | libc::S_IFCHR | libc::S_IFIFO))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/tree.rs:353:40 [INFO] [stdout] | [INFO] [stdout] 353 | let node = self.parse_node(&entry, explicit_uidgid)?; [INFO] [stdout] | ^^^^^^ help: change this to: `entry` [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 creates an owned instance just for comparison [INFO] [stdout] --> packages/bootstrap/src/tree.rs:355:33 [INFO] [stdout] | [INFO] [stdout] 355 | if entry.path()? == PathBuf::from("/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `*"/"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `as_bytes` after slicing a string [INFO] [stdout] --> packages/bootstrap/src/node.rs:511:21 [INFO] [stdout] | [INFO] [stdout] 511 | name[OCISPEC_WHITEOUT_PREFIX.len()..].as_bytes(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&name.as_bytes()[OCISPEC_WHITEOUT_PREFIX.len()..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#sliced_string_as_bytes [INFO] [stdout] = note: `#[warn(clippy::sliced_string_as_bytes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/tree.rs:372:41 [INFO] [stdout] | [INFO] [stdout] 372 | .apply2(&mut trace, &node) [INFO] [stdout] | ^^^^^ help: change this to: `node` [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: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> packages/bootstrap/src/tree.rs:499:30 [INFO] [stdout] | [INFO] [stdout] 499 | pub fn from_stargz_index<'a>(stargz_index_json: &'a BlobIdTocIndex) -> Result { [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] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 499 - pub fn from_stargz_index<'a>(stargz_index_json: &'a BlobIdTocIndex) -> Result { [INFO] [stdout] 499 + pub fn from_stargz_index(stargz_index_json: &BlobIdTocIndex) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'b [INFO] [stdout] --> packages/bootstrap/src/tree.rs:504:37 [INFO] [stdout] | [INFO] [stdout] 504 | pub fn update_from_stargz_index<'b>(&mut self, stargz_index_json: &'b BlobIdTocIndex) { [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] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 504 - pub fn update_from_stargz_index<'b>(&mut self, stargz_index_json: &'b BlobIdTocIndex) { [INFO] [stdout] 504 + pub fn update_from_stargz_index(&mut self, stargz_index_json: &BlobIdTocIndex) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/tree.rs:518:53 [INFO] [stdout] | [INFO] [stdout] 518 | let tree_builder = MetadataTreeBuilder::new(&rs); [INFO] [stdout] | ^^^ help: change this to: `rs` [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: unneeded `return` statement [INFO] [stdout] --> packages/bootstrap/src/tree.rs:552:13 [INFO] [stdout] | [INFO] [stdout] 552 | return Ok(true); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 552 - return Ok(true); [INFO] [stdout] 552 + Ok(true) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/bootstrap/src/tree.rs:554:13 [INFO] [stdout] | [INFO] [stdout] 554 | return Ok(false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 554 - return Ok(false); [INFO] [stdout] 554 + Ok(false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> packages/bootstrap/src/tree.rs:531:27 [INFO] [stdout] | [INFO] [stdout] 531 | if target.path == PathBuf::from("/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `*"/"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> packages/bootstrap/src/tree.rs:585:27 [INFO] [stdout] | [INFO] [stdout] 585 | if target.path == PathBuf::from("/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `*"/"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:179:21 [INFO] [stdout] | [INFO] [stdout] 179 | mode |= libc::S_IFDIR as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFDIR` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:181:21 [INFO] [stdout] | [INFO] [stdout] 181 | mode |= libc::S_IFREG as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFREG` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:183:21 [INFO] [stdout] | [INFO] [stdout] 183 | mode |= libc::S_IFLNK as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFLNK` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:185:21 [INFO] [stdout] | [INFO] [stdout] 185 | mode |= libc::S_IFBLK as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFBLK` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:187:21 [INFO] [stdout] | [INFO] [stdout] 187 | mode |= libc::S_IFCHR as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFCHR` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/stargz.rs:189:21 [INFO] [stdout] | [INFO] [stdout] 189 | mode |= libc::S_IFIFO as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `libc::S_IFIFO` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match expression is unnecessary [INFO] [stdout] --> packages/bootstrap/src/lib.rs:138:21 [INFO] [stdout] | [INFO] [stdout] 138 | let blob_path = match blob_path { [INFO] [stdout] | _____________________^ [INFO] [stdout] 139 | | Some(p) => Some(p), [INFO] [stdout] 140 | | None => None, [INFO] [stdout] 141 | | }; [INFO] [stdout] | |_____^ help: replace it with: `blob_path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_match [INFO] [stdout] = note: `#[warn(clippy::needless_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> packages/bootstrap/src/lib.rs:138:21 [INFO] [stdout] | [INFO] [stdout] 138 | let blob_path = match blob_path { [INFO] [stdout] | _____________________^ [INFO] [stdout] 139 | | Some(p) => Some(p), [INFO] [stdout] 140 | | None => None, [INFO] [stdout] 141 | | }; [INFO] [stdout] | |_____^ help: try: `blob_path.map(|p| p)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/lib.rs:176:5 [INFO] [stdout] | [INFO] [stdout] 176 | dump_result_output(blob_ids); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 176 | let _ = dump_result_output(blob_ids); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `blobId` should have a snake case name [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | pub blobId: String, [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `blob_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `blobIds` should have a snake case name [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | pub blobIds: BlobIds, [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `blob_ids` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | self.build_tree(toc_indexes, blob_ids); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 78 | let _ = self.build_tree(toc_indexes, blob_ids); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | self.super_block.store(&mut self.writer); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 85 | let _ = self.super_block.store(&mut self.writer); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | inode_table.store(&mut self.writer); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 103 | let _ = inode_table.store(&mut self.writer); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | self.blob_table.store(&mut self.writer); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 105 | let _ = self.blob_table.store(&mut self.writer); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:108:13 [INFO] [stdout] | [INFO] [stdout] 108 | node.dump_bootstrap(&mut self.writer); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 108 | let _ = node.dump_bootstrap(&mut self.writer); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:410:5 [INFO] [stdout] | [INFO] [stdout] 410 | / BootstrapBuilder::new() [INFO] [stdout] 411 | | .bootstrap_path(PathBuf::from(bootstrap_path)) [INFO] [stdout] 412 | | .build_bootstrap() [INFO] [stdout] 413 | | .build(toc_indexes, blob_ids) // build [INFO] [stdout] 414 | | .dump(); // dump file [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 410 | let _ = BootstrapBuilder::new() [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> packages/bootstrap/src/trace.rs:114:9 [INFO] [stdout] | [INFO] [stdout] 114 | (&g).get(&class).unwrap().clone() [INFO] [stdout] | ^^^^ help: change this to: `g` [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: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/builder.rs:603:9 [INFO] [stdout] | [INFO] [stdout] 603 | self.dump_to_file(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 603 | let _ = self.dump_to_file(None); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/bootstrap/src/tree.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | return TreeTrace::new(PathBuf::from("/"), Vec::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 52 - return TreeTrace::new(PathBuf::from("/"), Vec::new()); [INFO] [stdout] 52 + TreeTrace::new(PathBuf::from("/"), Vec::new()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/bootstrap/src/tree.rs:76:9 [INFO] [stdout] | [INFO] [stdout] 76 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 76 - return false; [INFO] [stdout] 76 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> packages/bootstrap/src/tree.rs:108:19 [INFO] [stdout] | [INFO] [stdout] 108 | fn find_child<'a, 'b>(&'a self, tree: &'b mut Tree) -> Option<&'b mut Tree> { [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] 108 - fn find_child<'a, 'b>(&'a self, tree: &'b mut Tree) -> Option<&'b mut Tree> { [INFO] [stdout] 108 + fn find_child<'b>(&self, tree: &'b mut Tree) -> Option<&'b mut Tree> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/bootstrap/src/tree.rs:109:9 [INFO] [stdout] | [INFO] [stdout] 109 | return TreeTrace::do_find_child(&self.tree_node_path, tree); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 109 - return TreeTrace::do_find_child(&self.tree_node_path, tree); [INFO] [stdout] 109 + TreeTrace::do_find_child(&self.tree_node_path, tree) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/bootstrap/src/tree.rs:120:17 [INFO] [stdout] | [INFO] [stdout] 120 | return TreeTrace::do_find_child(&index_list[1..], children); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 120 - return TreeTrace::do_find_child(&index_list[1..], children); [INFO] [stdout] 120 + TreeTrace::do_find_child(&index_list[1..], children) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> packages/bootstrap/src/tree.rs:113:12 [INFO] [stdout] | [INFO] [stdout] 113 | if index_list.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `index_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> packages/bootstrap/src/tree.rs:186:50 [INFO] [stdout] | [INFO] [stdout] 186 | let chunk = inode.get_chunk_info(i as u32)?.cast_ondisk()?; [INFO] [stdout] | ^^^^^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&parent_path).is_some()` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:252:37 [INFO] [stdout] | [INFO] [stdout] 252 | self.path_inode_map.get(&parent_path).is_some(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(&parent_path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&parent_path).is_none()` [INFO] [stdout] --> packages/bootstrap/src/tree.rs:255:36 [INFO] [stdout] | [INFO] [stdout] 255 | if self.path_inode_map.get(&parent_path).is_none() { [INFO] [stdout] | --------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: replace it with: `!self.path_inode_map.contains_key(&parent_path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> packages/bootstrap/src/tree.rs:315:38 [INFO] [stdout] | [INFO] [stdout] 315 | compress_offset: entry.offset as u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `entry.offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> packages/bootstrap/src/tree.rs:318:34 [INFO] [stdout] | [INFO] [stdout] 318 | file_offset: entry.chunk_offset as u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `entry.chunk_offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/tree.rs:332:39 [INFO] [stdout] | [INFO] [stdout] 332 | last_reg_entry = Some(&entry); [INFO] [stdout] | ^^^^^^ help: change this to: `entry` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/tree.rs:339:33 [INFO] [stdout] | [INFO] [stdout] 339 | self.make_lost_dirs(&entry, &mut lost_dirs)?; [INFO] [stdout] | ^^^^^^ help: change this to: `entry` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/tree.rs:353:40 [INFO] [stdout] | [INFO] [stdout] 353 | let node = self.parse_node(&entry, explicit_uidgid)?; [INFO] [stdout] | ^^^^^^ help: change this to: `entry` [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 creates an owned instance just for comparison [INFO] [stdout] --> packages/bootstrap/src/tree.rs:355:33 [INFO] [stdout] | [INFO] [stdout] 355 | if entry.path()? == PathBuf::from("/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `*"/"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/tree.rs:372:41 [INFO] [stdout] | [INFO] [stdout] 372 | .apply2(&mut trace, &node) [INFO] [stdout] | ^^^^^ help: change this to: `node` [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: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> packages/bootstrap/src/tree.rs:499:30 [INFO] [stdout] | [INFO] [stdout] 499 | pub fn from_stargz_index<'a>(stargz_index_json: &'a BlobIdTocIndex) -> Result { [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] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 499 - pub fn from_stargz_index<'a>(stargz_index_json: &'a BlobIdTocIndex) -> Result { [INFO] [stdout] 499 + pub fn from_stargz_index(stargz_index_json: &BlobIdTocIndex) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'b [INFO] [stdout] --> packages/bootstrap/src/tree.rs:504:37 [INFO] [stdout] | [INFO] [stdout] 504 | pub fn update_from_stargz_index<'b>(&mut self, stargz_index_json: &'b BlobIdTocIndex) { [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] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 504 - pub fn update_from_stargz_index<'b>(&mut self, stargz_index_json: &'b BlobIdTocIndex) { [INFO] [stdout] 504 + pub fn update_from_stargz_index(&mut self, stargz_index_json: &BlobIdTocIndex) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> packages/bootstrap/src/tree.rs:518:53 [INFO] [stdout] | [INFO] [stdout] 518 | let tree_builder = MetadataTreeBuilder::new(&rs); [INFO] [stdout] | ^^^ help: change this to: `rs` [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: unneeded `return` statement [INFO] [stdout] --> packages/bootstrap/src/tree.rs:552:13 [INFO] [stdout] | [INFO] [stdout] 552 | return Ok(true); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 552 - return Ok(true); [INFO] [stdout] 552 + Ok(true) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/bootstrap/src/tree.rs:554:13 [INFO] [stdout] | [INFO] [stdout] 554 | return Ok(false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 554 - return Ok(false); [INFO] [stdout] 554 + Ok(false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> packages/bootstrap/src/tree.rs:531:27 [INFO] [stdout] | [INFO] [stdout] 531 | if target.path == PathBuf::from("/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `*"/"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> packages/bootstrap/src/tree.rs:585:27 [INFO] [stdout] | [INFO] [stdout] 585 | if target.path == PathBuf::from("/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `*"/"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match expression is unnecessary [INFO] [stdout] --> packages/bootstrap/src/lib.rs:138:21 [INFO] [stdout] | [INFO] [stdout] 138 | let blob_path = match blob_path { [INFO] [stdout] | _____________________^ [INFO] [stdout] 139 | | Some(p) => Some(p), [INFO] [stdout] 140 | | None => None, [INFO] [stdout] 141 | | }; [INFO] [stdout] | |_____^ help: replace it with: `blob_path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_match [INFO] [stdout] = note: `#[warn(clippy::needless_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> packages/bootstrap/src/lib.rs:138:21 [INFO] [stdout] | [INFO] [stdout] 138 | let blob_path = match blob_path { [INFO] [stdout] | _____________________^ [INFO] [stdout] 139 | | Some(p) => Some(p), [INFO] [stdout] 140 | | None => None, [INFO] [stdout] 141 | | }; [INFO] [stdout] | |_____^ help: try: `blob_path.map(|p| p)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/lib.rs:176:5 [INFO] [stdout] | [INFO] [stdout] 176 | dump_result_output(blob_ids); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 176 | let _ = dump_result_output(blob_ids); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `blobId` should have a snake case name [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | pub blobId: String, [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `blob_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `blobIds` should have a snake case name [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | pub blobIds: BlobIds, [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `blob_ids` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | self.build_tree(toc_indexes, blob_ids); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 78 | let _ = self.build_tree(toc_indexes, blob_ids); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | self.super_block.store(&mut self.writer); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 85 | let _ = self.super_block.store(&mut self.writer); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | inode_table.store(&mut self.writer); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 103 | let _ = inode_table.store(&mut self.writer); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | self.blob_table.store(&mut self.writer); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 105 | let _ = self.blob_table.store(&mut self.writer); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:108:13 [INFO] [stdout] | [INFO] [stdout] 108 | node.dump_bootstrap(&mut self.writer); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 108 | let _ = node.dump_bootstrap(&mut self.writer); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/bootstrap.rs:410:5 [INFO] [stdout] | [INFO] [stdout] 410 | / BootstrapBuilder::new() [INFO] [stdout] 411 | | .bootstrap_path(PathBuf::from(bootstrap_path)) [INFO] [stdout] 412 | | .build_bootstrap() [INFO] [stdout] 413 | | .build(toc_indexes, blob_ids) // build [INFO] [stdout] 414 | | .dump(); // dump file [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 410 | let _ = BootstrapBuilder::new() [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/bootstrap/src/builder.rs:603:9 [INFO] [stdout] | [INFO] [stdout] 603 | self.dump_to_file(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 603 | let _ = self.dump_to_file(None); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking downloader v0.1.0 (/opt/rustwide/workdir/packages/downloader) [INFO] [stderr] Checking nydus-rs v0.1.0 (/opt/rustwide/workdir/packages/bootstrap-bin) [INFO] [stdout] warning: unused import: `std::future::Future` [INFO] [stdout] --> packages/downloader/src/channel.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::future::Future; [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: `tokio::task::JoinHandle` [INFO] [stdout] --> packages/downloader/src/channel.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::task::JoinHandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Debug` [INFO] [stdout] --> packages/downloader/src/download.rs:3:16 [INFO] [stdout] | [INFO] [stdout] 3 | use std::fmt::{Debug, Display}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Pool` [INFO] [stdout] --> packages/downloader/src/download.rs:7:19 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::pool::{Pool, PoolError, PoolExecutorError}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TocIndex` [INFO] [stdout] --> packages/downloader/src/download.rs:10:33 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::{HTTPPool, NpmStore, TocIndex}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Error` [INFO] [stdout] --> packages/downloader/src/http/pool.rs:2:20 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::error::{Error, Result as ProjectResult}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::future::join_all` [INFO] [stdout] --> packages/downloader/src/http/pool.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use futures::future::join_all; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures_util::future::try_join_all` [INFO] [stdout] --> packages/downloader/src/http/pool.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use futures_util::future::try_join_all; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SystemTime` [INFO] [stdout] --> packages/downloader/src/http/pool.rs:15:27 [INFO] [stdout] | [INFO] [stdout] 15 | use std::time::{Duration, SystemTime}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::task::JoinHandle` [INFO] [stdout] --> packages/downloader/src/http/pool.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use tokio::task::JoinHandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> packages/downloader/src/http/pool.rs:97:9 [INFO] [stdout] | [INFO] [stdout] 97 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Error` [INFO] [stdout] --> packages/downloader/src/http/reqwester.rs:2:20 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::error::{Error, Result as TnpmResult}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::Sender` [INFO] [stdout] --> packages/downloader/src/http/reqwester.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use tokio::sync::mpsc::Sender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::pool::Command` [INFO] [stdout] --> packages/downloader/src/meta/package.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::pool::Command; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Debug` and `Display` [INFO] [stdout] --> packages/downloader/src/pool.rs:7:16 [INFO] [stdout] | [INFO] [stdout] 7 | use std::fmt::{Debug, Display}; [INFO] [stdout] | ^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::marker::PhantomData` [INFO] [stdout] --> packages/downloader/src/pool.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::marker::PhantomData; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ops::Deref` [INFO] [stdout] --> packages/downloader/src/pool.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::ops::Deref; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::error::SendError` [INFO] [stdout] --> packages/downloader/src/pool.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use tokio::sync::mpsc::error::SendError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Receiver` [INFO] [stdout] --> packages/downloader/src/pool.rs:14:34 [INFO] [stdout] | [INFO] [stdout] 14 | use tokio::sync::oneshot::{self, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MultiWriter` [INFO] [stdout] --> packages/downloader/src/store/bucket.rs:5:32 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::util::{CountWriter, MultiWriter}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> packages/downloader/src/store/bucket.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Archive` and `Entry` [INFO] [stdout] --> packages/downloader/src/store/bucket.rs:12:17 [INFO] [stdout] | [INFO] [stdout] 12 | use tokio_tar::{Archive, Entry}; [INFO] [stdout] | ^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `AsyncWrite` [INFO] [stdout] --> packages/downloader/src/store/bucket.rs:16:28 [INFO] [stdout] | [INFO] [stdout] 16 | use tokio::io::{AsyncRead, AsyncWrite, AsyncWriteExt, BufReader, BufWriter}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::Sender` [INFO] [stdout] --> packages/downloader/src/store/bucket.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use tokio::sync::mpsc::Sender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> packages/downloader/src/store/bucket.rs:75:13 [INFO] [stdout] | [INFO] [stdout] 75 | entry_listener: entry_listener, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `entry_listener` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Components` and `PathBuf` [INFO] [stdout] --> packages/downloader/src/store/listener.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | use std::path::{Components, Path, PathBuf}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> packages/downloader/src/store/listener.rs:30:46 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn should_send_entry>(self: &Self, entry_path: P) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] = note: `#[warn(clippy::needless_arbitrary_self_type)]` on by default [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 30 - pub fn should_send_entry>(self: &Self, entry_path: P) -> bool { [INFO] [stdout] 30 + pub fn should_send_entry>(&self, entry_path: P) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> packages/downloader/src/store/listener.rs:39:29 [INFO] [stdout] | [INFO] [stdout] 39 | pub async fn send_entry(self: &Self, entry: PackageEntry) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 39 - pub async fn send_entry(self: &Self, entry: PackageEntry) { [INFO] [stdout] 39 + pub async fn send_entry(&self, entry: PackageEntry) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> packages/downloader/src/store/listener.rs:43:27 [INFO] [stdout] | [INFO] [stdout] 43 | pub async fn shutdown(self: &Self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 43 - pub async fn shutdown(self: &Self) { [INFO] [stdout] 43 + pub async fn shutdown(&self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PathBuf` [INFO] [stdout] --> packages/downloader/src/store/stargz.rs:14:23 [INFO] [stdout] | [INFO] [stdout] 14 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::channel::subscriber` [INFO] [stdout] --> packages/downloader/src/store/store.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::channel::subscriber; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::future::join_all` [INFO] [stdout] --> packages/downloader/src/store/store.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use futures::future::join_all; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> packages/downloader/src/store/store.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::store::TocEntry` [INFO] [stdout] --> packages/downloader/src/store/store.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use crate::store::TocEntry; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MultiWriter` [INFO] [stdout] --> packages/downloader/src/store/store.rs:19:33 [INFO] [stdout] | [INFO] [stdout] 19 | use crate::util::{AsyncReadVec, MultiWriter}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `AsyncWrite` [INFO] [stdout] --> packages/downloader/src/store/store.rs:24:56 [INFO] [stdout] | [INFO] [stdout] 24 | use tokio::io::{AsyncRead, AsyncReadExt, AsyncSeekExt, AsyncWrite}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::Sender as TokioSender` [INFO] [stdout] --> packages/downloader/src/store/store.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use tokio::sync::mpsc::Sender as TokioSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Archive` and `Entry` [INFO] [stdout] --> packages/downloader/src/store/store.rs:29:17 [INFO] [stdout] | [INFO] [stdout] 29 | use tokio_tar::{Archive, Entry}; [INFO] [stdout] | ^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BlackHole` [INFO] [stdout] --> packages/downloader/src/store/tar.rs:3:19 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::util::{BlackHole, CountWriter, HashWriter, MultiWriter}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Borrow` [INFO] [stdout] --> packages/downloader/src/store/tar.rs:10:19 [INFO] [stdout] | [INFO] [stdout] 10 | use std::borrow::{Borrow, Cow}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> packages/downloader/src/store/tar.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `AsyncReadExt` [INFO] [stdout] --> packages/downloader/src/store/tar.rs:12:34 [INFO] [stdout] | [INFO] [stdout] 12 | use tokio::io::{self, AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt, Result as IoResult}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::Sender` [INFO] [stdout] --> packages/downloader/src/store/tar.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use tokio::sync::mpsc::Sender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Entry` [INFO] [stdout] --> packages/downloader/src/store/tar.rs:14:26 [INFO] [stdout] | [INFO] [stdout] 14 | use tokio_tar::{Archive, Entry, EntryType, Header}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::future::Future` [INFO] [stdout] --> packages/downloader/src/channel.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::future::Future; [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: `tokio::task::JoinHandle` [INFO] [stdout] --> packages/downloader/src/channel.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::task::JoinHandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde::de::Unexpected::Bytes` [INFO] [stdout] --> packages/downloader/src/store/tar.rs:151:9 [INFO] [stdout] | [INFO] [stdout] 151 | use serde::de::Unexpected::Bytes; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Debug` [INFO] [stdout] --> packages/downloader/src/download.rs:3:16 [INFO] [stdout] | [INFO] [stdout] 3 | use std::fmt::{Debug, Display}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Pool` [INFO] [stdout] --> packages/downloader/src/download.rs:7:19 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::pool::{Pool, PoolError, PoolExecutorError}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TocIndex` [INFO] [stdout] --> packages/downloader/src/download.rs:10:33 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::{HTTPPool, NpmStore, TocIndex}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Deserializer` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:3:26 [INFO] [stdout] | [INFO] [stdout] 3 | use serde::{Deserialize, Deserializer, Serialize}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::mem::ManuallyDrop` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::mem::ManuallyDrop; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::rc::Rc` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use std::rc::Rc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:13:17 [INFO] [stdout] | [INFO] [stdout] 13 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Path` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:191:21 [INFO] [stdout] | [INFO] [stdout] 191 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Bytes` [INFO] [stdout] --> packages/downloader/src/util.rs:1:21 [INFO] [stdout] | [INFO] [stdout] 1 | use bytes::{BufMut, Bytes, BytesMut}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Error` [INFO] [stdout] --> packages/downloader/src/http/pool.rs:2:20 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::error::{Error, Result as ProjectResult}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::future::join_all` [INFO] [stdout] --> packages/downloader/src/util.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use futures::future::join_all; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BufRead` [INFO] [stdout] --> packages/downloader/src/util.rs:6:15 [INFO] [stdout] | [INFO] [stdout] 6 | use std::io::{BufRead, Error as IoError}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `AsyncWriteExt` [INFO] [stdout] --> packages/downloader/src/util.rs:11:40 [INFO] [stdout] | [INFO] [stdout] 11 | use tokio::io::{AsyncRead, AsyncWrite, AsyncWriteExt, ReadBuf}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::future::join_all` [INFO] [stdout] --> packages/downloader/src/http/pool.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use futures::future::join_all; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures_util::future::try_join_all` [INFO] [stdout] --> packages/downloader/src/http/pool.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use futures_util::future::try_join_all; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> packages/downloader/src/util.rs:65:23 [INFO] [stdout] | [INFO] [stdout] 65 | pub fn into_inner(self: Self) -> (W1, W2) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 65 - pub fn into_inner(self: Self) -> (W1, W2) { [INFO] [stdout] 65 + pub fn into_inner(self) -> (W1, W2) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SystemTime` [INFO] [stdout] --> packages/downloader/src/http/pool.rs:15:27 [INFO] [stdout] | [INFO] [stdout] 15 | use std::time::{Duration, SystemTime}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::task::JoinHandle` [INFO] [stdout] --> packages/downloader/src/http/pool.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use tokio::task::JoinHandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> packages/downloader/src/util.rs:140:19 [INFO] [stdout] | [INFO] [stdout] 140 | fn into_inner(self: Self) -> W { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 140 - fn into_inner(self: Self) -> W { [INFO] [stdout] 140 + fn into_inner(self) -> W { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Error` [INFO] [stdout] --> packages/downloader/src/http/reqwester.rs:2:20 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::error::{Error, Result as TnpmResult}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::Sender` [INFO] [stdout] --> packages/downloader/src/http/reqwester.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use tokio::sync::mpsc::Sender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `uuid::Uuid` [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use uuid::Uuid; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BlackHole` [INFO] [stdout] --> packages/downloader/src/util.rs:530:37 [INFO] [stdout] | [INFO] [stdout] 530 | use crate::util::{BadBufWriter, BlackHole, BufWriter, MultiWriter}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DownloadResponse` [INFO] [stdout] --> packages/downloader/src/lib.rs:12:23 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::download::{DownloadResponse, Downloader}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HTTPReqwester` [INFO] [stdout] --> packages/downloader/src/lib.rs:14:29 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::http::{HTTPPool, HTTPReqwester}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BlobIdTocIndex`, `BlobIdsTocIndexes`, and `TocIndex as NewTocIndex` [INFO] [stdout] --> packages/downloader/src/lib.rs:18:34 [INFO] [stdout] | [INFO] [stdout] 18 | use nydus_bootstrap::bootstrap::{BlobIdTocIndex, BlobIdsTocIndexes, TocIndex as NewTocIndex}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HashSet` [INFO] [stdout] --> packages/downloader/src/lib.rs:19:33 [INFO] [stdout] | [INFO] [stdout] 19 | use std::collections::{HashMap, HashSet}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `nydus_bootstrap::stargz::TocEntry` [INFO] [stdout] --> packages/downloader/src/lib.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | use nydus_bootstrap::stargz::TocEntry; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::MultiWriter` [INFO] [stdout] --> packages/downloader/src/lib.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use crate::util::MultiWriter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::pool::Command` [INFO] [stdout] --> packages/downloader/src/meta/package.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::pool::Command; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> packages/downloader/src/lib.rs:29:1 [INFO] [stdout] | [INFO] [stdout] 29 | use tokio; [INFO] [stdout] | ^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AsyncRead` and `AsyncWrite` [INFO] [stdout] --> packages/downloader/src/lib.rs:30:17 [INFO] [stdout] | [INFO] [stdout] 30 | use tokio::io::{AsyncRead, AsyncWrite}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::Sender` [INFO] [stdout] --> packages/downloader/src/lib.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | use tokio::sync::mpsc::Sender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> packages/downloader/src/lib.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::task::JoinHandle` [INFO] [stdout] --> packages/downloader/src/lib.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | use tokio::task::JoinHandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Debug` and `Display` [INFO] [stdout] --> packages/downloader/src/pool.rs:7:16 [INFO] [stdout] | [INFO] [stdout] 7 | use std::fmt::{Debug, Display}; [INFO] [stdout] | ^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::marker::PhantomData` [INFO] [stdout] --> packages/downloader/src/pool.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::marker::PhantomData; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ops::Deref` [INFO] [stdout] --> packages/downloader/src/pool.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::ops::Deref; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::error::SendError` [INFO] [stdout] --> packages/downloader/src/pool.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use tokio::sync::mpsc::error::SendError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Receiver` [INFO] [stdout] --> packages/downloader/src/pool.rs:14:34 [INFO] [stdout] | [INFO] [stdout] 14 | use tokio::sync::oneshot::{self, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MultiWriter` [INFO] [stdout] --> packages/downloader/src/store/bucket.rs:5:32 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::util::{CountWriter, MultiWriter}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> packages/downloader/src/store/bucket.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Archive` and `Entry` [INFO] [stdout] --> packages/downloader/src/store/bucket.rs:12:17 [INFO] [stdout] | [INFO] [stdout] 12 | use tokio_tar::{Archive, Entry}; [INFO] [stdout] | ^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `AsyncWrite` [INFO] [stdout] --> packages/downloader/src/store/bucket.rs:16:28 [INFO] [stdout] | [INFO] [stdout] 16 | use tokio::io::{AsyncRead, AsyncWrite, AsyncWriteExt, BufReader, BufWriter}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::Sender` [INFO] [stdout] --> packages/downloader/src/store/bucket.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use tokio::sync::mpsc::Sender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> packages/downloader/src/store/bucket.rs:75:13 [INFO] [stdout] | [INFO] [stdout] 75 | entry_listener: entry_listener, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `entry_listener` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Components` and `PathBuf` [INFO] [stdout] --> packages/downloader/src/store/listener.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | use std::path::{Components, Path, PathBuf}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> packages/downloader/src/store/listener.rs:30:46 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn should_send_entry>(self: &Self, entry_path: P) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] = note: `#[warn(clippy::needless_arbitrary_self_type)]` on by default [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 30 - pub fn should_send_entry>(self: &Self, entry_path: P) -> bool { [INFO] [stdout] 30 + pub fn should_send_entry>(&self, entry_path: P) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> packages/downloader/src/store/listener.rs:39:29 [INFO] [stdout] | [INFO] [stdout] 39 | pub async fn send_entry(self: &Self, entry: PackageEntry) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 39 - pub async fn send_entry(self: &Self, entry: PackageEntry) { [INFO] [stdout] 39 + pub async fn send_entry(&self, entry: PackageEntry) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> packages/downloader/src/store/listener.rs:43:27 [INFO] [stdout] | [INFO] [stdout] 43 | pub async fn shutdown(self: &Self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 43 - pub async fn shutdown(self: &Self) { [INFO] [stdout] 43 + pub async fn shutdown(&self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PathBuf` [INFO] [stdout] --> packages/downloader/src/store/stargz.rs:14:23 [INFO] [stdout] | [INFO] [stdout] 14 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::channel::subscriber` [INFO] [stdout] --> packages/downloader/src/store/store.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::channel::subscriber; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::future::join_all` [INFO] [stdout] --> packages/downloader/src/store/store.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use futures::future::join_all; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> packages/downloader/src/store/store.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::store::TocEntry` [INFO] [stdout] --> packages/downloader/src/store/store.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use crate::store::TocEntry; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MultiWriter` [INFO] [stdout] --> packages/downloader/src/store/store.rs:19:33 [INFO] [stdout] | [INFO] [stdout] 19 | use crate::util::{AsyncReadVec, MultiWriter}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `AsyncWrite` [INFO] [stdout] --> packages/downloader/src/store/store.rs:24:56 [INFO] [stdout] | [INFO] [stdout] 24 | use tokio::io::{AsyncRead, AsyncReadExt, AsyncSeekExt, AsyncWrite}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::Sender as TokioSender` [INFO] [stdout] --> packages/downloader/src/store/store.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use tokio::sync::mpsc::Sender as TokioSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Archive` and `Entry` [INFO] [stdout] --> packages/downloader/src/store/store.rs:29:17 [INFO] [stdout] | [INFO] [stdout] 29 | use tokio_tar::{Archive, Entry}; [INFO] [stdout] | ^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BlackHole` [INFO] [stdout] --> packages/downloader/src/store/tar.rs:3:19 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::util::{BlackHole, CountWriter, HashWriter, MultiWriter}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Borrow` [INFO] [stdout] --> packages/downloader/src/store/tar.rs:10:19 [INFO] [stdout] | [INFO] [stdout] 10 | use std::borrow::{Borrow, Cow}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> packages/downloader/src/store/tar.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `AsyncReadExt` [INFO] [stdout] --> packages/downloader/src/store/tar.rs:12:34 [INFO] [stdout] | [INFO] [stdout] 12 | use tokio::io::{self, AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt, Result as IoResult}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::Sender` [INFO] [stdout] --> packages/downloader/src/store/tar.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use tokio::sync::mpsc::Sender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Entry` [INFO] [stdout] --> packages/downloader/src/store/tar.rs:14:26 [INFO] [stdout] | [INFO] [stdout] 14 | use tokio_tar::{Archive, Entry, EntryType, Header}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Deserializer` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:3:26 [INFO] [stdout] | [INFO] [stdout] 3 | use serde::{Deserialize, Deserializer, Serialize}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::mem::ManuallyDrop` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::mem::ManuallyDrop; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::rc::Rc` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use std::rc::Rc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:13:17 [INFO] [stdout] | [INFO] [stdout] 13 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Bytes` [INFO] [stdout] --> packages/downloader/src/util.rs:1:21 [INFO] [stdout] | [INFO] [stdout] 1 | use bytes::{BufMut, Bytes, BytesMut}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::future::join_all` [INFO] [stdout] --> packages/downloader/src/util.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use futures::future::join_all; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BufRead` [INFO] [stdout] --> packages/downloader/src/util.rs:6:15 [INFO] [stdout] | [INFO] [stdout] 6 | use std::io::{BufRead, Error as IoError}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `AsyncWriteExt` [INFO] [stdout] --> packages/downloader/src/util.rs:11:40 [INFO] [stdout] | [INFO] [stdout] 11 | use tokio::io::{AsyncRead, AsyncWrite, AsyncWriteExt, ReadBuf}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> packages/downloader/src/util.rs:65:23 [INFO] [stdout] | [INFO] [stdout] 65 | pub fn into_inner(self: Self) -> (W1, W2) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 65 - pub fn into_inner(self: Self) -> (W1, W2) { [INFO] [stdout] 65 + pub fn into_inner(self) -> (W1, W2) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> packages/downloader/src/util.rs:140:19 [INFO] [stdout] | [INFO] [stdout] 140 | fn into_inner(self: Self) -> W { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 140 - fn into_inner(self: Self) -> W { [INFO] [stdout] 140 + fn into_inner(self) -> W { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DownloadResponse` [INFO] [stdout] --> packages/downloader/src/lib.rs:12:23 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::download::{DownloadResponse, Downloader}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HTTPReqwester` [INFO] [stdout] --> packages/downloader/src/lib.rs:14:29 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::http::{HTTPPool, HTTPReqwester}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BlobIdTocIndex`, `BlobIdsTocIndexes`, and `TocIndex as NewTocIndex` [INFO] [stdout] --> packages/downloader/src/lib.rs:18:34 [INFO] [stdout] | [INFO] [stdout] 18 | use nydus_bootstrap::bootstrap::{BlobIdTocIndex, BlobIdsTocIndexes, TocIndex as NewTocIndex}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HashSet` [INFO] [stdout] --> packages/downloader/src/lib.rs:19:33 [INFO] [stdout] | [INFO] [stdout] 19 | use std::collections::{HashMap, HashSet}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `nydus_bootstrap::stargz::TocEntry` [INFO] [stdout] --> packages/downloader/src/lib.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | use nydus_bootstrap::stargz::TocEntry; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::MultiWriter` [INFO] [stdout] --> packages/downloader/src/lib.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use crate::util::MultiWriter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> packages/downloader/src/lib.rs:29:1 [INFO] [stdout] | [INFO] [stdout] 29 | use tokio; [INFO] [stdout] | ^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AsyncRead` and `AsyncWrite` [INFO] [stdout] --> packages/downloader/src/lib.rs:30:17 [INFO] [stdout] | [INFO] [stdout] 30 | use tokio::io::{AsyncRead, AsyncWrite}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::Sender` [INFO] [stdout] --> packages/downloader/src/lib.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | use tokio::sync::mpsc::Sender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> packages/downloader/src/lib.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::task::JoinHandle` [INFO] [stdout] --> packages/downloader/src/lib.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | use tokio::task::JoinHandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/pool.rs:60:26 [INFO] [stdout] | [INFO] [stdout] 60 | pub async fn execute(mut self) -> Result { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/pool.rs:60:26 [INFO] [stdout] | [INFO] [stdout] 60 | pub async fn execute(mut self) -> Result { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/download.rs:112:36 [INFO] [stdout] | [INFO] [stdout] 112 | let (store_request_sender, mut store_request_receiver) = [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/download.rs:112:36 [INFO] [stdout] | [INFO] [stdout] 112 | let (store_request_sender, mut store_request_receiver) = [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/lib.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | let mut downloader = Downloader::new(store, http_pool, toc_index_store.clone(), retry_time); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/lib.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | let mut downloader = Downloader::new(store, http_pool, toc_index_store.clone(), retry_time); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::Buf` [INFO] [stdout] --> packages/downloader/src/store/store.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | use bytes::Buf; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> packages/downloader/src/download.rs:35:34 [INFO] [stdout] | [INFO] [stdout] 35 | PoolError::JoinError(e) => Error::BatchDownloadError(None), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::Buf` [INFO] [stdout] --> packages/downloader/src/store/store.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | use bytes::Buf; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> packages/downloader/src/download.rs:35:34 [INFO] [stdout] | [INFO] [stdout] 35 | PoolError::JoinError(e) => Error::BatchDownloadError(None), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bucket_size` [INFO] [stdout] --> packages/downloader/src/download.rs:291:13 [INFO] [stdout] | [INFO] [stdout] 291 | let bucket_size = metadata.len(); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bucket_size` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/download.rs:421:13 [INFO] [stdout] | [INFO] [stdout] 421 | let mut content = String::from_utf8(buf).unwrap(); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bucket_size` [INFO] [stdout] --> packages/downloader/src/download.rs:362:13 [INFO] [stdout] | [INFO] [stdout] 362 | let bucket_size = metadata.len(); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bucket_size` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/http/reqwester.rs:45:9 [INFO] [stdout] | [INFO] [stdout] 45 | mut client_builder: reqwest::ClientBuilder, [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/pool.rs:234:21 [INFO] [stdout] | [INFO] [stdout] 234 | let mut executors = executors.into_inner(); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `res` [INFO] [stdout] --> packages/downloader/src/store/bucket.rs:184:13 [INFO] [stdout] | [INFO] [stdout] 184 | let res = store.add_package(&pkg, tar_file).await; [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_res` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/http/reqwester.rs:45:9 [INFO] [stdout] | [INFO] [stdout] 45 | mut client_builder: reqwest::ClientBuilder, [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | mut inner_toc_map_string: String, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/pool.rs:234:21 [INFO] [stdout] | [INFO] [stdout] 234 | let mut executors = executors.into_inner(); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | mut inner_toc_index_string: String, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:74:31 [INFO] [stdout] | [INFO] [stdout] 74 | .map_err(|e| Error::FormatError(String::from("parse toc index file failed")))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:71:27 [INFO] [stdout] | [INFO] [stdout] 71 | .map_err(|e| Error::FormatError(String::from("parse toc map file failed")))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:110:13 [INFO] [stdout] | [INFO] [stdout] 110 | let mut inner = self.inner.lock().expect("toc index store lock failed"); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:116:13 [INFO] [stdout] | [INFO] [stdout] 116 | let mut inner = self.inner.lock().expect("toc index store lock failed"); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | mut toc_index: TocIndex<'static>, [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:115:9 [INFO] [stdout] | [INFO] [stdout] 115 | mut self: Pin<&mut Self>, [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 116 | cx: &mut Context<'_>, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bufs` [INFO] [stdout] --> packages/downloader/src/util.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | bufs: &[IoSlice<'_>], [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_bufs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:189:9 [INFO] [stdout] | [INFO] [stdout] 189 | mut self: Pin<&mut Self>, [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:190:9 [INFO] [stdout] | [INFO] [stdout] 190 | cx: &mut Context<'_>, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bufs` [INFO] [stdout] --> packages/downloader/src/util.rs:191:9 [INFO] [stdout] | [INFO] [stdout] 191 | bufs: &[IoSlice<'_>], [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_bufs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:218:9 [INFO] [stdout] | [INFO] [stdout] 218 | cx: &mut Context<'_>, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:225:19 [INFO] [stdout] | [INFO] [stdout] 225 | fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:225:45 [INFO] [stdout] | [INFO] [stdout] 225 | fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:229:22 [INFO] [stdout] | [INFO] [stdout] 229 | fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:229:48 [INFO] [stdout] | [INFO] [stdout] 229 | fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:234:9 [INFO] [stdout] | [INFO] [stdout] 234 | mut self: Pin<&mut Self>, [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:235:9 [INFO] [stdout] | [INFO] [stdout] 235 | cx: &mut Context<'_>, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bufs` [INFO] [stdout] --> packages/downloader/src/util.rs:236:9 [INFO] [stdout] | [INFO] [stdout] 236 | bufs: &[IoSlice<'_>], [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_bufs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:507:19 [INFO] [stdout] | [INFO] [stdout] 507 | fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:507:45 [INFO] [stdout] | [INFO] [stdout] 507 | fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:511:22 [INFO] [stdout] | [INFO] [stdout] 511 | fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:511:48 [INFO] [stdout] | [INFO] [stdout] 511 | fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:516:9 [INFO] [stdout] | [INFO] [stdout] 516 | mut self: Pin<&mut Self>, [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:517:9 [INFO] [stdout] | [INFO] [stdout] 517 | cx: &mut Context<'_>, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bufs` [INFO] [stdout] --> packages/downloader/src/util.rs:518:9 [INFO] [stdout] | [INFO] [stdout] 518 | bufs: &[IoSlice<'_>], [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_bufs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> packages/downloader/src/lib.rs:103:13 [INFO] [stdout] | [INFO] [stdout] 103 | let result = download( [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `max_concurrent` is never read [INFO] [stdout] --> packages/downloader/src/http/pool.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct HTTPPool { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 19 | max_concurrent: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Scripts` is never constructed [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Scripts { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Package` is never constructed [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct Package { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PreInstallScript` is never constructed [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct PreInstallScript { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PostInstallScript` is never constructed [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 27 | pub struct PostInstallScript { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Setup` is never used [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:34:7 [INFO] [stdout] | [INFO] [stdout] 34 | trait Setup { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `InstallScripts` is never constructed [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:78:12 [INFO] [stdout] | [INFO] [stdout] 78 | pub struct InstallScripts { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `merge`, and `update` are never used [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:84:8 [INFO] [stdout] | [INFO] [stdout] 83 | impl InstallScripts { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 84 | fn new() -> InstallScripts { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | fn merge(&mut self, install_scripts: InstallScripts) -> &mut InstallScripts { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | fn update(&mut self, root: PathBuf, pkg: Package) -> &mut InstallScripts { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Mock` is never used [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:125:7 [INFO] [stdout] | [INFO] [stdout] 125 | trait Mock { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_install_scripts` is never used [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:157:4 [INFO] [stdout] | [INFO] [stdout] 157 | fn test_install_scripts() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `execute` is never used [INFO] [stdout] --> packages/downloader/src/pool.rs:92:18 [INFO] [stdout] | [INFO] [stdout] 83 | impl Pool { [INFO] [stdout] | ----------------------------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 92 | pub async fn execute(&self, command: T::Command) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `holder` is never read [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 35 | struct TocIndexStoreInner<'a> { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] 36 | holder: Option>>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TocIndexStoreInner` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> packages/downloader/src/download.rs:154:24 [INFO] [stdout] | [INFO] [stdout] 154 | if let Err(_) = store_request_sender [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 154 ~ if store_request_sender [INFO] [stdout] 155 + .send(NpmBucketStoreExecuteCommand { [INFO] [stdout] 156 + request: pkg_request, [INFO] [stdout] 157 + reader: Box::new(reader) as Box, [INFO] [stdout] 158 + }) [INFO] [stdout] 159 + .await.is_err() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/downloader/src/http/reqwester.rs:54:17 [INFO] [stdout] | [INFO] [stdout] 54 | / IoError::new( [INFO] [stdout] 55 | | IoErrorKind::Other, [INFO] [stdout] 56 | | format!("not found address for {}", address), [INFO] [stdout] 57 | | ) [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 54 ~ IoError::other( [INFO] [stdout] 55 ~ format!("not found address for {}", address), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/downloader/src/http/reqwester.rs:78:24 [INFO] [stdout] | [INFO] [stdout] 78 | return Err(IoError::new( [INFO] [stdout] | ________________________^ [INFO] [stdout] 79 | | IoErrorKind::Other, [INFO] [stdout] 80 | | format!("request {} failed: {}", pkg_request.url(), res.status()), [INFO] [stdout] 81 | | )); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 78 ~ return Err(IoError::other( [INFO] [stdout] 79 ~ format!("request {} failed: {}", pkg_request.url(), res.status()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary operation [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | &self.preinstalls.extend(install_scripts.preinstalls); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: statement can be reduced to: `self.preinstalls.extend(install_scripts.preinstalls);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stdout] = note: `#[warn(clippy::unnecessary_operation)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary operation [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | &self.postinstalls.extend(install_scripts.postinstalls); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: statement can be reduced to: `self.postinstalls.extend(install_scripts.postinstalls);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> packages/downloader/src/meta/lock.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | pkg_map.into_iter().map(|(_, pkg)| pkg).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `pkg_map.into_values()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `PackageRequestBuilder` [INFO] [stdout] --> packages/downloader/src/meta/package.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | / pub fn new() -> Self { [INFO] [stdout] 32 | | PackageRequestBuilder { [INFO] [stdout] 33 | | name: None, [INFO] [stdout] 34 | | version: None, [INFO] [stdout] ... | [INFO] [stdout] 38 | | } [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] 19 + impl Default for PackageRequestBuilder { [INFO] [stdout] 20 + fn default() -> Self { [INFO] [stdout] 21 + Self::new() [INFO] [stdout] 22 + } [INFO] [stdout] 23 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> packages/downloader/src/pool.rs:98:19 [INFO] [stdout] | [INFO] [stdout] 98 | handlers: Vec< [INFO] [stdout] | ___________________^ [INFO] [stdout] 99 | | JoinHandle< [INFO] [stdout] 100 | | Result<(), PoolExecutorError<::CommandDesc, T::ErrorType>>, [INFO] [stdout] 101 | | >, [INFO] [stdout] 102 | | >, [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: length comparison to zero [INFO] [stdout] --> packages/downloader/src/pool.rs:113:20 [INFO] [stdout] | [INFO] [stdout] 113 | if failed_list.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `failed_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> packages/downloader/src/pool.rs:134:26 [INFO] [stdout] | [INFO] [stdout] 134 | let handler: JoinHandle< [INFO] [stdout] | __________________________^ [INFO] [stdout] 135 | | Result<(), PoolExecutorError<::CommandDesc, T::ErrorType>>, [INFO] [stdout] 136 | | > = tokio::spawn(async move { [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] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> packages/downloader/src/pool.rs:161:26 [INFO] [stdout] | [INFO] [stdout] 161 | let handler: JoinHandle< [INFO] [stdout] | __________________________^ [INFO] [stdout] 162 | | Result<(), PoolExecutorError<::CommandDesc, T::ErrorType>>, [INFO] [stdout] 163 | | > = tokio::spawn(async move { [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] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> packages/downloader/src/pool.rs:238:42 [INFO] [stdout] | [INFO] [stdout] 238 | Err(_) => Err(Error::ArcBusy(format!("Pool has job not finish"))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Pool has job not finish".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/downloader/src/store/digest.rs:38:22 [INFO] [stdout] | [INFO] [stdout] 38 | _ => Err(Error::new( [INFO] [stdout] | ______________________^ [INFO] [stdout] 39 | | ErrorKind::Other, [INFO] [stdout] 40 | | "digest algorithm should be blake3 or sha256", [INFO] [stdout] 41 | | )), [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 38 ~ _ => Err(Error::other( [INFO] [stdout] 39 ~ "digest algorithm should be blake3 or sha256", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> packages/downloader/src/store/digest.rs:128:1 [INFO] [stdout] | [INFO] [stdout] 128 | impl Into for RafsDigest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 128 ~ impl From for String { [INFO] [stdout] 129 ~ fn from(val: RafsDigest) -> Self { [INFO] [stdout] 130 ~ format!("{}", val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> packages/downloader/src/store/mod.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | mod store; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stdout] --> packages/downloader/src/store/store.rs:137:17 [INFO] [stdout] | [INFO] [stdout] 137 | index as u8, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> packages/downloader/src/store/store.rs:192:50 [INFO] [stdout] | [INFO] [stdout] 192 | let file_path = self.bucket_dir.join(&bucket_name); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `bucket_name` [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: slow zero-filling initialization [INFO] [stdout] --> packages/downloader/src/store/store.rs:203:44 [INFO] [stdout] | [INFO] [stdout] 203 | let mut buf: Vec = Vec::with_capacity(size); [INFO] [stdout] | ____________________________________________^ [INFO] [stdout] 204 | | buf.resize(size, 0); [INFO] [stdout] | |_______________________________________^ help: consider replacing this with: `vec![0; size]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stdout] = note: `#[warn(clippy::slow_vector_initialization)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | mut inner_toc_map_string: String, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | mut inner_toc_index_string: String, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:74:31 [INFO] [stdout] | [INFO] [stdout] 74 | .map_err(|e| Error::FormatError(String::from("parse toc index file failed")))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:71:27 [INFO] [stdout] | [INFO] [stdout] 71 | .map_err(|e| Error::FormatError(String::from("parse toc map file failed")))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:110:13 [INFO] [stdout] | [INFO] [stdout] 110 | let mut inner = self.inner.lock().expect("toc index store lock failed"); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:116:13 [INFO] [stdout] | [INFO] [stdout] 116 | let mut inner = self.inner.lock().expect("toc index store lock failed"); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | mut toc_index: TocIndex<'static>, [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:115:9 [INFO] [stdout] | [INFO] [stdout] 115 | mut self: Pin<&mut Self>, [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 116 | cx: &mut Context<'_>, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bufs` [INFO] [stdout] --> packages/downloader/src/util.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | bufs: &[IoSlice<'_>], [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_bufs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:189:9 [INFO] [stdout] | [INFO] [stdout] 189 | mut self: Pin<&mut Self>, [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:190:9 [INFO] [stdout] | [INFO] [stdout] 190 | cx: &mut Context<'_>, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bufs` [INFO] [stdout] --> packages/downloader/src/util.rs:191:9 [INFO] [stdout] | [INFO] [stdout] 191 | bufs: &[IoSlice<'_>], [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_bufs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:218:9 [INFO] [stdout] | [INFO] [stdout] 218 | cx: &mut Context<'_>, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:225:19 [INFO] [stdout] | [INFO] [stdout] 225 | fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:225:45 [INFO] [stdout] | [INFO] [stdout] 225 | fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:229:22 [INFO] [stdout] | [INFO] [stdout] 229 | fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:229:48 [INFO] [stdout] | [INFO] [stdout] 229 | fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:234:9 [INFO] [stdout] | [INFO] [stdout] 234 | mut self: Pin<&mut Self>, [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:235:9 [INFO] [stdout] | [INFO] [stdout] 235 | cx: &mut Context<'_>, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bufs` [INFO] [stdout] --> packages/downloader/src/util.rs:236:9 [INFO] [stdout] | [INFO] [stdout] 236 | bufs: &[IoSlice<'_>], [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_bufs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:507:19 [INFO] [stdout] | [INFO] [stdout] 507 | fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:507:45 [INFO] [stdout] | [INFO] [stdout] 507 | fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:511:22 [INFO] [stdout] | [INFO] [stdout] 511 | fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:511:48 [INFO] [stdout] | [INFO] [stdout] 511 | fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/downloader/src/util.rs:516:9 [INFO] [stdout] | [INFO] [stdout] 516 | mut self: Pin<&mut Self>, [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> packages/downloader/src/util.rs:517:9 [INFO] [stdout] | [INFO] [stdout] 517 | cx: &mut Context<'_>, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bufs` [INFO] [stdout] --> packages/downloader/src/util.rs:518:9 [INFO] [stdout] | [INFO] [stdout] 518 | bufs: &[IoSlice<'_>], [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_bufs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `max_concurrent` is never read [INFO] [stdout] --> packages/downloader/src/http/pool.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct HTTPPool { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 19 | max_concurrent: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Scripts` is never constructed [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Scripts { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Package` is never constructed [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct Package { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PreInstallScript` is never constructed [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct PreInstallScript { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PostInstallScript` is never constructed [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 27 | pub struct PostInstallScript { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Setup` is never used [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:34:7 [INFO] [stdout] | [INFO] [stdout] 34 | trait Setup { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `InstallScripts` is never constructed [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:78:12 [INFO] [stdout] | [INFO] [stdout] 78 | pub struct InstallScripts { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `merge`, and `update` are never used [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:84:8 [INFO] [stdout] | [INFO] [stdout] 83 | impl InstallScripts { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 84 | fn new() -> InstallScripts { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | fn merge(&mut self, install_scripts: InstallScripts) -> &mut InstallScripts { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | fn update(&mut self, root: PathBuf, pkg: Package) -> &mut InstallScripts { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `execute` is never used [INFO] [stdout] --> packages/downloader/src/pool.rs:92:18 [INFO] [stdout] | [INFO] [stdout] 83 | impl Pool { [INFO] [stdout] | ----------------------------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 92 | pub async fn execute(&self, command: T::Command) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_download_url` is never used [INFO] [stdout] --> packages/downloader/src/test.rs:5:8 [INFO] [stdout] | [INFO] [stdout] 5 | pub fn get_download_url() -> Vec<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `holder` is never read [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 35 | struct TocIndexStoreInner<'a> { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] 36 | holder: Option>>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TocIndexStoreInner` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> packages/downloader/src/store/tar.rs:139:70 [INFO] [stdout] | [INFO] [stdout] 139 | entry.digest = Cow::Owned(format!("sha256:{}", digest.to_string())); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> packages/downloader/src/download.rs:154:24 [INFO] [stdout] | [INFO] [stdout] 154 | if let Err(_) = store_request_sender [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 154 ~ if store_request_sender [INFO] [stdout] 155 + .send(NpmBucketStoreExecuteCommand { [INFO] [stdout] 156 + request: pkg_request, [INFO] [stdout] 157 + reader: Box::new(reader) as Box, [INFO] [stdout] 158 + }) [INFO] [stdout] 159 + .await.is_err() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> packages/downloader/src/store/tar.rs:161:49 [INFO] [stdout] | [INFO] [stdout] 161 | let digest = format!("sha256:{}", digest.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/downloader/src/http/reqwester.rs:54:17 [INFO] [stdout] | [INFO] [stdout] 54 | / IoError::new( [INFO] [stdout] 55 | | IoErrorKind::Other, [INFO] [stdout] 56 | | format!("not found address for {}", address), [INFO] [stdout] 57 | | ) [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 54 ~ IoError::other( [INFO] [stdout] 55 ~ format!("not found address for {}", address), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `TocIndexStore` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 88 | / pub fn new() -> Self { [INFO] [stdout] 89 | | TocIndexStore { [INFO] [stdout] 90 | | inner: Mutex::new(TocIndexStoreInner::new()), [INFO] [stdout] 91 | | } [INFO] [stdout] 92 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 87 + impl Default for TocIndexStore { [INFO] [stdout] 88 + fn default() -> Self { [INFO] [stdout] 89 + Self::new() [INFO] [stdout] 90 + } [INFO] [stdout] 91 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/downloader/src/http/reqwester.rs:78:24 [INFO] [stdout] | [INFO] [stdout] 78 | return Err(IoError::new( [INFO] [stdout] | ________________________^ [INFO] [stdout] 79 | | IoErrorKind::Other, [INFO] [stdout] 80 | | format!("request {} failed: {}", pkg_request.url(), res.status()), [INFO] [stdout] 81 | | )); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 78 ~ return Err(IoError::other( [INFO] [stdout] 79 ~ format!("request {} failed: {}", pkg_request.url(), res.status()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary operation [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | &self.preinstalls.extend(install_scripts.preinstalls); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: statement can be reduced to: `self.preinstalls.extend(install_scripts.preinstalls);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stdout] = note: `#[warn(clippy::unnecessary_operation)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary operation [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | &self.postinstalls.extend(install_scripts.postinstalls); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: statement can be reduced to: `self.postinstalls.extend(install_scripts.postinstalls);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/downloader/src/util.rs:160:17 [INFO] [stdout] | [INFO] [stdout] 160 | return Poll::Ready(Ok(buf_len)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 160 - return Poll::Ready(Ok(buf_len)); [INFO] [stdout] 160 + Poll::Ready(Ok(buf_len)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> packages/downloader/src/meta/lock.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | pkg_map.into_iter().map(|(_, pkg)| pkg).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `pkg_map.into_values()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/downloader/src/util.rs:164:17 [INFO] [stdout] | [INFO] [stdout] 164 | return Poll::Ready(Ok(buf_len)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 164 - return Poll::Ready(Ok(buf_len)); [INFO] [stdout] 164 + Poll::Ready(Ok(buf_len)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `PackageRequestBuilder` [INFO] [stdout] --> packages/downloader/src/meta/package.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | / pub fn new() -> Self { [INFO] [stdout] 32 | | PackageRequestBuilder { [INFO] [stdout] 33 | | name: None, [INFO] [stdout] 34 | | version: None, [INFO] [stdout] ... | [INFO] [stdout] 38 | | } [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] 19 + impl Default for PackageRequestBuilder { [INFO] [stdout] 20 + fn default() -> Self { [INFO] [stdout] 21 + Self::new() [INFO] [stdout] 22 + } [INFO] [stdout] 23 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `BufWriter` [INFO] [stdout] --> packages/downloader/src/util.rs:206:5 [INFO] [stdout] | [INFO] [stdout] 206 | / pub fn new() -> Self { [INFO] [stdout] 207 | | BufWriter { buf: Vec::new() } [INFO] [stdout] 208 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 205 + impl Default for BufWriter { [INFO] [stdout] 206 + fn default() -> Self { [INFO] [stdout] 207 + Self::new() [INFO] [stdout] 208 + } [INFO] [stdout] 209 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implementation of inherent method `to_string(&self) -> String` for type `util::HashWriter` [INFO] [stdout] --> packages/downloader/src/util.rs:269:5 [INFO] [stdout] | [INFO] [stdout] 269 | / pub fn to_string(&self) -> String { [INFO] [stdout] 270 | | String::from(std::str::from_utf8(&*self.buf).unwrap()) [INFO] [stdout] 271 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: implement trait `Display` for type `util::HashWriter` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inherent_to_string [INFO] [stdout] = note: `#[warn(clippy::inherent_to_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> packages/downloader/src/util.rs:270:42 [INFO] [stdout] | [INFO] [stdout] 270 | String::from(std::str::from_utf8(&*self.buf).unwrap()) [INFO] [stdout] | ^^^^^^^^^^ help: try: `&self.buf` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> packages/downloader/src/pool.rs:98:19 [INFO] [stdout] | [INFO] [stdout] 98 | handlers: Vec< [INFO] [stdout] | ___________________^ [INFO] [stdout] 99 | | JoinHandle< [INFO] [stdout] 100 | | Result<(), PoolExecutorError<::CommandDesc, T::ErrorType>>, [INFO] [stdout] 101 | | >, [INFO] [stdout] 102 | | >, [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: length comparison to zero [INFO] [stdout] --> packages/downloader/src/pool.rs:113:20 [INFO] [stdout] | [INFO] [stdout] 113 | if failed_list.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `failed_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> packages/downloader/src/pool.rs:134:26 [INFO] [stdout] | [INFO] [stdout] 134 | let handler: JoinHandle< [INFO] [stdout] | __________________________^ [INFO] [stdout] 135 | | Result<(), PoolExecutorError<::CommandDesc, T::ErrorType>>, [INFO] [stdout] 136 | | > = tokio::spawn(async move { [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] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `BadBufWriter` [INFO] [stdout] --> packages/downloader/src/util.rs:473:5 [INFO] [stdout] | [INFO] [stdout] 473 | / pub fn new() -> Self { [INFO] [stdout] 474 | | BadBufWriter { [INFO] [stdout] 475 | | buf: Vec::new(), [INFO] [stdout] 476 | | write_count: 0, [INFO] [stdout] 477 | | } [INFO] [stdout] 478 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 472 + impl Default for BadBufWriter { [INFO] [stdout] 473 + fn default() -> Self { [INFO] [stdout] 474 + Self::new() [INFO] [stdout] 475 + } [INFO] [stdout] 476 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> packages/downloader/src/util.rs:493:12 [INFO] [stdout] | [INFO] [stdout] 493 | if count % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace with: `count.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> packages/downloader/src/pool.rs:161:26 [INFO] [stdout] | [INFO] [stdout] 161 | let handler: JoinHandle< [INFO] [stdout] | __________________________^ [INFO] [stdout] 162 | | Result<(), PoolExecutorError<::CommandDesc, T::ErrorType>>, [INFO] [stdout] 163 | | > = tokio::spawn(async move { [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] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/channel.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | sx_list[sx_index].send(msg).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 19 | let _ = sx_list[sx_index].send(msg).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused borrow that must be used [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | &self.preinstalls.extend(install_scripts.preinstalls); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value [INFO] [stdout] | [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 92 | let _ = &self.preinstalls.extend(install_scripts.preinstalls); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused borrow that must be used [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | &self.postinstalls.extend(install_scripts.postinstalls); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value [INFO] [stdout] | [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 93 | let _ = &self.postinstalls.extend(install_scripts.postinstalls); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> packages/downloader/src/pool.rs:238:42 [INFO] [stdout] | [INFO] [stdout] 238 | Err(_) => Err(Error::ArcBusy(format!("Pool has job not finish"))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Pool has job not finish".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/pool.rs:217:9 [INFO] [stdout] | [INFO] [stdout] 217 | rx.await; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 217 | let _ = rx.await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/pool.rs:225:13 [INFO] [stdout] | [INFO] [stdout] 225 | waiter.send(()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 225 | let _ = waiter.send(()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/store/listener.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | self.sender.send(Some(entry)).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 40 | let _ = self.sender.send(Some(entry)).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/store/listener.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | self.sender.send(None).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 47 | let _ = self.sender.send(None).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> packages/downloader/src/store/digest.rs:38:22 [INFO] [stdout] | [INFO] [stdout] 38 | _ => Err(Error::new( [INFO] [stdout] | ______________________^ [INFO] [stdout] 39 | | ErrorKind::Other, [INFO] [stdout] 40 | | "digest algorithm should be blake3 or sha256", [INFO] [stdout] 41 | | )), [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 38 ~ _ => Err(Error::other( [INFO] [stdout] 39 ~ "digest algorithm should be blake3 or sha256", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> packages/downloader/src/store/digest.rs:128:1 [INFO] [stdout] | [INFO] [stdout] 128 | impl Into for RafsDigest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 128 ~ impl From for String { [INFO] [stdout] 129 ~ fn from(val: RafsDigest) -> Self { [INFO] [stdout] 130 ~ format!("{}", val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> packages/downloader/src/store/mod.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | mod store; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stdout] --> packages/downloader/src/store/store.rs:137:17 [INFO] [stdout] | [INFO] [stdout] 137 | index as u8, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> packages/downloader/src/store/store.rs:192:50 [INFO] [stdout] | [INFO] [stdout] 192 | let file_path = self.bucket_dir.join(&bucket_name); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `bucket_name` [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: slow zero-filling initialization [INFO] [stdout] --> packages/downloader/src/store/store.rs:203:44 [INFO] [stdout] | [INFO] [stdout] 203 | let mut buf: Vec = Vec::with_capacity(size); [INFO] [stdout] | ____________________________________________^ [INFO] [stdout] 204 | | buf.resize(size, 0); [INFO] [stdout] | |_______________________________________^ help: consider replacing this with: `vec![0; size]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stdout] = note: `#[warn(clippy::slow_vector_initialization)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> packages/downloader/src/store/tar.rs:139:70 [INFO] [stdout] | [INFO] [stdout] 139 | entry.digest = Cow::Owned(format!("sha256:{}", digest.to_string())); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `TocIndexStore` [INFO] [stdout] --> packages/downloader/src/toc_index_store.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 88 | / pub fn new() -> Self { [INFO] [stdout] 89 | | TocIndexStore { [INFO] [stdout] 90 | | inner: Mutex::new(TocIndexStoreInner::new()), [INFO] [stdout] 91 | | } [INFO] [stdout] 92 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 87 + impl Default for TocIndexStore { [INFO] [stdout] 88 + fn default() -> Self { [INFO] [stdout] 89 + Self::new() [INFO] [stdout] 90 + } [INFO] [stdout] 91 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/downloader/src/util.rs:160:17 [INFO] [stdout] | [INFO] [stdout] 160 | return Poll::Ready(Ok(buf_len)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 160 - return Poll::Ready(Ok(buf_len)); [INFO] [stdout] 160 + Poll::Ready(Ok(buf_len)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> packages/downloader/src/util.rs:164:17 [INFO] [stdout] | [INFO] [stdout] 164 | return Poll::Ready(Ok(buf_len)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 164 - return Poll::Ready(Ok(buf_len)); [INFO] [stdout] 164 + Poll::Ready(Ok(buf_len)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `BufWriter` [INFO] [stdout] --> packages/downloader/src/util.rs:206:5 [INFO] [stdout] | [INFO] [stdout] 206 | / pub fn new() -> Self { [INFO] [stdout] 207 | | BufWriter { buf: Vec::new() } [INFO] [stdout] 208 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 205 + impl Default for BufWriter { [INFO] [stdout] 206 + fn default() -> Self { [INFO] [stdout] 207 + Self::new() [INFO] [stdout] 208 + } [INFO] [stdout] 209 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implementation of inherent method `to_string(&self) -> String` for type `util::HashWriter` [INFO] [stdout] --> packages/downloader/src/util.rs:269:5 [INFO] [stdout] | [INFO] [stdout] 269 | / pub fn to_string(&self) -> String { [INFO] [stdout] 270 | | String::from(std::str::from_utf8(&*self.buf).unwrap()) [INFO] [stdout] 271 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: implement trait `Display` for type `util::HashWriter` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inherent_to_string [INFO] [stdout] = note: `#[warn(clippy::inherent_to_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> packages/downloader/src/util.rs:270:42 [INFO] [stdout] | [INFO] [stdout] 270 | String::from(std::str::from_utf8(&*self.buf).unwrap()) [INFO] [stdout] | ^^^^^^^^^^ help: try: `&self.buf` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `BadBufWriter` [INFO] [stdout] --> packages/downloader/src/util.rs:473:5 [INFO] [stdout] | [INFO] [stdout] 473 | / pub fn new() -> Self { [INFO] [stdout] 474 | | BadBufWriter { [INFO] [stdout] 475 | | buf: Vec::new(), [INFO] [stdout] 476 | | write_count: 0, [INFO] [stdout] 477 | | } [INFO] [stdout] 478 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 472 + impl Default for BadBufWriter { [INFO] [stdout] 473 + fn default() -> Self { [INFO] [stdout] 474 + Self::new() [INFO] [stdout] 475 + } [INFO] [stdout] 476 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> packages/downloader/src/util.rs:493:12 [INFO] [stdout] | [INFO] [stdout] 493 | if count % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace with: `count.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/channel.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | sx_list[sx_index].send(msg).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 19 | let _ = sx_list[sx_index].send(msg).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused borrow that must be used [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | &self.preinstalls.extend(install_scripts.preinstalls); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value [INFO] [stdout] | [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 92 | let _ = &self.preinstalls.extend(install_scripts.preinstalls); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused borrow that must be used [INFO] [stdout] --> packages/downloader/src/meta/install_scripts.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | &self.postinstalls.extend(install_scripts.postinstalls); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value [INFO] [stdout] | [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 93 | let _ = &self.postinstalls.extend(install_scripts.postinstalls); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/pool.rs:217:9 [INFO] [stdout] | [INFO] [stdout] 217 | rx.await; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 217 | let _ = rx.await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/pool.rs:225:13 [INFO] [stdout] | [INFO] [stdout] 225 | waiter.send(()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 225 | let _ = waiter.send(()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/store/listener.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | self.sender.send(Some(entry)).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 40 | let _ = self.sender.send(Some(entry)).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/store/listener.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | self.sender.send(None).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 47 | let _ = self.sender.send(None).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `noop` [INFO] [stdout] --> packages/binding/src/lib.rs:217:1 [INFO] [stdout] | [INFO] [stdout] 217 | #[napi] [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: no expected values for `feature` [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `napi` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `napi` may come from an old version of the `napi_derive` crate, try updating your dependency with `cargo update -p napi_derive` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the attribute macro `napi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CallContext`, `Callback`, and `NapiRaw` [INFO] [stdout] --> packages/binding/src/lib.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | use napi::{CallContext, Callback, Env, Error, JsFunction, JsObject, NapiRaw, Status}; [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: `downloader::error::Error as TnpmError` [INFO] [stdout] --> packages/binding/src/lib.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use downloader::error::Error as TnpmError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HTTPReqwester` [INFO] [stdout] --> packages/binding/src/lib.rs:9:34 [INFO] [stdout] | [INFO] [stdout] 9 | use downloader::http::{HTTPPool, HTTPReqwester}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TocIndex` [INFO] [stdout] --> packages/binding/src/lib.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | TocIndex, TocPath, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `napi::sys::napi_value` [INFO] [stdout] --> packages/binding/src/lib.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use napi::sys::napi_value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> packages/binding/src/lib.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt::format` [INFO] [stdout] --> packages/binding/src/lib.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use std::fmt::format; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `noop` [INFO] [stdout] --> packages/binding/src/lib.rs:243:1 [INFO] [stdout] | [INFO] [stdout] 243 | #[napi(js_name = "Downloader")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: no expected values for `feature` [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `napi` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `napi` may come from an old version of the `napi_derive` crate, try updating your dependency with `cargo update -p napi_derive` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `napi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `noop` [INFO] [stdout] --> packages/binding/src/lib.rs:250:1 [INFO] [stdout] | [INFO] [stdout] 250 | #[napi] [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: no expected values for `feature` [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `napi` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `napi` may come from an old version of the `napi_derive` crate, try updating your dependency with `cargo update -p napi_derive` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `napi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `noop` [INFO] [stdout] --> packages/binding/src/lib.rs:372:1 [INFO] [stdout] | [INFO] [stdout] 372 | #[napi(js_name = "Fcntl")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: no expected values for `feature` [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `napi` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `napi` may come from an old version of the `napi_derive` crate, try updating your dependency with `cargo update -p napi_derive` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `napi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `noop` [INFO] [stdout] --> packages/binding/src/lib.rs:377:1 [INFO] [stdout] | [INFO] [stdout] 377 | #[napi] [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: no expected values for `feature` [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `napi` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `napi` may come from an old version of the `napi_derive` crate, try updating your dependency with `cargo update -p napi_derive` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `napi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/binding/src/lib.rs:200:14 [INFO] [stdout] | [INFO] [stdout] 200 | let (sx, mut rx) = tokio::sync::mpsc::channel(1); [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> packages/binding/src/lib.rs:212:20 [INFO] [stdout] | [INFO] [stdout] 212 | |&mut env, data: ()| env.get_undefined(), [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `downloader::error::Result` [INFO] [stdout] --> packages/downloader/src/main.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use downloader::error::Result; [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: `HTTPReqwester` [INFO] [stdout] --> packages/downloader/src/main.rs:4:34 [INFO] [stdout] | [INFO] [stdout] 4 | use downloader::http::{HTTPPool, HTTPReqwester}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `downloader::store::NpmBucketStoreExecuteResult` [INFO] [stdout] --> packages/downloader/src/main.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use downloader::store::NpmBucketStoreExecuteResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `downloader::store::TocIndex` [INFO] [stdout] --> packages/downloader/src/main.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use downloader::store::TocIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `noop` [INFO] [stdout] --> packages/binding/src/lib.rs:217:1 [INFO] [stdout] | [INFO] [stdout] 217 | #[napi] [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: no expected values for `feature` [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `napi` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `napi` may come from an old version of the `napi_derive` crate, try updating your dependency with `cargo update -p napi_derive` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the attribute macro `napi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CallContext`, `Callback`, and `NapiRaw` [INFO] [stdout] --> packages/binding/src/lib.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | use napi::{CallContext, Callback, Env, Error, JsFunction, JsObject, NapiRaw, Status}; [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: `downloader::error::Error as TnpmError` [INFO] [stdout] --> packages/binding/src/lib.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use downloader::error::Error as TnpmError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HTTPReqwester` [INFO] [stdout] --> packages/binding/src/lib.rs:9:34 [INFO] [stdout] | [INFO] [stdout] 9 | use downloader::http::{HTTPPool, HTTPReqwester}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> packages/downloader/src/main.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TocIndex` [INFO] [stdout] --> packages/binding/src/lib.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | TocIndex, TocPath, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> packages/downloader/src/main.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SystemTime` [INFO] [stdout] --> packages/downloader/src/main.rs:16:27 [INFO] [stdout] | [INFO] [stdout] 16 | use std::time::{Duration, SystemTime}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> packages/downloader/src/main.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `napi::sys::napi_value` [INFO] [stdout] --> packages/binding/src/lib.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use napi::sys::napi_value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> packages/binding/src/lib.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt::format` [INFO] [stdout] --> packages/binding/src/lib.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use std::fmt::format; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `noop` [INFO] [stdout] --> packages/binding/src/lib.rs:243:1 [INFO] [stdout] | [INFO] [stdout] 243 | #[napi(js_name = "Downloader")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: no expected values for `feature` [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `napi` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `napi` may come from an old version of the `napi_derive` crate, try updating your dependency with `cargo update -p napi_derive` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `napi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `noop` [INFO] [stdout] --> packages/binding/src/lib.rs:250:1 [INFO] [stdout] | [INFO] [stdout] 250 | #[napi] [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: no expected values for `feature` [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `napi` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `napi` may come from an old version of the `napi_derive` crate, try updating your dependency with `cargo update -p napi_derive` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `napi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> packages/binding/src/lib.rs:307:24 [INFO] [stdout] | [INFO] [stdout] 307 | |&mut env, data| env.get_undefined(), [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `noop` [INFO] [stdout] --> packages/binding/src/lib.rs:372:1 [INFO] [stdout] | [INFO] [stdout] 372 | #[napi(js_name = "Fcntl")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: no expected values for `feature` [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `napi` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `napi` may come from an old version of the `napi_derive` crate, try updating your dependency with `cargo update -p napi_derive` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `napi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `noop` [INFO] [stdout] --> packages/binding/src/lib.rs:377:1 [INFO] [stdout] | [INFO] [stdout] 377 | #[napi] [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: no expected values for `feature` [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `napi` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `napi` may come from an old version of the `napi_derive` crate, try updating your dependency with `cargo update -p napi_derive` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `napi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `downloader::error::Result` [INFO] [stdout] --> packages/downloader/src/main.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use downloader::error::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `JsTocPath` is never constructed [INFO] [stdout] --> packages/binding/src/lib.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 33 | struct JsTocPath { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `JsDownloadOptions` is never constructed [INFO] [stdout] --> packages/binding/src/lib.rs:39:8 [INFO] [stdout] | [INFO] [stdout] 39 | struct JsDownloadOptions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `JsPackageRequest` is never constructed [INFO] [stdout] --> packages/binding/src/lib.rs:52:8 [INFO] [stdout] | [INFO] [stdout] 52 | struct JsPackageRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `JsPackageEntry` is never constructed [INFO] [stdout] --> packages/binding/src/lib.rs:61:8 [INFO] [stdout] | [INFO] [stdout] 61 | struct JsPackageEntry { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_download_options` is never used [INFO] [stdout] --> packages/binding/src/lib.rs:67:4 [INFO] [stdout] | [INFO] [stdout] 67 | fn parse_download_options( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_package_request` is never used [INFO] [stdout] --> packages/binding/src/lib.rs:132:4 [INFO] [stdout] | [INFO] [stdout] 132 | fn parse_package_request(request: JsPackageRequest) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_package_requests` is never used [INFO] [stdout] --> packages/binding/src/lib.rs:152:4 [INFO] [stdout] | [INFO] [stdout] 152 | fn parse_package_requests(requests: Vec) -> Result, Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `callback_new_entry` is never used [INFO] [stdout] --> packages/binding/src/lib.rs:161:4 [INFO] [stdout] | [INFO] [stdout] 161 | fn callback_new_entry(ctx: ThreadSafeCallContext) -> Result, Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_new_entry` is never used [INFO] [stdout] --> packages/binding/src/lib.rs:169:10 [INFO] [stdout] | [INFO] [stdout] 169 | async fn handle_new_entry( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_entry_listener` is never used [INFO] [stdout] --> packages/binding/src/lib.rs:191:4 [INFO] [stdout] | [INFO] [stdout] 191 | fn create_entry_listener( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `download` is never used [INFO] [stdout] --> packages/binding/src/lib.rs:218:4 [INFO] [stdout] | [INFO] [stdout] 218 | fn download( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `options`, `inner`, and `toc_index_store` are never read [INFO] [stdout] --> packages/binding/src/lib.rs:245:5 [INFO] [stdout] | [INFO] [stdout] 244 | struct JsDownloader { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 245 | options: DownloadOptions, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 246 | inner: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 247 | toc_index_store: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `init`, `download`, `batch_downloads`, `dump`, and `shutdown` are never used [INFO] [stdout] --> packages/binding/src/lib.rs:253:12 [INFO] [stdout] | [INFO] [stdout] 251 | impl JsDownloader { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 252 | #[napi(constructor)] [INFO] [stdout] 253 | pub fn new(env: Env, options: JsDownloadOptions) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 273 | pub fn init(&'static mut self, env: Env) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 312 | pub async fn download(&self, request: JsPackageRequest) -> Result<(), Error> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 330 | pub async fn batch_downloads(&self, js_requests: Vec) -> Result<(), Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 353 | pub fn dump(&self) -> String { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 359 | pub async fn shutdown(&mut self) -> Result<(), Error> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HTTPReqwester` [INFO] [stdout] --> packages/downloader/src/main.rs:4:34 [INFO] [stdout] | [INFO] [stdout] 4 | use downloader::http::{HTTPPool, HTTPReqwester}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `downloader::store::NpmBucketStoreExecuteResult` [INFO] [stdout] --> packages/downloader/src/main.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use downloader::store::NpmBucketStoreExecuteResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `downloader::store::TocIndex` [INFO] [stdout] --> packages/downloader/src/main.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use downloader::store::TocIndex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> packages/downloader/src/main.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> packages/downloader/src/main.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SystemTime` [INFO] [stdout] --> packages/downloader/src/main.rs:16:27 [INFO] [stdout] | [INFO] [stdout] 16 | use std::time::{Duration, SystemTime}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> packages/downloader/src/main.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `inner` is never read [INFO] [stdout] --> packages/binding/src/lib.rs:374:5 [INFO] [stdout] | [INFO] [stdout] 373 | struct JsFcntl { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 374 | inner: Fcntl, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `lock`, and `unlock` are never used [INFO] [stdout] --> packages/binding/src/lib.rs:380:12 [INFO] [stdout] | [INFO] [stdout] 378 | impl JsFcntl { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 379 | #[napi(constructor)] [INFO] [stdout] 380 | pub fn new(filepath: String) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 387 | pub fn lock(&mut self) -> Result<(), Error> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 392 | pub fn unlock(&mut self) -> Result<(), Error> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern reimplements `Option::unwrap_or` [INFO] [stdout] --> packages/binding/src/lib.rs:93:22 [INFO] [stdout] | [INFO] [stdout] 93 | let retry_time = if let Some(retry_time) = options.retry_time { [INFO] [stdout] | ______________________^ [INFO] [stdout] 94 | | retry_time [INFO] [stdout] 95 | | } else { [INFO] [stdout] 96 | | 3 [INFO] [stdout] 97 | | }; [INFO] [stdout] | |_____^ help: replace with: `options.retry_time.unwrap_or(3)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> packages/binding/src/lib.rs:177:24 [INFO] [stdout] | [INFO] [stdout] 177 | if let Ok(_) = (&mut entry.reader).read_to_string(&mut content).await { [INFO] [stdout] | -------^^^^^--------------------------------------------------------- help: try: `if (&mut entry.reader).read_to_string(&mut content).await.is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> packages/binding/src/lib.rs:177:32 [INFO] [stdout] | [INFO] [stdout] 177 | if let Ok(_) = (&mut entry.reader).read_to_string(&mut content).await { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.reader` [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: passing a unit value to a function [INFO] [stdout] --> packages/binding/src/lib.rs:388:9 [INFO] [stdout] | [INFO] [stdout] 388 | Ok(self.inner.lock().unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stdout] = note: `#[warn(clippy::unit_arg)]` on by default [INFO] [stdout] help: move the expression in front of the call and replace it with the unit literal `()` [INFO] [stdout] | [INFO] [stdout] 388 ~ self.inner.lock().unwrap(); [INFO] [stdout] 389 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: passing a unit value to a function [INFO] [stdout] --> packages/binding/src/lib.rs:393:9 [INFO] [stdout] | [INFO] [stdout] 393 | Ok(self.inner.unlock().unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stdout] help: move the expression in front of the call and replace it with the unit literal `()` [INFO] [stdout] | [INFO] [stdout] 393 ~ self.inner.unlock().unwrap(); [INFO] [stdout] 394 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/binding/src/lib.rs:163:5 [INFO] [stdout] | [INFO] [stdout] 163 | entry.set("pkgName", ctx.value.pkg_name); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 163 | let _ = entry.set("pkgName", ctx.value.pkg_name); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/binding/src/lib.rs:164:5 [INFO] [stdout] | [INFO] [stdout] 164 | entry.set("entryName", ctx.value.entry_name); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 164 | let _ = entry.set("entryName", ctx.value.entry_name); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/binding/src/lib.rs:165:5 [INFO] [stdout] | [INFO] [stdout] 165 | entry.set("content", ctx.value.content); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 165 | let _ = entry.set("content", ctx.value.content); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/binding/src/lib.rs:205:5 [INFO] [stdout] | [INFO] [stdout] 205 | / env.execute_tokio_future( [INFO] [stdout] 206 | | async move { [INFO] [stdout] 207 | | let entry_callback: ThreadsafeFunction = [INFO] [stdout] 208 | | entry_callback.clone(); [INFO] [stdout] ... | [INFO] [stdout] 212 | | |&mut env, data: ()| env.get_undefined(), [INFO] [stdout] 213 | | ); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 205 | let _ = env.execute_tokio_future( [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `black_hole_download` is never used [INFO] [stdout] --> packages/downloader/src/main.rs:22:10 [INFO] [stdout] | [INFO] [stdout] 22 | async fn black_hole_download() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `black_hole_download` is never used [INFO] [stdout] --> packages/downloader/src/main.rs:22:10 [INFO] [stdout] | [INFO] [stdout] 22 | async fn black_hole_download() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/main.rs:34:21 [INFO] [stdout] | [INFO] [stdout] 34 | tokio::io::copy(&mut response.reader, &mut black_hole).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 34 | let _ = tokio::io::copy(&mut response.reader, &mut black_hole).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/main.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | pool.batch_execute(pkg_requests, sx).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 39 | let _ = pool.batch_execute(pkg_requests, sx).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/main.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | entry.reader.read_to_string(&mut content).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 57 | let _ = entry.reader.read_to_string(&mut content).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/main.rs:34:21 [INFO] [stdout] | [INFO] [stdout] 34 | tokio::io::copy(&mut response.reader, &mut black_hole).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 34 | let _ = tokio::io::copy(&mut response.reader, &mut black_hole).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/main.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | pool.batch_execute(pkg_requests, sx).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 39 | let _ = pool.batch_execute(pkg_requests, sx).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/main.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | entry.reader.read_to_string(&mut content).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 57 | let _ = entry.reader.read_to_string(&mut content).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/main.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | downloader.batch_download(pkg_requests).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 75 | let _ = downloader.batch_download(pkg_requests).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/downloader/src/main.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | downloader.batch_download(pkg_requests).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 75 | let _ = downloader.batch_download(pkg_requests).await; [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> packages/binding/src/lib.rs:200:14 [INFO] [stdout] | [INFO] [stdout] 200 | let (sx, mut rx) = tokio::sync::mpsc::channel(1); [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> packages/binding/src/lib.rs:212:20 [INFO] [stdout] | [INFO] [stdout] 212 | |&mut env, data: ()| env.get_undefined(), [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> packages/binding/src/lib.rs:307:24 [INFO] [stdout] | [INFO] [stdout] 307 | |&mut env, data| env.get_undefined(), [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern reimplements `Option::unwrap_or` [INFO] [stdout] --> packages/binding/src/lib.rs:93:22 [INFO] [stdout] | [INFO] [stdout] 93 | let retry_time = if let Some(retry_time) = options.retry_time { [INFO] [stdout] | ______________________^ [INFO] [stdout] 94 | | retry_time [INFO] [stdout] 95 | | } else { [INFO] [stdout] 96 | | 3 [INFO] [stdout] 97 | | }; [INFO] [stdout] | |_____^ help: replace with: `options.retry_time.unwrap_or(3)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> packages/binding/src/lib.rs:177:24 [INFO] [stdout] | [INFO] [stdout] 177 | if let Ok(_) = (&mut entry.reader).read_to_string(&mut content).await { [INFO] [stdout] | -------^^^^^--------------------------------------------------------- help: try: `if (&mut entry.reader).read_to_string(&mut content).await.is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> packages/binding/src/lib.rs:177:32 [INFO] [stdout] | [INFO] [stdout] 177 | if let Ok(_) = (&mut entry.reader).read_to_string(&mut content).await { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `entry.reader` [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: passing a unit value to a function [INFO] [stdout] --> packages/binding/src/lib.rs:388:9 [INFO] [stdout] | [INFO] [stdout] 388 | Ok(self.inner.lock().unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stdout] = note: `#[warn(clippy::unit_arg)]` on by default [INFO] [stdout] help: move the expression in front of the call and replace it with the unit literal `()` [INFO] [stdout] | [INFO] [stdout] 388 ~ self.inner.lock().unwrap(); [INFO] [stdout] 389 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: passing a unit value to a function [INFO] [stdout] --> packages/binding/src/lib.rs:393:9 [INFO] [stdout] | [INFO] [stdout] 393 | Ok(self.inner.unlock().unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stdout] help: move the expression in front of the call and replace it with the unit literal `()` [INFO] [stdout] | [INFO] [stdout] 393 ~ self.inner.unlock().unwrap(); [INFO] [stdout] 394 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/binding/src/lib.rs:163:5 [INFO] [stdout] | [INFO] [stdout] 163 | entry.set("pkgName", ctx.value.pkg_name); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 163 | let _ = entry.set("pkgName", ctx.value.pkg_name); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/binding/src/lib.rs:164:5 [INFO] [stdout] | [INFO] [stdout] 164 | entry.set("entryName", ctx.value.entry_name); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 164 | let _ = entry.set("entryName", ctx.value.entry_name); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/binding/src/lib.rs:165:5 [INFO] [stdout] | [INFO] [stdout] 165 | entry.set("content", ctx.value.content); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 165 | let _ = entry.set("content", ctx.value.content); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> packages/binding/src/lib.rs:205:5 [INFO] [stdout] | [INFO] [stdout] 205 | / env.execute_tokio_future( [INFO] [stdout] 206 | | async move { [INFO] [stdout] 207 | | let entry_callback: ThreadsafeFunction = [INFO] [stdout] 208 | | entry_callback.clone(); [INFO] [stdout] ... | [INFO] [stdout] 212 | | |&mut env, data: ()| env.get_undefined(), [INFO] [stdout] 213 | | ); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 205 | let _ = env.execute_tokio_future( [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 40s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: cargo-lock v4.0.1 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` [INFO] running `Command { std: "docker" "inspect" "cf352b39bb8c71e89e851b998d509ad36927160af59933a0cb797fe5d668531a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "cf352b39bb8c71e89e851b998d509ad36927160af59933a0cb797fe5d668531a", kill_on_drop: false }` [INFO] [stdout] cf352b39bb8c71e89e851b998d509ad36927160af59933a0cb797fe5d668531a