[INFO] fetching crate pep_engine_sequoia_backend 1.1.0... [INFO] linting pep_engine_sequoia_backend-1.1.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate pep_engine_sequoia_backend 1.1.0 into /workspace/builds/worker-4-tc1/source [INFO] removed /workspace/builds/worker-4-tc1/source/.cargo/config.toml [INFO] started tweaking crates.io crate pep_engine_sequoia_backend 1.1.0 [INFO] finished tweaking crates.io crate pep_engine_sequoia_backend 1.1.0 [INFO] tweaked toml for crates.io crate pep_engine_sequoia_backend 1.1.0 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate pep_engine_sequoia_backend 1.1.0 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] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Locking 231 packages to latest compatible versions [INFO] [stderr] Adding generic-array v0.14.7 (available: v0.14.9) [INFO] [stderr] Adding lru v0.10.1 (available: v0.16.3) [INFO] [stderr] Adding rusqlite v0.29.0 (available: v0.39.0) [INFO] [stderr] Adding sequoia-openpgp v1.22.0 (available: v2.2.0) [INFO] [stderr] Adding thiserror v1.0.69 (available: v2.0.18) [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] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded botan-sys v0.11.1 [INFO] [stderr] Downloaded enumber v0.3.1 [INFO] [stderr] Downloaded eax v0.5.0 [INFO] [stderr] Downloaded win-crypto-ng v0.5.1 [INFO] [stderr] Downloaded botan v0.11.1 [INFO] [stderr] Downloaded rusqlite v0.29.0 [INFO] [stderr] Downloaded libsqlite3-sys v0.26.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 689bc9a67187a69fb72c35ef31876320c4a9c920657d815dfaf7ded7f20c7fb0 [INFO] running `Command { std: "docker" "start" "-a" "689bc9a67187a69fb72c35ef31876320c4a9c920657d815dfaf7ded7f20c7fb0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "689bc9a67187a69fb72c35ef31876320c4a9c920657d815dfaf7ded7f20c7fb0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "689bc9a67187a69fb72c35ef31876320c4a9c920657d815dfaf7ded7f20c7fb0", kill_on_drop: false }` [INFO] [stdout] 689bc9a67187a69fb72c35ef31876320c4a9c920657d815dfaf7ded7f20c7fb0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 92bdc1f447ea0404dd1b59604660e11b700ad8f9037a4dd9f2e6cd818c397058 [INFO] running `Command { std: "docker" "start" "-a" "92bdc1f447ea0404dd1b59604660e11b700ad8f9037a4dd9f2e6cd818c397058", kill_on_drop: false }` [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling crunchy v0.2.4 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling tiny-keccak v2.0.2 [INFO] [stderr] Compiling libc v0.2.183 [INFO] [stderr] Compiling bzip2-sys v0.1.13+1.0.8 [INFO] [stderr] Compiling fixedbitset v0.4.2 [INFO] [stderr] Compiling bit-vec v0.6.3 [INFO] [stderr] Compiling ena v0.14.4 [INFO] [stderr] Compiling itertools v0.11.0 [INFO] [stderr] Compiling botan-sys v0.11.1 [INFO] [stderr] Compiling lalrpop-util v0.20.2 [INFO] [stderr] Compiling libsqlite3-sys v0.26.0 [INFO] [stderr] Compiling sha1collisiondetection v0.3.4 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Checking generic-array v1.3.5 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking object v0.37.3 [INFO] [stderr] Compiling petgraph v0.6.5 [INFO] [stderr] Compiling bit-set v0.5.3 [INFO] [stderr] Checking botan v0.11.1 [INFO] [stderr] Checking memsec v0.7.0 [INFO] [stderr] Compiling pep_engine_sequoia_backend v1.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Checking xxhash-rust v0.8.15 [INFO] [stdout] warning: unexpected `cfg` condition value: `crypto-botan3` [INFO] [stdout] --> build.rs:45:33 [INFO] [stdout] | [INFO] [stdout] 45 | } else if cfg!(feature = "crypto-botan3") { [INFO] [stdout] | ^^^^^^^^^^--------------- [INFO] [stdout] | | [INFO] [stdout] | help: there is a expected value with a similar name: `"crypto-botan"` [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `crypto-botan`, `crypto-botan2`, `crypto-cng`, `crypto-nettle`, and `default` [INFO] [stdout] = help: consider adding `crypto-botan3` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> build.rs:55:18 [INFO] [stdout] | [INFO] [stdout] 55 | / &build_dir [INFO] [stdout] 56 | | .to_str() [INFO] [stdout] 57 | | .expect("build directory is not UTF-8 encoded")) [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] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 55 ~ build_dir [INFO] [stdout] 56 + .to_str() [INFO] [stdout] 57 ~ .expect("build directory is not UTF-8 encoded")) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> build.rs:64:36 [INFO] [stdout] | [INFO] [stdout] 64 | let mut pc = File::create(&pc).expect( [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 65 | | &format!("Creating {:?} (CARGO_TARGET_DIR: {:?})", [INFO] [stdout] 66 | | pc, env::var_os("CARGO_TARGET_DIR"))); [INFO] [stdout] | |______________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 64 ~ let mut pc = File::create(&pc).unwrap_or_else(|_| panic!("Creating {:?} (CARGO_TARGET_DIR: {:?})", [INFO] [stdout] 65 ~ pc, env::var_os("CARGO_TARGET_DIR"))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking fallible-streaming-iterator v0.1.9 [INFO] [stderr] Checking chrono v0.4.44 [INFO] [stderr] Checking lru v0.10.1 [INFO] [stderr] Compiling enumber v0.3.1 [INFO] [stderr] Checking memmem v0.1.1 [INFO] [stderr] Checking hashlink v0.8.4 [INFO] [stderr] Compiling dirs-sys-next v0.1.2 [INFO] [stderr] Checking bzip2 v0.5.2 [INFO] [stderr] Compiling dirs-next v2.0.0 [INFO] [stderr] Compiling term v0.7.0 [INFO] [stderr] Checking buffered-reader v1.4.0 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling string_cache v0.8.9 [INFO] [stderr] Compiling ascii-canvas v3.0.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling lalrpop v0.20.2 [INFO] [stderr] Checking backtrace v0.3.76 [INFO] [stderr] Checking rusqlite v0.29.0 [INFO] [stderr] Compiling sequoia-openpgp v1.22.0 [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/pep/session.rs:97:13 [INFO] [stdout] | [INFO] [stdout] 97 | ks: ks, [INFO] [stdout] | ^^^^^^ help: replace it with: `ks` [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: redundant field names in struct initialization [INFO] [stdout] --> src/pep/stringlist.rs:350:13 [INFO] [stdout] | [INFO] [stdout] 350 | mm: mm, [INFO] [stdout] | ^^^^^^ help: replace it with: `mm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/pep/stringlist.rs:357:13 [INFO] [stdout] | [INFO] [stdout] 357 | mm: mm, [INFO] [stdout] | ^^^^^^ help: replace it with: `mm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `StringListIterMut` and `StringListIter` [INFO] [stdout] --> src/pep.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | StringListIterMut, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 25 | StringListIter, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lib.rs:375:13 [INFO] [stdout] | [INFO] [stdout] 375 | session: session, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `session` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/pep/session.rs:97:13 [INFO] [stdout] | [INFO] [stdout] 97 | ks: ks, [INFO] [stdout] | ^^^^^^ help: replace it with: `ks` [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: `StringListIterMut` and `StringListIter` [INFO] [stdout] --> src/pep.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | StringListIterMut, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 25 | StringListIter, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/lib.rs:2340:23 [INFO] [stdout] | [INFO] [stdout] 2340 | const ALICE_PGP: &'static str = "\ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/lib.rs:2430:19 [INFO] [stdout] | [INFO] [stdout] 2430 | const CTEXT: &'static str = "\ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/lib.rs:2446:17 [INFO] [stdout] | [INFO] [stdout] 2446 | const MSG: &'static str = "hi, pep\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lib.rs:375:13 [INFO] [stdout] | [INFO] [stdout] 375 | session: session, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `session` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated struct `sequoia_openpgp::serialize::stream::Encryptor`: Use Encryptor2 instead [INFO] [stdout] --> src/lib.rs:76:9 [INFO] [stdout] | [INFO] [stdout] 76 | Encryptor, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated struct `sequoia_openpgp::serialize::stream::Encryptor`: Use Encryptor2 instead [INFO] [stdout] --> src/lib.rs:1147:9 [INFO] [stdout] | [INFO] [stdout] 1147 | Encryptor::for_recipients(message, recipients).build(), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated struct `sequoia_openpgp::serialize::stream::Encryptor`: Use Encryptor2 instead [INFO] [stdout] --> src/lib.rs:76:9 [INFO] [stdout] | [INFO] [stdout] 76 | Encryptor, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated struct `sequoia_openpgp::serialize::stream::Encryptor`: Use Encryptor2 instead [INFO] [stdout] --> src/lib.rs:1147:9 [INFO] [stdout] | [INFO] [stdout] 1147 | Encryptor::for_recipients(message, recipients).build(), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `sequoia_openpgp::packet::UserID::uri`: Use UserID::uri2 [INFO] [stdout] --> src/keystore.rs:112:35 [INFO] [stdout] | [INFO] [stdout] 112 | .or_else(|_| a_userid.uri()) [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `sequoia_openpgp::packet::UserID::uri`: Use UserID::uri2 [INFO] [stdout] --> src/keystore.rs:116:35 [INFO] [stdout] | [INFO] [stdout] 116 | .or_else(|_| b_userid.uri()) [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `sequoia_openpgp::packet::UserID::uri`: Use UserID::uri2 [INFO] [stdout] --> src/keystore.rs:112:35 [INFO] [stdout] | [INFO] [stdout] 112 | .or_else(|_| a_userid.uri()) [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `sequoia_openpgp::packet::UserID::uri`: Use UserID::uri2 [INFO] [stdout] --> src/keystore.rs:116:35 [INFO] [stdout] | [INFO] [stdout] 116 | .or_else(|_| b_userid.uri()) [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `sequoia_openpgp::Cert::into_packets`: Use Cert::into_packets2() to strip secret key material or cert.into_tsk().into_packets() to serialize any secret key material [INFO] [stdout] --> src/keystore.rs:608:37 [INFO] [stdout] | [INFO] [stdout] 608 | current.clone().into_packets().collect::>() [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `sequoia_openpgp::Cert::into_packets`: Use Cert::into_packets2() to strip secret key material or cert.into_tsk().into_packets() to serialize any secret key material [INFO] [stdout] --> src/keystore.rs:609:39 [INFO] [stdout] | [INFO] [stdout] 609 | != cert.clone().into_packets().collect::>(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `sequoia_openpgp::packet::UserID::uri`: Use UserID::uri2 [INFO] [stdout] --> src/keystore.rs:688:54 [INFO] [stdout] | [INFO] [stdout] 688 | } else if let Ok(Some(uri)) = ua.uri() { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `sequoia_openpgp::packet::UserID::name`: Use UserID::name2 [INFO] [stdout] --> src/keystore.rs:704:51 [INFO] [stdout] | [INFO] [stdout] 704 | ... &uid, fpr.clone(), ua.name().unwrap_or(None))); [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `sequoia_openpgp::Cert::into_packets`: Use Cert::into_packets2() to strip secret key material or cert.into_tsk().into_packets() to serialize any secret key material [INFO] [stdout] --> src/keystore.rs:608:37 [INFO] [stdout] | [INFO] [stdout] 608 | current.clone().into_packets().collect::>() [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `sequoia_openpgp::Cert::into_packets`: Use Cert::into_packets2() to strip secret key material or cert.into_tsk().into_packets() to serialize any secret key material [INFO] [stdout] --> src/keystore.rs:609:39 [INFO] [stdout] | [INFO] [stdout] 609 | != cert.clone().into_packets().collect::>(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `sequoia_openpgp::packet::UserID::uri`: Use UserID::uri2 [INFO] [stdout] --> src/keystore.rs:688:54 [INFO] [stdout] | [INFO] [stdout] 688 | } else if let Ok(Some(uri)) = ua.uri() { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `sequoia_openpgp::packet::UserID::name`: Use UserID::name2 [INFO] [stdout] --> src/keystore.rs:704:51 [INFO] [stdout] | [INFO] [stdout] 704 | ... &uid, fpr.clone(), ua.name().unwrap_or(None))); [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: initializer for `thread_local` value can be made `const` [INFO] [stdout] --> src/log.rs:16:47 [INFO] [stdout] | [INFO] [stdout] 16 | pub static INDENT_LEVEL: RefCell = RefCell::new(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace with: `const { RefCell::new(0) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_thread_local [INFO] [stdout] = note: `#[warn(clippy::missing_const_for_thread_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> src/pep/session.rs:51:17 [INFO] [stdout] | [INFO] [stdout] 51 | pub fn to_c(self) -> *mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/pep/session.rs:139:20 [INFO] [stdout] | [INFO] [stdout] 139 | if bytes.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `bytes.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: length comparison to zero [INFO] [stdout] --> src/pep/session.rs:159:20 [INFO] [stdout] | [INFO] [stdout] 159 | if bytes.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `bytes.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] [INFO] [stdout] [INFO] [stdout] warning: casting raw pointers to the same type and constness is unnecessary (`*mut pep::identity::PepIdentity` -> `*mut pep::identity::PepIdentity`) [INFO] [stdout] --> src/pep/identity.rs:108:36 [INFO] [stdout] | [INFO] [stdout] 108 | let ident = unsafe { &mut *(buffer as *mut Self) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `buffer` [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] --> src/pep/identity.rs:111:43 [INFO] [stdout] | [INFO] [stdout] 111 | ident.fpr = rust_str_to_c_str(mm, &template.fpr.to_hex()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `template.fpr.to_hex()` [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: casting raw pointers to the same type and constness is unnecessary (`*mut pep::identity::PepIdentityListItem` -> `*mut pep::identity::PepIdentityListItem`) [INFO] [stdout] --> src/pep/identity.rs:213:35 [INFO] [stdout] | [INFO] [stdout] 213 | let item = unsafe { &mut *(buffer as *mut Self) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `buffer` [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: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> src/pep/identity.rs:252:17 [INFO] [stdout] | [INFO] [stdout] 252 | pub fn to_c(mut self) -> *mut PepIdentityListItem { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `while let` loop [INFO] [stdout] --> src/pep/identity.rs:289:13 [INFO] [stdout] | [INFO] [stdout] 289 | / loop { [INFO] [stdout] 290 | | let next = if let Some(curr) = PepIdentityListItem::as_mut(curr) { [INFO] [stdout] 291 | | let next = curr.next; [INFO] [stdout] 292 | | unsafe { free(curr.ident as *mut _) }; [INFO] [stdout] ... | [INFO] [stdout] 300 | | curr = next; [INFO] [stdout] 301 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] = note: `#[warn(clippy::while_let_loop)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 289 ~ while let Some(curr) = PepIdentityListItem::as_mut(curr) { [INFO] [stdout] 290 + let next = { [INFO] [stdout] 291 + let next = curr.next; [INFO] [stdout] 292 + unsafe { free(curr.ident as *mut _) }; [INFO] [stdout] 293 + curr.ident = ptr::null_mut(); [INFO] [stdout] 294 + next [INFO] [stdout] 295 + }; [INFO] [stdout] 296 + .. [INFO] [stdout] 297 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting raw pointers to the same type and constness is unnecessary (`*mut pep::stringlist::StringListItem` -> `*mut pep::stringlist::StringListItem`) [INFO] [stdout] --> src/pep/stringlist.rs:44:24 [INFO] [stdout] | [INFO] [stdout] 44 | unsafe { &mut *(buffer as *mut Self) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `buffer` [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: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> src/pep/stringlist.rs:98:17 [INFO] [stdout] | [INFO] [stdout] 98 | pub fn to_c(mut self) -> *mut StringListItem { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/pep/stringlist.rs:144:17 [INFO] [stdout] | [INFO] [stdout] 144 | pub fn iter<'a>(&'a self) -> impl Iterator { [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] 144 - pub fn iter<'a>(&'a self) -> impl Iterator { [INFO] [stdout] 144 + pub fn iter(&self) -> impl Iterator { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/pep/stringlist.rs:151:21 [INFO] [stdout] | [INFO] [stdout] 151 | pub fn iter_mut<'a>(&'a mut self) -> StringListIterMut { [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] 151 - pub fn iter_mut<'a>(&'a mut self) -> StringListIterMut { [INFO] [stdout] 151 + pub fn iter_mut(&mut self) -> StringListIterMut { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `while let` loop [INFO] [stdout] --> src/pep/stringlist.rs:256:13 [INFO] [stdout] | [INFO] [stdout] 256 | / loop { [INFO] [stdout] 257 | | let next = if let Some(curr) = StringListItem::as_mut(curr) { [INFO] [stdout] 258 | | let next = curr.next; [INFO] [stdout] 259 | | unsafe { free(curr.value as *mut _) }; [INFO] [stdout] ... | [INFO] [stdout] 267 | | curr = next; [INFO] [stdout] 268 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 256 ~ while let Some(curr) = StringListItem::as_mut(curr) { [INFO] [stdout] 257 + let next = { [INFO] [stdout] 258 + let next = curr.next; [INFO] [stdout] 259 + unsafe { free(curr.value as *mut _) }; [INFO] [stdout] 260 + curr.value = ptr::null_mut(); [INFO] [stdout] 261 + next [INFO] [stdout] 262 + }; [INFO] [stdout] 263 + .. [INFO] [stdout] 264 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/pep.rs:78:5 [INFO] [stdout] | [INFO] [stdout] 78 | UnknownDbError(#[source] anyhow::Error, String) = 0x01ff, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/pep.rs:212:5 [INFO] [stdout] | [INFO] [stdout] 212 | UnknownError(#[source] anyhow::Error, String) = -1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/pep.rs:387:1 [INFO] [stdout] | [INFO] [stdout] 387 | / impl Default for PepCipherSuite { [INFO] [stdout] 388 | | fn default() -> Self { [INFO] [stdout] 389 | | PepCipherSuite::Default [INFO] [stdout] 390 | | } [INFO] [stdout] 391 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 375 + #[derive(Default)] [INFO] [stdout] 376 | pub enum PepCipherSuite { [INFO] [stdout] 377 ~ #[default] [INFO] [stdout] 378 ~ Default = 0, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: slow zero-filling initialization [INFO] [stdout] --> src/keystore.rs:346:26 [INFO] [stdout] | [INFO] [stdout] 346 | let mut digest = Vec::new(); [INFO] [stdout] | __________________________^ [INFO] [stdout] 347 | | digest.resize(hash.digest_size(), 0); [INFO] [stdout] | |____________________________________________^ help: consider replacing this with: `vec![0; hash.digest_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: length comparison to zero [INFO] [stdout] --> src/keystore.rs:365:12 [INFO] [stdout] | [INFO] [stdout] 365 | if purge.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!purge.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] [INFO] [stdout] [INFO] [stdout] warning: slow zero-filling initialization [INFO] [stdout] --> src/keystore.rs:388:26 [INFO] [stdout] | [INFO] [stdout] 388 | let mut digest = Vec::new(); [INFO] [stdout] | __________________________^ [INFO] [stdout] 389 | | digest.resize(hash.digest_size(), 0); [INFO] [stdout] | |____________________________________________^ help: consider replacing this with: `vec![0; hash.digest_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] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/keystore.rs:425:32 [INFO] [stdout] | [INFO] [stdout] 425 | .query_row(&[ &fpr.to_hex() ], Self::key_load) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `[ &fpr.to_hex() ]` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/keystore.rs:428:32 [INFO] [stdout] | [INFO] [stdout] 428 | .query_row(&[ &fpr.to_hex() ], Self::key_load) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `[ &fpr.to_hex() ]` [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: initializer for `thread_local` value can be made `const` [INFO] [stdout] --> src/log.rs:16:47 [INFO] [stdout] | [INFO] [stdout] 16 | pub static INDENT_LEVEL: RefCell = RefCell::new(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace with: `const { RefCell::new(0) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_thread_local [INFO] [stdout] = note: `#[warn(clippy::missing_const_for_thread_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/keystore.rs:483:28 [INFO] [stdout] | [INFO] [stdout] 483 | stmt.query_row(&[ &keyid.to_hex() ], Self::key_load).optional(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `[ &keyid.to_hex() ]` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/keystore.rs:544:28 [INFO] [stdout] | [INFO] [stdout] 544 | stmt.query_map(&[ pattern ], Self::key_load), [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `[ pattern ]` [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: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> src/pep/session.rs:51:17 [INFO] [stdout] | [INFO] [stdout] 51 | pub fn to_c(self) -> *mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/pep/session.rs:139:20 [INFO] [stdout] | [INFO] [stdout] 139 | if bytes.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `bytes.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: length comparison to zero [INFO] [stdout] --> src/pep/session.rs:159:20 [INFO] [stdout] | [INFO] [stdout] 159 | if bytes.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `bytes.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] [INFO] [stdout] [INFO] [stdout] warning: casting raw pointers to the same type and constness is unnecessary (`*mut pep::identity::PepIdentity` -> `*mut pep::identity::PepIdentity`) [INFO] [stdout] --> src/pep/identity.rs:108:36 [INFO] [stdout] | [INFO] [stdout] 108 | let ident = unsafe { &mut *(buffer as *mut Self) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `buffer` [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] --> src/pep/identity.rs:111:43 [INFO] [stdout] | [INFO] [stdout] 111 | ident.fpr = rust_str_to_c_str(mm, &template.fpr.to_hex()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `template.fpr.to_hex()` [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: casting raw pointers to the same type and constness is unnecessary (`*mut pep::identity::PepIdentityListItem` -> `*mut pep::identity::PepIdentityListItem`) [INFO] [stdout] --> src/pep/identity.rs:213:35 [INFO] [stdout] | [INFO] [stdout] 213 | let item = unsafe { &mut *(buffer as *mut Self) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `buffer` [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: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> src/pep/identity.rs:252:17 [INFO] [stdout] | [INFO] [stdout] 252 | pub fn to_c(mut self) -> *mut PepIdentityListItem { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `while let` loop [INFO] [stdout] --> src/pep/identity.rs:289:13 [INFO] [stdout] | [INFO] [stdout] 289 | / loop { [INFO] [stdout] 290 | | let next = if let Some(curr) = PepIdentityListItem::as_mut(curr) { [INFO] [stdout] 291 | | let next = curr.next; [INFO] [stdout] 292 | | unsafe { free(curr.ident as *mut _) }; [INFO] [stdout] ... | [INFO] [stdout] 300 | | curr = next; [INFO] [stdout] 301 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] = note: `#[warn(clippy::while_let_loop)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 289 ~ while let Some(curr) = PepIdentityListItem::as_mut(curr) { [INFO] [stdout] 290 + let next = { [INFO] [stdout] 291 + let next = curr.next; [INFO] [stdout] 292 + unsafe { free(curr.ident as *mut _) }; [INFO] [stdout] 293 + curr.ident = ptr::null_mut(); [INFO] [stdout] 294 + next [INFO] [stdout] 295 + }; [INFO] [stdout] 296 + .. [INFO] [stdout] 297 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting raw pointers to the same type and constness is unnecessary (`*mut pep::stringlist::StringListItem` -> `*mut pep::stringlist::StringListItem`) [INFO] [stdout] --> src/pep/stringlist.rs:44:24 [INFO] [stdout] | [INFO] [stdout] 44 | unsafe { &mut *(buffer as *mut Self) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `buffer` [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: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> src/pep/stringlist.rs:98:17 [INFO] [stdout] | [INFO] [stdout] 98 | pub fn to_c(mut self) -> *mut StringListItem { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/pep/stringlist.rs:144:17 [INFO] [stdout] | [INFO] [stdout] 144 | pub fn iter<'a>(&'a self) -> impl Iterator { [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] 144 - pub fn iter<'a>(&'a self) -> impl Iterator { [INFO] [stdout] 144 + pub fn iter(&self) -> impl Iterator { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/pep/stringlist.rs:151:21 [INFO] [stdout] | [INFO] [stdout] 151 | pub fn iter_mut<'a>(&'a mut self) -> StringListIterMut { [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] 151 - pub fn iter_mut<'a>(&'a mut self) -> StringListIterMut { [INFO] [stdout] 151 + pub fn iter_mut(&mut self) -> StringListIterMut { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/keystore.rs:790:16 [INFO] [stdout] | [INFO] [stdout] 790 | if certs.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `certs.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] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `while let` loop [INFO] [stdout] --> src/pep/stringlist.rs:256:13 [INFO] [stdout] | [INFO] [stdout] 256 | / loop { [INFO] [stdout] 257 | | let next = if let Some(curr) = StringListItem::as_mut(curr) { [INFO] [stdout] 258 | | let next = curr.next; [INFO] [stdout] 259 | | unsafe { free(curr.value as *mut _) }; [INFO] [stdout] ... | [INFO] [stdout] 267 | | curr = next; [INFO] [stdout] 268 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 256 ~ while let Some(curr) = StringListItem::as_mut(curr) { [INFO] [stdout] 257 + let next = { [INFO] [stdout] 258 + let next = curr.next; [INFO] [stdout] 259 + unsafe { free(curr.value as *mut _) }; [INFO] [stdout] 260 + curr.value = ptr::null_mut(); [INFO] [stdout] 261 + next [INFO] [stdout] 262 + }; [INFO] [stdout] 263 + .. [INFO] [stdout] 264 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/keystore.rs:819:21 [INFO] [stdout] | [INFO] [stdout] 819 | / match c { [INFO] [stdout] 820 | | '0' | '1' | '2' | '3' | '4' [INFO] [stdout] 821 | | | '5' | '6' | '7' | '8' | '9' [INFO] [stdout] 822 | | | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' [INFO] [stdout] ... | [INFO] [stdout] 827 | | _ => false, [INFO] [stdout] 828 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 819 ~ matches!(c, '0' | '1' | '2' | '3' | '4' [INFO] [stdout] 820 + | '5' | '6' | '7' | '8' | '9' [INFO] [stdout] 821 + | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' [INFO] [stdout] 822 + | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' [INFO] [stdout] 823 + | ' ') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/keystore.rs:838:19 [INFO] [stdout] | [INFO] [stdout] 838 | } else if pattern.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `pattern.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] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/pep/stringlist.rs:372:21 [INFO] [stdout] | [INFO] [stdout] 372 | / let mut v: Vec = Vec::new(); [INFO] [stdout] 373 | | v.push("abc".into()); [INFO] [stdout] | |_________________________________________^ help: consider using the `vec![]` macro: `let v: Vec = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/buffer.rs:87:64 [INFO] [stdout] | [INFO] [stdout] 87 | slice::from_raw_parts_mut(buffer, len).copy_from_slice(&s); [INFO] [stdout] | ^^ help: change this to: `s` [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: calls to `push` immediately after creation [INFO] [stdout] --> src/pep/stringlist.rs:411:21 [INFO] [stdout] | [INFO] [stdout] 411 | / let mut v: Vec = Vec::new(); [INFO] [stdout] 412 | | v.push("abc".into()); [INFO] [stdout] | |_________________________________________^ help: consider using the `vec![]` macro: `let v: Vec = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:129:16 [INFO] [stdout] | [INFO] [stdout] 129 | } else if let Ok(_) = env::var("PEP_TRACE") { [INFO] [stdout] | ________________^ [INFO] [stdout] 130 | | true [INFO] [stdout] 131 | | } else { [INFO] [stdout] 132 | | false [INFO] [stdout] 133 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 129 - } else if let Ok(_) = env::var("PEP_TRACE") { [INFO] [stdout] 130 - true [INFO] [stdout] 131 - } else { [INFO] [stdout] 132 - false [INFO] [stdout] 133 - } [INFO] [stdout] 129 + } else matches!(env::var("PEP_TRACE"), Ok(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/lib.rs:129:23 [INFO] [stdout] | [INFO] [stdout] 129 | } else if let Ok(_) = env::var("PEP_TRACE") { [INFO] [stdout] | -------^^^^^------------------------ help: try: `if env::var("PEP_TRACE").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: variant name ends with the enum's name [INFO] [stdout] --> src/pep.rs:78:5 [INFO] [stdout] | [INFO] [stdout] 78 | UnknownDbError(#[source] anyhow::Error, String) = 0x01ff, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/pep.rs:212:5 [INFO] [stdout] | [INFO] [stdout] 212 | UnknownError(#[source] anyhow::Error, String) = -1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (23/7) [INFO] [stdout] --> src/ffi.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | fn inner($($v: $t,)*) -> $rt { $body } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] ::: src/lib.rs:231:1 [INFO] [stdout] | [INFO] [stdout] 231 | / ffi!(fn pgp_init_(session: *mut Session, _in_first: bool, [INFO] [stdout] 232 | | per_user_directory: *const c_char, [INFO] [stdout] 233 | | malloc: ffi::Malloc, [INFO] [stdout] 234 | | free: ffi::Free, [INFO] [stdout] ... | [INFO] [stdout] 331 | | Ok(()) [INFO] [stdout] 332 | | }); [INFO] [stdout] | |__- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] = note: this warning originates in the macro `ffi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/pep.rs:387:1 [INFO] [stdout] | [INFO] [stdout] 387 | / impl Default for PepCipherSuite { [INFO] [stdout] 388 | | fn default() -> Self { [INFO] [stdout] 389 | | PepCipherSuite::Default [INFO] [stdout] 390 | | } [INFO] [stdout] 391 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 375 + #[derive(Default)] [INFO] [stdout] 376 | pub enum PepCipherSuite { [INFO] [stdout] 377 ~ #[default] [INFO] [stdout] 378 ~ Default = 0, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: slow zero-filling initialization [INFO] [stdout] --> src/keystore.rs:346:26 [INFO] [stdout] | [INFO] [stdout] 346 | let mut digest = Vec::new(); [INFO] [stdout] | __________________________^ [INFO] [stdout] 347 | | digest.resize(hash.digest_size(), 0); [INFO] [stdout] | |____________________________________________^ help: consider replacing this with: `vec![0; hash.digest_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: length comparison to zero [INFO] [stdout] --> src/keystore.rs:365:12 [INFO] [stdout] | [INFO] [stdout] 365 | if purge.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!purge.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] [INFO] [stdout] [INFO] [stdout] warning: slow zero-filling initialization [INFO] [stdout] --> src/keystore.rs:388:26 [INFO] [stdout] | [INFO] [stdout] 388 | let mut digest = Vec::new(); [INFO] [stdout] | __________________________^ [INFO] [stdout] 389 | | digest.resize(hash.digest_size(), 0); [INFO] [stdout] | |____________________________________________^ help: consider replacing this with: `vec![0; hash.digest_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] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/lib.rs:598:28 [INFO] [stdout] | [INFO] [stdout] 598 | let ka = match cert.keys().filter(|ka| *keyid == ka.keyid()).next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cert.keys().find(|ka| *keyid == ka.keyid())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/keystore.rs:425:32 [INFO] [stdout] | [INFO] [stdout] 425 | .query_row(&[ &fpr.to_hex() ], Self::key_load) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `[ &fpr.to_hex() ]` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/keystore.rs:428:32 [INFO] [stdout] | [INFO] [stdout] 428 | .query_row(&[ &fpr.to_hex() ], Self::key_load) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `[ &fpr.to_hex() ]` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/keystore.rs:483:28 [INFO] [stdout] | [INFO] [stdout] 483 | stmt.query_row(&[ &keyid.to_hex() ], Self::key_load).optional(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `[ &keyid.to_hex() ]` [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: length comparison to zero [INFO] [stdout] --> src/lib.rs:660:24 [INFO] [stdout] | [INFO] [stdout] 660 | if tsks.as_ref().unwrap().len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tsks.as_ref().unwrap().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] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/keystore.rs:544:28 [INFO] [stdout] | [INFO] [stdout] 544 | stmt.query_map(&[ pattern ], Self::key_load), [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `[ pattern ]` [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 function has too many arguments (9/7) [INFO] [stdout] --> src/ffi.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | fn inner($($v: $t,)*) -> $rt { $body } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] ::: src/lib.rs:754:1 [INFO] [stdout] | [INFO] [stdout] 754 | / ffi!(fn pgp_decrypt_and_verify(session: *mut Session, [INFO] [stdout] 755 | | ctext: *const c_char, csize: size_t, [INFO] [stdout] 756 | | dsigtext: *const c_char, _dsigsize: size_t, [INFO] [stdout] 757 | | ptextp: *mut *mut c_char, psizep: *mut size_t, [INFO] [stdout] ... | [INFO] [stdout] 869 | | }); [INFO] [stdout] | |__- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: this warning originates in the macro `ffi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant slicing of the whole range [INFO] [stdout] --> src/lib.rs:920:45 [INFO] [stdout] | [INFO] [stdout] 920 | DetachedVerifierBuilder::from_bytes(&signature[..]), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use the original value instead: `signature` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_slicing [INFO] [stdout] = note: `#[warn(clippy::redundant_slicing)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/lib.rs:943:5 [INFO] [stdout] | [INFO] [stdout] 943 | / unsafe { keylistp.as_mut() }.map(|p| { [INFO] [stdout] 944 | | *p = mem::replace(&mut h.signer_keylist, StringList::empty(mm)).to_c(); [INFO] [stdout] 945 | | }); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 943 - unsafe { keylistp.as_mut() }.map(|p| { [INFO] [stdout] 944 - *p = mem::replace(&mut h.signer_keylist, StringList::empty(mm)).to_c(); [INFO] [stdout] 945 - }); [INFO] [stdout] 943 + if let Some(p) = unsafe { keylistp.as_mut() } { *p = mem::replace(&mut h.signer_keylist, StringList::empty(mm)).to_c(); } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/keystore.rs:790:16 [INFO] [stdout] | [INFO] [stdout] 790 | if certs.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `certs.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] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/keystore.rs:819:21 [INFO] [stdout] | [INFO] [stdout] 819 | / match c { [INFO] [stdout] 820 | | '0' | '1' | '2' | '3' | '4' [INFO] [stdout] 821 | | | '5' | '6' | '7' | '8' | '9' [INFO] [stdout] 822 | | | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' [INFO] [stdout] ... | [INFO] [stdout] 827 | | _ => false, [INFO] [stdout] 828 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 819 ~ matches!(c, '0' | '1' | '2' | '3' | '4' [INFO] [stdout] 820 + | '5' | '6' | '7' | '8' | '9' [INFO] [stdout] 821 + | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' [INFO] [stdout] 822 + | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' [INFO] [stdout] 823 + | ' ') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/keystore.rs:838:19 [INFO] [stdout] | [INFO] [stdout] 838 | } else if pattern.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `pattern.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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/buffer.rs:87:64 [INFO] [stdout] | [INFO] [stdout] 87 | slice::from_raw_parts_mut(buffer, len).copy_from_slice(&s); [INFO] [stdout] | ^^ help: change this to: `s` [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: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:129:16 [INFO] [stdout] | [INFO] [stdout] 129 | } else if let Ok(_) = env::var("PEP_TRACE") { [INFO] [stdout] | ________________^ [INFO] [stdout] 130 | | true [INFO] [stdout] 131 | | } else { [INFO] [stdout] 132 | | false [INFO] [stdout] 133 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 129 - } else if let Ok(_) = env::var("PEP_TRACE") { [INFO] [stdout] 130 - true [INFO] [stdout] 131 - } else { [INFO] [stdout] 132 - false [INFO] [stdout] 133 - } [INFO] [stdout] 129 + } else matches!(env::var("PEP_TRACE"), Ok(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/lib.rs:129:23 [INFO] [stdout] | [INFO] [stdout] 129 | } else if let Ok(_) = env::var("PEP_TRACE") { [INFO] [stdout] | -------^^^^^------------------------ help: try: `if env::var("PEP_TRACE").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 function has too many arguments (23/7) [INFO] [stdout] --> src/ffi.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | fn inner($($v: $t,)*) -> $rt { $body } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] ::: src/lib.rs:231:1 [INFO] [stdout] | [INFO] [stdout] 231 | / ffi!(fn pgp_init_(session: *mut Session, _in_first: bool, [INFO] [stdout] 232 | | per_user_directory: *const c_char, [INFO] [stdout] 233 | | malloc: ffi::Malloc, [INFO] [stdout] 234 | | free: ffi::Free, [INFO] [stdout] ... | [INFO] [stdout] 331 | | Ok(()) [INFO] [stdout] 332 | | }); [INFO] [stdout] | |__- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] = note: this warning originates in the macro `ffi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:1463:13 [INFO] [stdout] | [INFO] [stdout] 1463 | return Err(Error::NoKeyImported); [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] 1463 - return Err(Error::NoKeyImported); [INFO] [stdout] 1463 + Err(Error::NoKeyImported) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/lib.rs:1390:17 [INFO] [stdout] | [INFO] [stdout] 1390 | anyhow::anyhow!("Unexpected EOF").into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `anyhow::anyhow!("Unexpected EOF")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/lib.rs:598:28 [INFO] [stdout] | [INFO] [stdout] 598 | let ka = match cert.keys().filter(|ka| *keyid == ka.keyid()).next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cert.keys().find(|ka| *keyid == ka.keyid())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/lib.rs:660:24 [INFO] [stdout] | [INFO] [stdout] 660 | if tsks.as_ref().unwrap().len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tsks.as_ref().unwrap().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] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/lib.rs:1575:21 [INFO] [stdout] | [INFO] [stdout] 1575 | let retval = if offsets.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `offsets.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] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/lib.rs:1627:5 [INFO] [stdout] | [INFO] [stdout] 1627 | / unsafe { identity_listp.as_mut() }.map(|p| { [INFO] [stdout] 1628 | | *p = identity_list.to_c(); [INFO] [stdout] 1629 | | }); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 1627 - unsafe { identity_listp.as_mut() }.map(|p| { [INFO] [stdout] 1628 - *p = identity_list.to_c(); [INFO] [stdout] 1629 - }); [INFO] [stdout] 1627 + if let Some(p) = unsafe { identity_listp.as_mut() } { *p = identity_list.to_c(); } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/lib.rs:1630:5 [INFO] [stdout] | [INFO] [stdout] 1630 | / unsafe { imported_keysp.as_mut() }.map(|p| { [INFO] [stdout] 1631 | | *p = imported_keys.to_c(); [INFO] [stdout] 1632 | | }); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 1630 - unsafe { imported_keysp.as_mut() }.map(|p| { [INFO] [stdout] 1631 - *p = imported_keys.to_c(); [INFO] [stdout] 1632 - }); [INFO] [stdout] 1630 + if let Some(p) = unsafe { imported_keysp.as_mut() } { *p = imported_keys.to_c(); } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/lib.rs:1633:5 [INFO] [stdout] | [INFO] [stdout] 1633 | / unsafe { changed_key_indexp.as_mut() }.map(|p| { [INFO] [stdout] 1634 | | *p = changed_key_index; [INFO] [stdout] 1635 | | }); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 1633 - unsafe { changed_key_indexp.as_mut() }.map(|p| { [INFO] [stdout] 1634 - *p = changed_key_index; [INFO] [stdout] 1635 - }); [INFO] [stdout] 1633 + if let Some(p) = unsafe { changed_key_indexp.as_mut() } { *p = changed_key_index; } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/ffi.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | fn inner($($v: $t,)*) -> $rt { $body } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] ::: src/lib.rs:754:1 [INFO] [stdout] | [INFO] [stdout] 754 | / ffi!(fn pgp_decrypt_and_verify(session: *mut Session, [INFO] [stdout] 755 | | ctext: *const c_char, csize: size_t, [INFO] [stdout] 756 | | dsigtext: *const c_char, _dsigsize: size_t, [INFO] [stdout] 757 | | ptextp: *mut *mut c_char, psizep: *mut size_t, [INFO] [stdout] ... | [INFO] [stdout] 869 | | }); [INFO] [stdout] | |__- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: this warning originates in the macro `ffi` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant slicing of the whole range [INFO] [stdout] --> src/lib.rs:920:45 [INFO] [stdout] | [INFO] [stdout] 920 | DetachedVerifierBuilder::from_bytes(&signature[..]), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use the original value instead: `signature` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_slicing [INFO] [stdout] = note: `#[warn(clippy::redundant_slicing)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/lib.rs:943:5 [INFO] [stdout] | [INFO] [stdout] 943 | / unsafe { keylistp.as_mut() }.map(|p| { [INFO] [stdout] 944 | | *p = mem::replace(&mut h.signer_keylist, StringList::empty(mm)).to_c(); [INFO] [stdout] 945 | | }); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 943 - unsafe { keylistp.as_mut() }.map(|p| { [INFO] [stdout] 944 - *p = mem::replace(&mut h.signer_keylist, StringList::empty(mm)).to_c(); [INFO] [stdout] 945 - }); [INFO] [stdout] 943 + if let Some(p) = unsafe { keylistp.as_mut() } { *p = mem::replace(&mut h.signer_keylist, StringList::empty(mm)).to_c(); } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:1954:5 [INFO] [stdout] | [INFO] [stdout] 1954 | return 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] 1954 - return true; [INFO] [stdout] 1954 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:1961:8 [INFO] [stdout] | [INFO] [stdout] 1961 | if ! vc.alive().is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `vc.alive().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: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:2001:5 [INFO] [stdout] | [INFO] [stdout] 2001 | return expired; [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] 2001 - return expired; [INFO] [stdout] 2001 + expired [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:1463:13 [INFO] [stdout] | [INFO] [stdout] 1463 | return Err(Error::NoKeyImported); [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] 1463 - return Err(Error::NoKeyImported); [INFO] [stdout] 1463 + Err(Error::NoKeyImported) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/lib.rs:1390:17 [INFO] [stdout] | [INFO] [stdout] 1390 | anyhow::anyhow!("Unexpected EOF").into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `anyhow::anyhow!("Unexpected EOF")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/lib.rs:1575:21 [INFO] [stdout] | [INFO] [stdout] 1575 | let retval = if offsets.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `offsets.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] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/lib.rs:1627:5 [INFO] [stdout] | [INFO] [stdout] 1627 | / unsafe { identity_listp.as_mut() }.map(|p| { [INFO] [stdout] 1628 | | *p = identity_list.to_c(); [INFO] [stdout] 1629 | | }); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 1627 - unsafe { identity_listp.as_mut() }.map(|p| { [INFO] [stdout] 1628 - *p = identity_list.to_c(); [INFO] [stdout] 1629 - }); [INFO] [stdout] 1627 + if let Some(p) = unsafe { identity_listp.as_mut() } { *p = identity_list.to_c(); } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/lib.rs:1630:5 [INFO] [stdout] | [INFO] [stdout] 1630 | / unsafe { imported_keysp.as_mut() }.map(|p| { [INFO] [stdout] 1631 | | *p = imported_keys.to_c(); [INFO] [stdout] 1632 | | }); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 1630 - unsafe { imported_keysp.as_mut() }.map(|p| { [INFO] [stdout] 1631 - *p = imported_keys.to_c(); [INFO] [stdout] 1632 - }); [INFO] [stdout] 1630 + if let Some(p) = unsafe { imported_keysp.as_mut() } { *p = imported_keys.to_c(); } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/lib.rs:1633:5 [INFO] [stdout] | [INFO] [stdout] 1633 | / unsafe { changed_key_indexp.as_mut() }.map(|p| { [INFO] [stdout] 1634 | | *p = changed_key_index; [INFO] [stdout] 1635 | | }); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 1633 - unsafe { changed_key_indexp.as_mut() }.map(|p| { [INFO] [stdout] 1634 - *p = changed_key_index; [INFO] [stdout] 1635 - }); [INFO] [stdout] 1633 + if let Some(p) = unsafe { changed_key_indexp.as_mut() } { *p = changed_key_index; } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/pep/stringlist.rs:151:42 [INFO] [stdout] | [INFO] [stdout] 151 | pub fn iter_mut<'a>(&'a mut self) -> StringListIterMut { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named 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: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 151 | pub fn iter_mut<'a>(&'a mut self) -> StringListIterMut<'a> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:1954:5 [INFO] [stdout] | [INFO] [stdout] 1954 | return 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] 1954 - return true; [INFO] [stdout] 1954 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:1961:8 [INFO] [stdout] | [INFO] [stdout] 1961 | if ! vc.alive().is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `vc.alive().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: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:2001:5 [INFO] [stdout] | [INFO] [stdout] 2001 | return expired; [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] 2001 - return expired; [INFO] [stdout] 2001 + expired [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stdout] --> src/lib.rs:2304:31 [INFO] [stdout] | [INFO] [stdout] 2304 | ones_count += (e as u8).count_ones() as u64; [INFO] [stdout] | ^^^^^^^^^ help: try: `e` [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: unused return value of `std::boxed::Box::::from_raw` that must be used [INFO] [stdout] --> src/pep/session.rs:219:18 [INFO] [stdout] | [INFO] [stdout] 219 | unsafe { Box::from_raw(session) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: call `drop(Box::from_raw(ptr))` if you intend to drop the `Box` [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] 219 | unsafe { let _ = Box::from_raw(session); }; [INFO] [stdout] | +++++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/pep/stringlist.rs:151:42 [INFO] [stdout] | [INFO] [stdout] 151 | pub fn iter_mut<'a>(&'a mut self) -> StringListIterMut { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is named 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: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 151 | pub fn iter_mut<'a>(&'a mut self) -> StringListIterMut<'a> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::boxed::Box::::from_raw` that must be used [INFO] [stdout] --> src/lib.rs:2483:18 [INFO] [stdout] | [INFO] [stdout] 2483 | unsafe { Box::from_raw(session) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: call `drop(Box::from_raw(ptr))` if you intend to drop the `Box` [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 2483 | unsafe { let _ = Box::from_raw(session); }; [INFO] [stdout] | +++++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 39.43s [INFO] running `Command { std: "docker" "inspect" "92bdc1f447ea0404dd1b59604660e11b700ad8f9037a4dd9f2e6cd818c397058", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "92bdc1f447ea0404dd1b59604660e11b700ad8f9037a4dd9f2e6cd818c397058", kill_on_drop: false }` [INFO] [stdout] 92bdc1f447ea0404dd1b59604660e11b700ad8f9037a4dd9f2e6cd818c397058