[INFO] updating cached repository advancedtelematic/ota-plus-tools [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/advancedtelematic/ota-plus-tools [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/advancedtelematic/ota-plus-tools" "work/ex/clippy-test-run/sources/stable/gh/advancedtelematic/ota-plus-tools"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/advancedtelematic/ota-plus-tools'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/advancedtelematic/ota-plus-tools" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/advancedtelematic/ota-plus-tools"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/advancedtelematic/ota-plus-tools'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 2eed90476833f3d86916232fc694bc55043ecf03 [INFO] sha for GitHub repo advancedtelematic/ota-plus-tools: 2eed90476833f3d86916232fc694bc55043ecf03 [INFO] validating manifest of advancedtelematic/ota-plus-tools on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of advancedtelematic/ota-plus-tools on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing advancedtelematic/ota-plus-tools [INFO] finished frobbing advancedtelematic/ota-plus-tools [INFO] frobbed toml for advancedtelematic/ota-plus-tools written to work/ex/clippy-test-run/sources/stable/gh/advancedtelematic/ota-plus-tools/Cargo.toml [INFO] started frobbing advancedtelematic/ota-plus-tools [INFO] finished frobbing advancedtelematic/ota-plus-tools [INFO] frobbed toml for advancedtelematic/ota-plus-tools written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/advancedtelematic/ota-plus-tools/Cargo.toml [INFO] crate advancedtelematic/ota-plus-tools has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting advancedtelematic/ota-plus-tools against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/advancedtelematic/ota-plus-tools:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 829cc11958359182f61e4260ebc9f555559b889cf3397b3360251885ae775983 [INFO] running `"docker" "start" "-a" "829cc11958359182f61e4260ebc9f555559b889cf3397b3360251885ae775983"` [INFO] [stderr] Compiling futures v0.1.15 [INFO] [stderr] Checking data-encoding v2.0.0-rc.2 [INFO] [stderr] Compiling num_cpus v1.6.2 [INFO] [stderr] Checking subtle v0.2.0 [INFO] [stderr] Checking derp v0.0.10 [INFO] [stderr] Checking uuid v0.5.1 [INFO] [stderr] Checking tempfile v2.1.6 [INFO] [stderr] Checking tempdir v0.3.5 [INFO] [stderr] Checking serde_urlencoded v0.5.1 [INFO] [stderr] Checking chrono v0.4.0 [INFO] [stderr] Checking env_logger v0.4.3 [INFO] [stderr] Checking pem v0.4.1 [INFO] [stderr] Checking curve25519-dalek v0.10.0 [INFO] [stderr] Checking reqwest v0.7.3 [INFO] [stderr] Compiling rayon-core v1.2.1 [INFO] [stderr] Compiling rayon v0.7.1 [INFO] [stderr] Compiling ring v0.11.0 [INFO] [stderr] Checking ota-plus v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto.rs:574:13 [INFO] [stderr] | [INFO] [stderr] 574 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto.rs:575:13 [INFO] [stderr] | [INFO] [stderr] 575 | sig: sig, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `sig` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto.rs:574:13 [INFO] [stderr] | [INFO] [stderr] 574 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto.rs:575:13 [INFO] [stderr] | [INFO] [stderr] 575 | sig: sig, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `sig` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/crypto.rs:24:22 [INFO] [stderr] | [INFO] [stderr] 24 | const RSA_SPKI_OID: &'static [u8] = &[0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01]; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/crypto.rs:27:26 [INFO] [stderr] | [INFO] [stderr] 27 | const ED25519_SPKI_OID: &'static [u8] = &[0x2b, 0x65, 0x70]; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/crypto.rs:334:9 [INFO] [stderr] | [INFO] [stderr] 334 | Z: _, [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/crypto.rs:335:9 [INFO] [stderr] | [INFO] [stderr] 335 | T: _, [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `ExtendedPoint { X: x, Y: y, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/crypto.rs:24:22 [INFO] [stderr] | [INFO] [stderr] 24 | const RSA_SPKI_OID: &'static [u8] = &[0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01]; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/crypto.rs:27:26 [INFO] [stderr] | [INFO] [stderr] 27 | const ED25519_SPKI_OID: &'static [u8] = &[0x2b, 0x65, 0x70]; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/crypto.rs:334:9 [INFO] [stderr] | [INFO] [stderr] 334 | Z: _, [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/crypto.rs:335:9 [INFO] [stderr] | [INFO] [stderr] 335 | T: _, [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `ExtendedPoint { X: x, Y: y, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/crypto.rs:940:26 [INFO] [stderr] | [INFO] [stderr] 940 | const RSA_2048_PK8: &'static [u8] = include_bytes!("../tests/rsa-2048.pk8.der"); [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/crypto.rs:941:27 [INFO] [stderr] | [INFO] [stderr] 941 | const RSA_2048_SPKI: &'static [u8] = include_bytes!("../tests/rsa-2048.spki.der"); [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/crypto.rs:942:28 [INFO] [stderr] | [INFO] [stderr] 942 | const RSA_2048_PKCS1: &'static [u8] = include_bytes!("../tests/rsa-2048.der"); [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/crypto.rs:943:32 [INFO] [stderr] | [INFO] [stderr] 943 | const RSA_2048_PKCS1_PUB: &'static [u8] = include_bytes!("../tests/rsa-2048.pkcs1.der"); [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/crypto.rs:945:26 [INFO] [stderr] | [INFO] [stderr] 945 | const RSA_4096_PK8: &'static [u8] = include_bytes!("../tests/rsa-4096.pk8.der"); [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/crypto.rs:946:27 [INFO] [stderr] | [INFO] [stderr] 946 | const RSA_4096_SPKI: &'static [u8] = include_bytes!("../tests/rsa-4096.spki.der"); [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/crypto.rs:947:28 [INFO] [stderr] | [INFO] [stderr] 947 | const RSA_4096_PKCS1: &'static [u8] = include_bytes!("../tests/rsa-4096.der"); [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/crypto.rs:948:32 [INFO] [stderr] | [INFO] [stderr] 948 | const RSA_4096_PKCS1_PUB: &'static [u8] = include_bytes!("../tests/rsa-4096.pkcs1.der"); [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/crypto.rs:250:8 [INFO] [stderr] | [INFO] [stderr] 250 | if hash_algs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `hash_algs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/crypto.rs:259:23 [INFO] [stderr] | [INFO] [stderr] 259 | let context = match alg { [INFO] [stderr] | _______________________^ [INFO] [stderr] 260 | | &HashAlgorithm::Sha256 => digest::Context::new(&SHA256), [INFO] [stderr] 261 | | &HashAlgorithm::Sha512 => digest::Context::new(&SHA512), [INFO] [stderr] 262 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 259 | let context = match *alg { [INFO] [stderr] 260 | HashAlgorithm::Sha256 => digest::Context::new(&SHA256), [INFO] [stderr] 261 | HashAlgorithm::Sha512 => digest::Context::new(&SHA512), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/crypto.rs:336:28 [INFO] [stderr] | [INFO] [stderr] 336 | } = CompressedEdwardsY(pub_key.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*pub_key` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/crypto.rs:817:21 [INFO] [stderr] | [INFO] [stderr] 817 | let _ = derp::read_null(input)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/crypto.rs:891:1 [INFO] [stderr] | [INFO] [stderr] 891 | / pub fn rsa_spki_to_pkcs1<'a>(spki: &'a [u8]) -> ::std::result::Result<&'a [u8], derp::Error> { [INFO] [stderr] 892 | | let input = Input::from(spki); [INFO] [stderr] 893 | | input.read_all(derp::Error::Read, |input| { [INFO] [stderr] 894 | | derp::nested(input, Tag::Sequence, |input| { [INFO] [stderr] ... | [INFO] [stderr] 902 | | .map(|i| i.as_slice_less_safe()) [INFO] [stderr] 903 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interchange/cjson.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / match self { [INFO] [stderr] 28 | | &Value::Null => Ok(buf.extend(b"null")), [INFO] [stderr] 29 | | &Value::Bool(true) => Ok(buf.extend(b"true")), [INFO] [stderr] 30 | | &Value::Bool(false) => Ok(buf.extend(b"false")), [INFO] [stderr] ... | [INFO] [stderr] 70 | | } [INFO] [stderr] 71 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 27 | match *self { [INFO] [stderr] 28 | Value::Null => Ok(buf.extend(b"null")), [INFO] [stderr] 29 | Value::Bool(true) => Ok(buf.extend(b"true")), [INFO] [stderr] 30 | Value::Bool(false) => Ok(buf.extend(b"false")), [INFO] [stderr] 31 | Value::Number(Number::I64(n)) => itoa::write(buf, n).map(|_| ()).map_err(|e| e.into()), [INFO] [stderr] 32 | Value::Number(Number::U64(n)) => itoa::write(buf, n).map(|_| ()).map_err(|e| e.into()), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/interchange/cjson.rs:28:32 [INFO] [stderr] | [INFO] [stderr] 28 | &Value::Null => Ok(buf.extend(b"null")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 28 | &Value::Null => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/interchange/cjson.rs:29:38 [INFO] [stderr] | [INFO] [stderr] 29 | &Value::Bool(true) => Ok(buf.extend(b"true")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 29 | &Value::Bool(true) => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/interchange/cjson.rs:30:39 [INFO] [stderr] | [INFO] [stderr] 30 | &Value::Bool(false) => Ok(buf.extend(b"false")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 30 | &Value::Bool(false) => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/interchange/cjson.rs:38:20 [INFO] [stderr] | [INFO] [stderr] 38 | Ok(buf.extend(s.as_bytes())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 38 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/interchange/cjson.rs:50:20 [INFO] [stderr] | [INFO] [stderr] 50 | Ok(buf.push(b']')) [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 50 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/interchange/cjson.rs:69:20 [INFO] [stderr] | [INFO] [stderr] 69 | Ok(buf.push(b'}')) [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 69 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interchange/cjson.rs:81:5 [INFO] [stderr] | [INFO] [stderr] 81 | / match jsn { [INFO] [stderr] 82 | | &json::Value::Null => Ok(Value::Null), [INFO] [stderr] 83 | | &json::Value::Bool(b) => Ok(Value::Bool(b)), [INFO] [stderr] 84 | | &json::Value::Number(ref n) => { [INFO] [stderr] ... | [INFO] [stderr] 108 | | &json::Value::String(ref s) => Ok(Value::String(s.clone())), [INFO] [stderr] 109 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 81 | match *jsn { [INFO] [stderr] 82 | json::Value::Null => Ok(Value::Null), [INFO] [stderr] 83 | json::Value::Bool(b) => Ok(Value::Bool(b)), [INFO] [stderr] 84 | json::Value::Number(ref n) => { [INFO] [stderr] 85 | n.as_i64() [INFO] [stderr] 86 | .map(Number::I64) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/interchange/cjson.rs:87:18 [INFO] [stderr] | [INFO] [stderr] 87 | .or(n.as_u64().map(Number::U64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| n.as_u64().map(Number::U64))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/interchange/mod.rs:23:22 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn extension(&self) -> &'static str { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/shims.rs:51:24 [INFO] [stderr] | [INFO] [stderr] 51 | if self.typ != "Root".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `"Root"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/shims.rs:90:24 [INFO] [stderr] | [INFO] [stderr] 90 | if self.typ != "Targets".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `"Targets"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tuf.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / match self { [INFO] [stderr] 41 | | &Role::Root => write!(f, "root"), [INFO] [stderr] 42 | | &Role::Snapshot => write!(f, "snapshot"), [INFO] [stderr] 43 | | &Role::Targets => write!(f, "targets"), [INFO] [stderr] 44 | | &Role::Timestamp => write!(f, "timestamp"), [INFO] [stderr] 45 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 40 | match *self { [INFO] [stderr] 41 | Role::Root => write!(f, "root"), [INFO] [stderr] 42 | Role::Snapshot => write!(f, "snapshot"), [INFO] [stderr] 43 | Role::Targets => write!(f, "targets"), [INFO] [stderr] 44 | Role::Timestamp => write!(f, "timestamp"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tuf.rs:211:12 [INFO] [stderr] | [INFO] [stderr] 211 | if self.roles [INFO] [stderr] | ____________^ [INFO] [stderr] 212 | | .iter() [INFO] [stderr] 213 | | .filter(|&(_, def)| def.key_ids.contains(key_id)) [INFO] [stderr] 214 | | .collect::>() [INFO] [stderr] 215 | | .len() == 0 [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] help: using `is_empty` is clearer and more explicit [INFO] [stderr] | [INFO] [stderr] 211 | if self.roles [INFO] [stderr] 212 | .iter() [INFO] [stderr] 213 | .filter(|&(_, def)| def.key_ids.contains(key_id)) [INFO] [stderr] 214 | .collect::>().is_empty() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: avoid using `collect()` when not needed [INFO] [stderr] --> src/tuf.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | / .collect::>() [INFO] [stderr] 215 | | .len() == 0 [INFO] [stderr] | |__________________^ help: replace with: `.count()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_collect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_collect [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/tuf.rs:220:16 [INFO] [stderr] | [INFO] [stderr] 220 | if let None = self.keys.remove(key_id) { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 221 | | bail!(ErrorKind::IllegalArgument("key not found".into())); [INFO] [stderr] 222 | | } [INFO] [stderr] | |_________- help: try this: `if self.keys.remove(key_id).is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tuf.rs:546:26 [INFO] [stderr] | [INFO] [stderr] 546 | let updated_at = created_at.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `created_at` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: The function/method `::from_spki` doesn't need a mutable reference [INFO] [stderr] --> src/tuf.rs:601:58 [INFO] [stderr] | [INFO] [stderr] 601 | let (key_val, key_type) = PubKeyValue::from_spki(&mut buf)?; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tuf.rs:603:32 [INFO] [stderr] | [INFO] [stderr] 603 | PublicKey::from_pubkey(key_type.clone(), &key_val) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `key_type` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/crypto.rs:250:8 [INFO] [stderr] | [INFO] [stderr] 250 | if hash_algs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `hash_algs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/crypto.rs:259:23 [INFO] [stderr] | [INFO] [stderr] 259 | let context = match alg { [INFO] [stderr] | _______________________^ [INFO] [stderr] 260 | | &HashAlgorithm::Sha256 => digest::Context::new(&SHA256), [INFO] [stderr] 261 | | &HashAlgorithm::Sha512 => digest::Context::new(&SHA512), [INFO] [stderr] 262 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 259 | let context = match *alg { [INFO] [stderr] 260 | HashAlgorithm::Sha256 => digest::Context::new(&SHA256), [INFO] [stderr] 261 | HashAlgorithm::Sha512 => digest::Context::new(&SHA512), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/crypto.rs:336:28 [INFO] [stderr] | [INFO] [stderr] 336 | } = CompressedEdwardsY(pub_key.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*pub_key` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/crypto.rs:817:21 [INFO] [stderr] | [INFO] [stderr] 817 | let _ = derp::read_null(input)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/crypto.rs:891:1 [INFO] [stderr] | [INFO] [stderr] 891 | / pub fn rsa_spki_to_pkcs1<'a>(spki: &'a [u8]) -> ::std::result::Result<&'a [u8], derp::Error> { [INFO] [stderr] 892 | | let input = Input::from(spki); [INFO] [stderr] 893 | | input.read_all(derp::Error::Read, |input| { [INFO] [stderr] 894 | | derp::nested(input, Tag::Sequence, |input| { [INFO] [stderr] ... | [INFO] [stderr] 902 | | .map(|i| i.as_slice_less_safe()) [INFO] [stderr] 903 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/crypto.rs:960:27 [INFO] [stderr] | [INFO] [stderr] 960 | let pub_key = match &key.inner { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 961 | | &KeyPairInner::Ed25519(ref ed) => ed.public_key_bytes(), [INFO] [stderr] 962 | | _ => panic!(), [INFO] [stderr] 963 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 960 | let pub_key = match key.inner { [INFO] [stderr] 961 | KeyPairInner::Ed25519(ref ed) => ed.public_key_bytes(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interchange/cjson.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / match self { [INFO] [stderr] 28 | | &Value::Null => Ok(buf.extend(b"null")), [INFO] [stderr] 29 | | &Value::Bool(true) => Ok(buf.extend(b"true")), [INFO] [stderr] 30 | | &Value::Bool(false) => Ok(buf.extend(b"false")), [INFO] [stderr] ... | [INFO] [stderr] 70 | | } [INFO] [stderr] 71 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 27 | match *self { [INFO] [stderr] 28 | Value::Null => Ok(buf.extend(b"null")), [INFO] [stderr] 29 | Value::Bool(true) => Ok(buf.extend(b"true")), [INFO] [stderr] 30 | Value::Bool(false) => Ok(buf.extend(b"false")), [INFO] [stderr] 31 | Value::Number(Number::I64(n)) => itoa::write(buf, n).map(|_| ()).map_err(|e| e.into()), [INFO] [stderr] 32 | Value::Number(Number::U64(n)) => itoa::write(buf, n).map(|_| ()).map_err(|e| e.into()), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/interchange/cjson.rs:28:32 [INFO] [stderr] | [INFO] [stderr] 28 | &Value::Null => Ok(buf.extend(b"null")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 28 | &Value::Null => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/interchange/cjson.rs:29:38 [INFO] [stderr] | [INFO] [stderr] 29 | &Value::Bool(true) => Ok(buf.extend(b"true")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 29 | &Value::Bool(true) => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/interchange/cjson.rs:30:39 [INFO] [stderr] | [INFO] [stderr] 30 | &Value::Bool(false) => Ok(buf.extend(b"false")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 30 | &Value::Bool(false) => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/interchange/cjson.rs:38:20 [INFO] [stderr] | [INFO] [stderr] 38 | Ok(buf.extend(s.as_bytes())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 38 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/interchange/cjson.rs:50:20 [INFO] [stderr] | [INFO] [stderr] 50 | Ok(buf.push(b']')) [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 50 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/interchange/cjson.rs:69:20 [INFO] [stderr] | [INFO] [stderr] 69 | Ok(buf.push(b'}')) [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 69 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interchange/cjson.rs:81:5 [INFO] [stderr] | [INFO] [stderr] 81 | / match jsn { [INFO] [stderr] 82 | | &json::Value::Null => Ok(Value::Null), [INFO] [stderr] 83 | | &json::Value::Bool(b) => Ok(Value::Bool(b)), [INFO] [stderr] 84 | | &json::Value::Number(ref n) => { [INFO] [stderr] ... | [INFO] [stderr] 108 | | &json::Value::String(ref s) => Ok(Value::String(s.clone())), [INFO] [stderr] 109 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 81 | match *jsn { [INFO] [stderr] 82 | json::Value::Null => Ok(Value::Null), [INFO] [stderr] 83 | json::Value::Bool(b) => Ok(Value::Bool(b)), [INFO] [stderr] 84 | json::Value::Number(ref n) => { [INFO] [stderr] 85 | n.as_i64() [INFO] [stderr] 86 | .map(Number::I64) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/interchange/cjson.rs:87:18 [INFO] [stderr] | [INFO] [stderr] 87 | .or(n.as_u64().map(Number::U64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| n.as_u64().map(Number::U64))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/interchange/mod.rs:23:22 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn extension(&self) -> &'static str { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/shims.rs:51:24 [INFO] [stderr] | [INFO] [stderr] 51 | if self.typ != "Root".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `"Root"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/shims.rs:90:24 [INFO] [stderr] | [INFO] [stderr] 90 | if self.typ != "Targets".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `"Targets"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tuf.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / match self { [INFO] [stderr] 41 | | &Role::Root => write!(f, "root"), [INFO] [stderr] 42 | | &Role::Snapshot => write!(f, "snapshot"), [INFO] [stderr] 43 | | &Role::Targets => write!(f, "targets"), [INFO] [stderr] 44 | | &Role::Timestamp => write!(f, "timestamp"), [INFO] [stderr] 45 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 40 | match *self { [INFO] [stderr] 41 | Role::Root => write!(f, "root"), [INFO] [stderr] 42 | Role::Snapshot => write!(f, "snapshot"), [INFO] [stderr] 43 | Role::Targets => write!(f, "targets"), [INFO] [stderr] 44 | Role::Timestamp => write!(f, "timestamp"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tuf.rs:211:12 [INFO] [stderr] | [INFO] [stderr] 211 | if self.roles [INFO] [stderr] | ____________^ [INFO] [stderr] 212 | | .iter() [INFO] [stderr] 213 | | .filter(|&(_, def)| def.key_ids.contains(key_id)) [INFO] [stderr] 214 | | .collect::>() [INFO] [stderr] 215 | | .len() == 0 [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] help: using `is_empty` is clearer and more explicit [INFO] [stderr] | [INFO] [stderr] 211 | if self.roles [INFO] [stderr] 212 | .iter() [INFO] [stderr] 213 | .filter(|&(_, def)| def.key_ids.contains(key_id)) [INFO] [stderr] 214 | .collect::>().is_empty() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: avoid using `collect()` when not needed [INFO] [stderr] --> src/tuf.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | / .collect::>() [INFO] [stderr] 215 | | .len() == 0 [INFO] [stderr] | |__________________^ help: replace with: `.count()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_collect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_collect [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/tuf.rs:220:16 [INFO] [stderr] | [INFO] [stderr] 220 | if let None = self.keys.remove(key_id) { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 221 | | bail!(ErrorKind::IllegalArgument("key not found".into())); [INFO] [stderr] 222 | | } [INFO] [stderr] | |_________- help: try this: `if self.keys.remove(key_id).is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tuf.rs:546:26 [INFO] [stderr] | [INFO] [stderr] 546 | let updated_at = created_at.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `created_at` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: The function/method `::from_spki` doesn't need a mutable reference [INFO] [stderr] --> src/tuf.rs:601:58 [INFO] [stderr] | [INFO] [stderr] 601 | let (key_val, key_type) = PubKeyValue::from_spki(&mut buf)?; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tuf.rs:603:32 [INFO] [stderr] | [INFO] [stderr] 603 | PublicKey::from_pubkey(key_type.clone(), &key_val) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `key_type` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/bin/ota_plus.rs:75:21 [INFO] [stderr] | [INFO] [stderr] 75 | .or_else(|| env::home_dir().map(|path| path.join(".ota-plus"))) [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/bin/ota_plus.rs:75:21 [INFO] [stderr] | [INFO] [stderr] 75 | .or_else(|| env::home_dir().map(|path| path.join(".ota-plus"))) [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:511:8 [INFO] [stderr] | [INFO] [stderr] 511 | Ok(Cache::new(cache_path, Config::new(app_conf, auth_conf)) [INFO] [stderr] | ________^ [INFO] [stderr] 512 | | .map(|_| ())?) [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 511 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:520:8 [INFO] [stderr] | [INFO] [stderr] 520 | Ok(cache.add_key(&key, name)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 520 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:549:8 [INFO] [stderr] | [INFO] [stderr] 549 | Ok(cache.set_unsigned_root(&root, force)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 549 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:561:8 [INFO] [stderr] | [INFO] [stderr] 561 | Ok(cache.set_unsigned_root(&root, true)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 561 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:572:8 [INFO] [stderr] | [INFO] [stderr] 572 | Ok(cache.set_unsigned_root(&root, true)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 572 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:583:8 [INFO] [stderr] | [INFO] [stderr] 583 | Ok(cache.set_signed_root(&signed, true)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 583 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:699:8 [INFO] [stderr] | [INFO] [stderr] 699 | Ok(cache.set_unsigned_targets(&targets, force)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 699 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:744:8 [INFO] [stderr] | [INFO] [stderr] 744 | Ok(cache.set_unsigned_targets(&targets, true)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 744 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:752:8 [INFO] [stderr] | [INFO] [stderr] 752 | Ok(cache.set_unsigned_targets(&targets, true)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 752 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:761:8 [INFO] [stderr] | [INFO] [stderr] 761 | Ok(cache.set_signed_targets(&signed, true)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 761 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:511:8 [INFO] [stderr] | [INFO] [stderr] 511 | Ok(Cache::new(cache_path, Config::new(app_conf, auth_conf)) [INFO] [stderr] | ________^ [INFO] [stderr] 512 | | .map(|_| ())?) [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 511 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:520:8 [INFO] [stderr] | [INFO] [stderr] 520 | Ok(cache.add_key(&key, name)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 520 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:549:8 [INFO] [stderr] | [INFO] [stderr] 549 | Ok(cache.set_unsigned_root(&root, force)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 549 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:561:8 [INFO] [stderr] | [INFO] [stderr] 561 | Ok(cache.set_unsigned_root(&root, true)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 561 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:572:8 [INFO] [stderr] | [INFO] [stderr] 572 | Ok(cache.set_unsigned_root(&root, true)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 572 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:583:8 [INFO] [stderr] | [INFO] [stderr] 583 | Ok(cache.set_signed_root(&signed, true)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 583 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:699:8 [INFO] [stderr] | [INFO] [stderr] 699 | Ok(cache.set_unsigned_targets(&targets, force)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 699 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:744:8 [INFO] [stderr] | [INFO] [stderr] 744 | Ok(cache.set_unsigned_targets(&targets, true)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 744 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:752:8 [INFO] [stderr] | [INFO] [stderr] 752 | Ok(cache.set_unsigned_targets(&targets, true)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 752 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/bin/ota_plus.rs:761:8 [INFO] [stderr] | [INFO] [stderr] 761 | Ok(cache.set_signed_targets(&signed, true)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 761 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 44.70s [INFO] running `"docker" "inspect" "829cc11958359182f61e4260ebc9f555559b889cf3397b3360251885ae775983"` [INFO] running `"docker" "rm" "-f" "829cc11958359182f61e4260ebc9f555559b889cf3397b3360251885ae775983"` [INFO] [stdout] 829cc11958359182f61e4260ebc9f555559b889cf3397b3360251885ae775983