[INFO] crate libmaj 0.1.5 is already in cache [INFO] extracting crate libmaj 0.1.5 into work/ex/clippy-test-run/sources/stable/reg/libmaj/0.1.5 [INFO] extracting crate libmaj 0.1.5 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/libmaj/0.1.5 [INFO] validating manifest of libmaj-0.1.5 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 libmaj-0.1.5 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 libmaj-0.1.5 [INFO] finished frobbing libmaj-0.1.5 [INFO] frobbed toml for libmaj-0.1.5 written to work/ex/clippy-test-run/sources/stable/reg/libmaj/0.1.5/Cargo.toml [INFO] started frobbing libmaj-0.1.5 [INFO] finished frobbing libmaj-0.1.5 [INFO] frobbed toml for libmaj-0.1.5 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/libmaj/0.1.5/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting libmaj-0.1.5 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/libmaj/0.1.5:/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] ed881f70df1b3fe336da199995c10f6b232cbd206d111e4dd36180bbf4e862f0 [INFO] running `"docker" "start" "-a" "ed881f70df1b3fe336da199995c10f6b232cbd206d111e4dd36180bbf4e862f0"` [INFO] [stderr] Checking tokio-core v0.1.17 [INFO] [stderr] Checking tokio-proto v0.1.1 [INFO] [stderr] Checking tokio-tls v0.1.4 [INFO] [stderr] Checking hyper v0.11.27 [INFO] [stderr] Checking hyper-tls v0.1.4 [INFO] [stderr] Checking reqwest v0.7.3 [INFO] [stderr] Checking file-fetcher v0.1.1 [INFO] [stderr] Checking libmaj v0.1.5 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:50:90 [INFO] [stderr] | [INFO] [stderr] 50 | Ok(PfCopy { source_path: args[0].clone(), destination_path: args[1].clone(), user: user }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `user` [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/packer/packer_functions/pf_delete.rs:37:57 [INFO] [stderr] | [INFO] [stderr] 37 | Ok(PfDelete { target_path: args[0].clone(), user: user }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `user` [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/packer/packer_functions/pf_symlink_add.rs:42:95 [INFO] [stderr] | [INFO] [stderr] 42 | Ok(PfSymlinkAdd { location_path: args[0].clone(), point_to_path: args[1].clone(), user: user }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `user` [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/packer/packer_functions/pf_symlink_del.rs:39:63 [INFO] [stderr] | [INFO] [stderr] 39 | Ok(PfSymlinkDel { location_path: args[0].clone(), user: user }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `user` [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/packer/package_manifest/manifest_node.rs:38:42 [INFO] [stderr] | [INFO] [stderr] 38 | ManifestNode { entry_name: name, data: data, children: Vec::new() } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/packer/packer_functions/pf_copy.rs:50:90 [INFO] [stderr] | [INFO] [stderr] 50 | Ok(PfCopy { source_path: args[0].clone(), destination_path: args[1].clone(), user: user }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `user` [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/packer/packer_functions/pf_delete.rs:37:57 [INFO] [stderr] | [INFO] [stderr] 37 | Ok(PfDelete { target_path: args[0].clone(), user: user }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `user` [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/packer/packer_functions/pf_symlink_add.rs:42:95 [INFO] [stderr] | [INFO] [stderr] 42 | Ok(PfSymlinkAdd { location_path: args[0].clone(), point_to_path: args[1].clone(), user: user }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `user` [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/packer/packer_functions/pf_symlink_del.rs:39:63 [INFO] [stderr] | [INFO] [stderr] 39 | Ok(PfSymlinkDel { location_path: args[0].clone(), user: user }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `user` [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/packer/package_manifest/manifest_node.rs:38:42 [INFO] [stderr] | [INFO] [stderr] 38 | ManifestNode { entry_name: name, data: data, children: Vec::new() } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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: module has the same name as its containing module [INFO] [stderr] --> src/packer/mod.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | pub mod packer; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/key_mgr/constants.rs:17:33 [INFO] [stderr] | [INFO] [stderr] 17 | pub const PBKDF2_ITER_NB: u32 = 100000; [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/app_dirs/common.rs:110:27 [INFO] [stderr] | [INFO] [stderr] 110 | const ERR_NOT_SUPPORTED: &'static str = "App data directories not supported"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [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/app_dirs/common.rs:111:30 [INFO] [stderr] | [INFO] [stderr] 111 | const ERR_INVALID_APP_INFO: &'static str = "Invalid app name or author"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [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: module has the same name as its containing module [INFO] [stderr] --> src/packer/mod.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | pub mod packer; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/key_mgr/constants.rs:17:33 [INFO] [stderr] | [INFO] [stderr] 17 | pub const PBKDF2_ITER_NB: u32 = 100000; [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/app_dirs/common.rs:110:27 [INFO] [stderr] | [INFO] [stderr] 110 | const ERR_NOT_SUPPORTED: &'static str = "App data directories not supported"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [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/app_dirs/common.rs:111:30 [INFO] [stderr] | [INFO] [stderr] 111 | const ERR_INVALID_APP_INFO: &'static str = "Invalid app name or author"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [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 should consider deriving a `Default` implementation for `packer::pack_file::PackFile` [INFO] [stderr] --> src/packer/pack_file.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | / pub fn new() -> PackFile { [INFO] [stderr] 21 | | PackFile { actions: Vec::new() } [INFO] [stderr] 22 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 15 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/packer/pack_file.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | / match line { [INFO] [stderr] 30 | | Ok(l) => { [INFO] [stderr] 31 | | if l.starts_with("#") {//comment [INFO] [stderr] 32 | | continue; [INFO] [stderr] ... | [INFO] [stderr] 38 | | _ => {} [INFO] [stderr] 39 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 29 | if let Ok(l) = line { [INFO] [stderr] 30 | if l.starts_with("#") {//comment [INFO] [stderr] 31 | continue; [INFO] [stderr] 32 | } [INFO] [stderr] 33 | else { [INFO] [stderr] 34 | actions.push(PackAction::parse(&l)?); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/packer/pack_file.rs:31:38 [INFO] [stderr] | [INFO] [stderr] 31 | if l.starts_with("#") {//comment [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:40:28 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn from_args(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:45:24 [INFO] [stderr] | [INFO] [stderr] 45 | let user = if args[2] == USER { [INFO] [stderr] | ________________________^ [INFO] [stderr] 46 | | true [INFO] [stderr] 47 | | } [INFO] [stderr] 48 | | else { false }; [INFO] [stderr] | |__________________________^ help: you can reduce it to: `args[2] == USER` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:99:24 [INFO] [stderr] | [INFO] [stderr] 99 | Some(s) => s.to_str().and_then(|s|Some(s.to_string())).unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.to_str().and_then(|s|Some(s.to_string())).unwrap_or_default()` [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: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:104:20 [INFO] [stderr] | [INFO] [stderr] 104 | pa.add_arg(format!("{}",temp_filename)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `temp_filename.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:105:20 [INFO] [stderr] | [INFO] [stderr] 105 | pa.add_arg(format!("{}",PfCopy::var_filename(&self.destination_path, &src_filename))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `PfCopy::var_filename(&self.destination_path, &src_filename).to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:107:12 [INFO] [stderr] | [INFO] [stderr] 107 | if self.user == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.user` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:108:24 [INFO] [stderr] | [INFO] [stderr] 108 | pa.add_arg(format!("{}",USER)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `USER.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:127:12 [INFO] [stderr] | [INFO] [stderr] 127 | if destination.exists() == true && self.user == true && ctx.get_keep_user_data() == true {//do not touch user data [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `destination.exists()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:127:44 [INFO] [stderr] | [INFO] [stderr] 127 | if destination.exists() == true && self.user == true && ctx.get_keep_user_data() == true {//do not touch user data [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.user` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:127:65 [INFO] [stderr] | [INFO] [stderr] 127 | if destination.exists() == true && self.user == true && ctx.get_keep_user_data() == true {//do not touch user data [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `ctx.get_keep_user_data()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:130:24 [INFO] [stderr] | [INFO] [stderr] 130 | pa.add_arg(format!("{}", USER)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `USER.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:174:28 [INFO] [stderr] | [INFO] [stderr] 174 | pa.add_arg(format!("{}", USER)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `USER.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/packer/packer_functions/pf_delete.rs:27:28 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn from_args(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/packer/packer_functions/pf_delete.rs:32:24 [INFO] [stderr] | [INFO] [stderr] 32 | let user = if args[1] == USER { [INFO] [stderr] | ________________________^ [INFO] [stderr] 33 | | true [INFO] [stderr] 34 | | } [INFO] [stderr] 35 | | else { false }; [INFO] [stderr] | |__________________________^ help: you can reduce it to: `args[1] == USER` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_delete.rs:56:12 [INFO] [stderr] | [INFO] [stderr] 56 | if self.user == true && ctx.get_keep_user_data() == true {//keep user data if asked [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.user` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_delete.rs:56:33 [INFO] [stderr] | [INFO] [stderr] 56 | if self.user == true && ctx.get_keep_user_data() == true {//keep user data if asked [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `ctx.get_keep_user_data()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:32:28 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn from_args(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:37:24 [INFO] [stderr] | [INFO] [stderr] 37 | let user = if args[2] == USER { [INFO] [stderr] | ________________________^ [INFO] [stderr] 38 | | true [INFO] [stderr] 39 | | } [INFO] [stderr] 40 | | else { false }; [INFO] [stderr] | |__________________________^ help: you can reduce it to: `args[2] == USER` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:66:20 [INFO] [stderr] | [INFO] [stderr] 66 | pa.add_arg(format!("{}",self.location_path)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.location_path.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:67:20 [INFO] [stderr] | [INFO] [stderr] 67 | pa.add_arg(format!("{}",self.point_to_path)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.point_to_path.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:69:12 [INFO] [stderr] | [INFO] [stderr] 69 | if self.user == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.user` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:70:24 [INFO] [stderr] | [INFO] [stderr] 70 | pa.add_arg(format!("{}",USER)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `USER.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:86:12 [INFO] [stderr] | [INFO] [stderr] 86 | if loc.exists() == true && self.user == true && ctx.get_keep_user_data() == true {//do not touch user data [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `loc.exists()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:86:36 [INFO] [stderr] | [INFO] [stderr] 86 | if loc.exists() == true && self.user == true && ctx.get_keep_user_data() == true {//do not touch user data [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.user` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:86:57 [INFO] [stderr] | [INFO] [stderr] 86 | if loc.exists() == true && self.user == true && ctx.get_keep_user_data() == true {//do not touch user data [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `ctx.get_keep_user_data()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:89:24 [INFO] [stderr] | [INFO] [stderr] 89 | pa.add_arg(format!("{}", USER)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `USER.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_del.rs:29:28 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn from_args(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_del.rs:34:24 [INFO] [stderr] | [INFO] [stderr] 34 | let user = if args[1] == USER { [INFO] [stderr] | ________________________^ [INFO] [stderr] 35 | | true [INFO] [stderr] 36 | | } [INFO] [stderr] 37 | | else { false }; [INFO] [stderr] | |__________________________^ help: you can reduce it to: `args[1] == USER` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_del.rs:59:12 [INFO] [stderr] | [INFO] [stderr] 59 | if self.user == true && ctx.get_keep_user_data() == true {//keep user data if asked [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.user` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_del.rs:59:33 [INFO] [stderr] | [INFO] [stderr] 59 | if self.user == true && ctx.get_keep_user_data() == true {//keep user data if asked [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `ctx.get_keep_user_data()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/packer/packer.rs:62:34 [INFO] [stderr] | [INFO] [stderr] 62 | .or(get_app_root(AppDataType::UserConfig, &app_info))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| get_app_root(AppDataType::UserConfig, &app_info))` [INFO] [stderr] | [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/packer/packer.rs:67:12 [INFO] [stderr] | [INFO] [stderr] 67 | if archive_path.exists() == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!archive_path.exists()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/packer/packer.rs:113:12 [INFO] [stderr] | [INFO] [stderr] 113 | if keep_user_data == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!keep_user_data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer.rs:131:12 [INFO] [stderr] | [INFO] [stderr] 131 | if vmgr.verify(&public_key_bytes).map_err(|e|e.to_string())? == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `vmgr.verify(&public_key_bytes).map_err(|e|e.to_string())?` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/packer/packer.rs:139:77 [INFO] [stderr] | [INFO] [stderr] 139 | let last_entry = vmgr.get_last_matching_version(&version_selection).ok_or(format!("No app with matching versions available."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No app with matching versions available."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/packer/packer.rs:139:83 [INFO] [stderr] | [INFO] [stderr] 139 | let last_entry = vmgr.get_last_matching_version(&version_selection).ok_or(format!("No app with matching versions available."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No app with matching versions available.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/packer/packer.rs:178:16 [INFO] [stderr] | [INFO] [stderr] 178 | if KeyFile::pk_verify_file(public_key_bytes, &manifest_path, &manifest_signature)? == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!(KeyFile::pk_verify_file(public_key_bytes, &manifest_path, &manifest_signature)?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/packer/packer.rs:213:38 [INFO] [stderr] | [INFO] [stderr] 213 | .or(get_app_root(AppDataType::UserConfig, &app_info))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| get_app_root(AppDataType::UserConfig, &app_info))` [INFO] [stderr] | [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/packer/packer.rs:255:16 [INFO] [stderr] | [INFO] [stderr] 255 | if KeyFile::pk_verify_file(public_key_bytes, &manifest_path, &manifest_signature)? == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!(KeyFile::pk_verify_file(public_key_bytes, &manifest_path, &manifest_signature)?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/packer/packer.rs:337:68 [INFO] [stderr] | [INFO] [stderr] 337 | let signature = hmac_hashmap.get(filename).ok_or(format!("No signature in manifest for {}", filename))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No signature in manifest for {}", filename))` [INFO] [stderr] | [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/packer/packer.rs:338:28 [INFO] [stderr] | [INFO] [stderr] 338 | if hmac_verify_file(hmac_key, &file_path.path(), signature)? == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!(hmac_verify_file(hmac_key, &file_path.path(), signature)?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/packer/packer.rs:392:78 [INFO] [stderr] | [INFO] [stderr] 392 | fn execute_actions(ctx: &ActionContext, tmp_dir_path: &Path, pack_files: &Vec) -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[PackFile]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: The function/method `append` doesn't need a mutable reference [INFO] [stderr] --> src/packer/packer.rs:453:28 [INFO] [stderr] | [INFO] [stderr] 453 | archive.append(&mut header, serialized.as_bytes())?; [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:79:54 [INFO] [stderr] | [INFO] [stderr] 79 | let hmac_node = self.get_child_by_name(HMAC).ok_or(format!("No hmac signatures in the package."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No hmac signatures in the package."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:79:60 [INFO] [stderr] | [INFO] [stderr] 79 | let hmac_node = self.get_child_by_name(HMAC).ok_or(format!("No hmac signatures in the package."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No hmac signatures in the package.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:88:49 [INFO] [stderr] | [INFO] [stderr] 88 | let name = self.get_child_by_name(NAME).ok_or(format!("No app name in manifest."))?.get_data(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No app name in manifest."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:88:55 [INFO] [stderr] | [INFO] [stderr] 88 | let name = self.get_child_by_name(NAME).ok_or(format!("No app name in manifest."))?.get_data(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No app name in manifest.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:89:55 [INFO] [stderr] | [INFO] [stderr] 89 | let version = self.get_child_by_name(VERSION).ok_or(format!("No app version in manifest."))?.get_data(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No app version in manifest."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:89:61 [INFO] [stderr] | [INFO] [stderr] 89 | let version = self.get_child_by_name(VERSION).ok_or(format!("No app version in manifest."))?.get_data(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No app version in manifest.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:90:55 [INFO] [stderr] | [INFO] [stderr] 90 | let authors = self.get_child_by_name(AUTHORS).ok_or(format!("No app authors in manifest."))?.get_data(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No app authors in manifest."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:90:61 [INFO] [stderr] | [INFO] [stderr] 90 | let authors = self.get_child_by_name(AUTHORS).ok_or(format!("No app authors in manifest."))?.get_data(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No app authors in manifest.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/encrypted_key_file.rs:65:61 [INFO] [stderr] | [INFO] [stderr] 65 | Ok(SealingKey::new(AEAD_ALG, &key_bytes).map_err(|_|format!("Cannot generate AEAD key."))?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot generate AEAD key.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/encrypted_key_file.rs:70:61 [INFO] [stderr] | [INFO] [stderr] 70 | Ok(OpeningKey::new(AEAD_ALG, &key_bytes).map_err(|_|format!("Cannot generate AEAD key."))?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot generate AEAD key.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/encrypted_key_file.rs:79:123 [INFO] [stderr] | [INFO] [stderr] 79 | let decrypted = aead::open_in_place(&opening_key, &self.aead_nonce, AUTH.as_bytes(), 0, &mut file_buf).map_err(|_|format!("Failed to decrypt data."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to decrypt data.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/encrypted_key_file.rs:91:40 [INFO] [stderr] | [INFO] [stderr] 91 | rng.fill(&mut salt).map_err(|_|format!("Cannot fill random salt."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot fill random salt.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/encrypted_key_file.rs:95:41 [INFO] [stderr] | [INFO] [stderr] 95 | rng.fill(&mut nonce).map_err(|_|format!("Cannot fill random nonce."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot fill random nonce.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/encrypted_key_file.rs:106:128 [INFO] [stderr] | [INFO] [stderr] 106 | let out_size = aead::seal_in_place(&sealing_key, &nonce, AUTH.as_bytes(), &mut payload, AEAD_ALG.tag_len()).map_err(|_|format!("Encryption failure."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Encryption failure.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/key_file.rs:33:86 [INFO] [stderr] | [INFO] [stderr] 33 | let pkcs8_bytes = signature::Ed25519KeyPair::generate_pkcs8(&rng).map_err(|_|format!("Failed to generate key pair."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to generate key pair.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/key_file.rs:70:17 [INFO] [stderr] | [INFO] [stderr] 70 | Err(format!("File cannot be signed: it does not exist.")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"File cannot be signed: it does not exist.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/key_file.rs:85:17 [INFO] [stderr] | [INFO] [stderr] 85 | Err(format!("File cannot be signed: it does not exist.")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"File cannot be signed: it does not exist.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/key_mgr/hmac_helpers.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | / match hmac::verify(&key, data_to_verify, data_signature).map_err(|e|e.to_string()) { [INFO] [stderr] 30 | | Ok(_) => true, [INFO] [stderr] 31 | | Err(_) => false [INFO] [stderr] 32 | | } [INFO] [stderr] | |_____^ help: try this: `hmac::verify(&key, data_to_verify, data_signature).map_err(|e|e.to_string()).is_ok()` [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: useless use of `format!` [INFO] [stderr] --> src/key_mgr/hmac_helpers.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | Err(format!("File cannot be signed: it does not exist.")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"File cannot be signed: it does not exist.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/hmac_helpers.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | Err(format!("File cannot be verified: it does not exist.")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"File cannot be verified: it does not exist.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/hmac_helpers.rs:99:40 [INFO] [stderr] | [INFO] [stderr] 99 | rng.fill(&mut hmac_key).map_err(|_|format!("Cannot fill random key."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot fill random key.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/version_mgr/version_manager.rs:93:99 [INFO] [stderr] | [INFO] [stderr] 93 | let index = self.app_versions.iter().position(|ref entry| entry.get_version() == version).ok_or(format!("Cannot find version {}", version))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("Cannot find version {}", version))` [INFO] [stderr] | [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/version_mgr/version_manager.rs:106:16 [INFO] [stderr] | [INFO] [stderr] 106 | if is_entry_verified == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!is_entry_verified` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/version_mgr/version_manager.rs:116:40 [INFO] [stderr] | [INFO] [stderr] 116 | let last_entry = sorted.last().ok_or(format!("Cannot find the last version."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("Cannot find the last version."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/version_mgr/version_manager.rs:116:46 [INFO] [stderr] | [INFO] [stderr] 116 | let last_entry = sorted.last().ok_or(format!("Cannot find the last version."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot find the last version.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/version_mgr/version_manager.rs:145:42 [INFO] [stderr] | [INFO] [stderr] 145 | let last_entry = matching.last().ok_or(format!("Cannot find the last version."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("Cannot find the last version."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/version_mgr/version_manager.rs:145:48 [INFO] [stderr] | [INFO] [stderr] 145 | let last_entry = matching.last().ok_or(format!("Cannot find the last version."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot find the last version.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/version_mgr/version_manager.rs:169:16 [INFO] [stderr] | [INFO] [stderr] 169 | if last_entry.get_version() > &this_version { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^------------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `this_version` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/version_mgr/version_manager.rs:202:31 [INFO] [stderr] | [INFO] [stderr] 202 | pub fn to_version_manager(mut self) -> Result { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/version_mgr/version_manager.rs:222:13 [INFO] [stderr] | [INFO] [stderr] 222 | assert!(vmgr.verify(&key_file.get_pk_verification_key().unwrap()).unwrap()==true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `vmgr.verify(&key_file.get_pk_verification_key().unwrap()).unwrap()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/version_mgr/app_version_entry.rs:40:60 [INFO] [stderr] | [INFO] [stderr] 40 | let signature = decode(&self.signature).map_err(|_|format!("Cannot decode signature."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot decode signature.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/version_mgr/app_version_entry.rs:80:33 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn to_app_version_entry(self) -> Result { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:54:62 [INFO] [stderr] | [INFO] [stderr] 54 | let path_res: Result = dirs::home_dir().ok_or("No home dir found.".into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No home dir found.".into())` [INFO] [stderr] | [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:110:62 [INFO] [stderr] | [INFO] [stderr] 110 | let path_res: Result = dirs::home_dir().ok_or("No home dir found.".into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No home dir found.".into())` [INFO] [stderr] | [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:126:59 [INFO] [stderr] | [INFO] [stderr] 126 | dir.to_str().and_then(|s|Some(s.to_string())).ok_or("No user data folder found.".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No user data folder found.".into())` [INFO] [stderr] | [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:131:59 [INFO] [stderr] | [INFO] [stderr] 131 | dir.to_str().and_then(|s|Some(s.to_string())).ok_or("No user config folder found.".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No user config folder found.".into())` [INFO] [stderr] | [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:136:59 [INFO] [stderr] | [INFO] [stderr] 136 | dir.to_str().and_then(|s|Some(s.to_string())).ok_or("No user cache folder found.".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No user cache folder found.".into())` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/helpers.rs:140:37 [INFO] [stderr] | [INFO] [stderr] 140 | .map_err(|_|format!("No shared data dir found."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No shared data dir found.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:141:59 [INFO] [stderr] | [INFO] [stderr] 141 | dir.to_str().and_then(|s|Some(s.to_string())).ok_or("No shared data folder found.".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No shared data folder found.".into())` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/helpers.rs:145:37 [INFO] [stderr] | [INFO] [stderr] 145 | .map_err(|_|format!("No shared config found."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No shared config found.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:146:59 [INFO] [stderr] | [INFO] [stderr] 146 | dir.to_str().and_then(|s|Some(s.to_string())).ok_or("No shared config folder found.".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No shared config folder found.".into())` [INFO] [stderr] | [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:182:47 [INFO] [stderr] | [INFO] [stderr] 182 | let f = vars_hm.get(var_name).ok_or(format!("Var {} not found.", var_name))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("Var {} not found.", var_name))` [INFO] [stderr] | [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: equality checks against true are unnecessary [INFO] [stderr] --> src/updater.rs:40:12 [INFO] [stderr] | [INFO] [stderr] 40 | if vmgr.verify(&pub_key).map_err(|e|e.to_string())? == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `vmgr.verify(&pub_key).map_err(|e|e.to_string())?` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `packer::pack_file::PackFile` [INFO] [stderr] --> src/packer/pack_file.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | / pub fn new() -> PackFile { [INFO] [stderr] 21 | | PackFile { actions: Vec::new() } [INFO] [stderr] 22 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 15 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/updater.rs:48:72 [INFO] [stderr] | [INFO] [stderr] 48 | let last_entry = vmgr.get_last_matching_version(update_policy).ok_or(format!("No app with matching versions available."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No app with matching versions available."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/updater.rs:48:78 [INFO] [stderr] | [INFO] [stderr] 48 | let last_entry = vmgr.get_last_matching_version(update_policy).ok_or(format!("No app with matching versions available."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No app with matching versions available.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/packer/pack_file.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | / match line { [INFO] [stderr] 30 | | Ok(l) => { [INFO] [stderr] 31 | | if l.starts_with("#") {//comment [INFO] [stderr] 32 | | continue; [INFO] [stderr] ... | [INFO] [stderr] 38 | | _ => {} [INFO] [stderr] 39 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 29 | if let Ok(l) = line { [INFO] [stderr] 30 | if l.starts_with("#") {//comment [INFO] [stderr] 31 | continue; [INFO] [stderr] 32 | } [INFO] [stderr] 33 | else { [INFO] [stderr] 34 | actions.push(PackAction::parse(&l)?); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/packer/pack_file.rs:31:38 [INFO] [stderr] | [INFO] [stderr] 31 | if l.starts_with("#") {//comment [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/updater.rs:64:12 [INFO] [stderr] | [INFO] [stderr] 64 | if vmgr.verify(&pub_key).map_err(|e|e.to_string())? == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `vmgr.verify(&pub_key).map_err(|e|e.to_string())?` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/updater.rs:72:72 [INFO] [stderr] | [INFO] [stderr] 72 | let last_entry = vmgr.get_last_matching_version(update_policy).ok_or(format!("No app with matching versions available."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No app with matching versions available."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/updater.rs:72:78 [INFO] [stderr] | [INFO] [stderr] 72 | let last_entry = vmgr.get_last_matching_version(update_policy).ok_or(format!("No app with matching versions available."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No app with matching versions available.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/app_dirs/common.rs:101:22 [INFO] [stderr] | [INFO] [stderr] 101 | pub fn is_shared(&self) -> bool { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:40:28 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn from_args(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:45:24 [INFO] [stderr] | [INFO] [stderr] 45 | let user = if args[2] == USER { [INFO] [stderr] | ________________________^ [INFO] [stderr] 46 | | true [INFO] [stderr] 47 | | } [INFO] [stderr] 48 | | else { false }; [INFO] [stderr] | |__________________________^ help: you can reduce it to: `args[2] == USER` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/app_dirs/imp/mod.rs:63:8 [INFO] [stderr] | [INFO] [stderr] 63 | if app.get_author().len() == 0 || app.get_name().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `app.get_author().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: length comparison to zero [INFO] [stderr] --> src/app_dirs/imp/mod.rs:63:39 [INFO] [stderr] | [INFO] [stderr] 63 | if app.get_author().len() == 0 || app.get_name().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `app.get_name().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/app_dirs/imp/mod.rs:67:37 [INFO] [stderr] | [INFO] [stderr] 67 | for component in path.split("/").filter(|s| s.len() > 0) { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/app_dirs/imp/mod.rs:67:53 [INFO] [stderr] | [INFO] [stderr] 67 | for component in path.split("/").filter(|s| s.len() > 0) { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/app_dirs/imp/mod.rs:95:8 [INFO] [stderr] | [INFO] [stderr] 95 | if app.get_author().len() == 0 || app.get_name().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `app.get_author().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/app_dirs/imp/mod.rs:95:39 [INFO] [stderr] | [INFO] [stderr] 95 | if app.get_author().len() == 0 || app.get_name().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `app.get_name().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:99:24 [INFO] [stderr] | [INFO] [stderr] 99 | Some(s) => s.to_str().and_then(|s|Some(s.to_string())).unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.to_str().and_then(|s|Some(s.to_string())).unwrap_or_default()` [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: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:104:20 [INFO] [stderr] | [INFO] [stderr] 104 | pa.add_arg(format!("{}",temp_filename)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `temp_filename.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:105:20 [INFO] [stderr] | [INFO] [stderr] 105 | pa.add_arg(format!("{}",PfCopy::var_filename(&self.destination_path, &src_filename))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `PfCopy::var_filename(&self.destination_path, &src_filename).to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:107:12 [INFO] [stderr] | [INFO] [stderr] 107 | if self.user == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.user` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:108:24 [INFO] [stderr] | [INFO] [stderr] 108 | pa.add_arg(format!("{}",USER)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `USER.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:127:12 [INFO] [stderr] | [INFO] [stderr] 127 | if destination.exists() == true && self.user == true && ctx.get_keep_user_data() == true {//do not touch user data [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `destination.exists()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:127:44 [INFO] [stderr] | [INFO] [stderr] 127 | if destination.exists() == true && self.user == true && ctx.get_keep_user_data() == true {//do not touch user data [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.user` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:127:65 [INFO] [stderr] | [INFO] [stderr] 127 | if destination.exists() == true && self.user == true && ctx.get_keep_user_data() == true {//do not touch user data [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `ctx.get_keep_user_data()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:130:24 [INFO] [stderr] | [INFO] [stderr] 130 | pa.add_arg(format!("{}", USER)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `USER.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_copy.rs:174:28 [INFO] [stderr] | [INFO] [stderr] 174 | pa.add_arg(format!("{}", USER)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `USER.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/packer/packer_functions/pf_delete.rs:27:28 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn from_args(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/packer/packer_functions/pf_delete.rs:32:24 [INFO] [stderr] | [INFO] [stderr] 32 | let user = if args[1] == USER { [INFO] [stderr] | ________________________^ [INFO] [stderr] 33 | | true [INFO] [stderr] 34 | | } [INFO] [stderr] 35 | | else { false }; [INFO] [stderr] | |__________________________^ help: you can reduce it to: `args[1] == USER` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_delete.rs:56:12 [INFO] [stderr] | [INFO] [stderr] 56 | if self.user == true && ctx.get_keep_user_data() == true {//keep user data if asked [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.user` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_delete.rs:56:33 [INFO] [stderr] | [INFO] [stderr] 56 | if self.user == true && ctx.get_keep_user_data() == true {//keep user data if asked [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `ctx.get_keep_user_data()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:32:28 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn from_args(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:37:24 [INFO] [stderr] | [INFO] [stderr] 37 | let user = if args[2] == USER { [INFO] [stderr] | ________________________^ [INFO] [stderr] 38 | | true [INFO] [stderr] 39 | | } [INFO] [stderr] 40 | | else { false }; [INFO] [stderr] | |__________________________^ help: you can reduce it to: `args[2] == USER` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:66:20 [INFO] [stderr] | [INFO] [stderr] 66 | pa.add_arg(format!("{}",self.location_path)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.location_path.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:67:20 [INFO] [stderr] | [INFO] [stderr] 67 | pa.add_arg(format!("{}",self.point_to_path)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.point_to_path.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:69:12 [INFO] [stderr] | [INFO] [stderr] 69 | if self.user == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.user` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:70:24 [INFO] [stderr] | [INFO] [stderr] 70 | pa.add_arg(format!("{}",USER)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `USER.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:86:12 [INFO] [stderr] | [INFO] [stderr] 86 | if loc.exists() == true && self.user == true && ctx.get_keep_user_data() == true {//do not touch user data [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `loc.exists()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:86:36 [INFO] [stderr] | [INFO] [stderr] 86 | if loc.exists() == true && self.user == true && ctx.get_keep_user_data() == true {//do not touch user data [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.user` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:86:57 [INFO] [stderr] | [INFO] [stderr] 86 | if loc.exists() == true && self.user == true && ctx.get_keep_user_data() == true {//do not touch user data [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `ctx.get_keep_user_data()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_add.rs:89:24 [INFO] [stderr] | [INFO] [stderr] 89 | pa.add_arg(format!("{}", USER)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `USER.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_del.rs:29:28 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn from_args(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_del.rs:34:24 [INFO] [stderr] | [INFO] [stderr] 34 | let user = if args[1] == USER { [INFO] [stderr] | ________________________^ [INFO] [stderr] 35 | | true [INFO] [stderr] 36 | | } [INFO] [stderr] 37 | | else { false }; [INFO] [stderr] | |__________________________^ help: you can reduce it to: `args[1] == USER` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_del.rs:59:12 [INFO] [stderr] | [INFO] [stderr] 59 | if self.user == true && ctx.get_keep_user_data() == true {//keep user data if asked [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `self.user` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer_functions/pf_symlink_del.rs:59:33 [INFO] [stderr] | [INFO] [stderr] 59 | if self.user == true && ctx.get_keep_user_data() == true {//keep user data if asked [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `ctx.get_keep_user_data()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/packer/packer.rs:62:34 [INFO] [stderr] | [INFO] [stderr] 62 | .or(get_app_root(AppDataType::UserConfig, &app_info))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| get_app_root(AppDataType::UserConfig, &app_info))` [INFO] [stderr] | [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/packer/packer.rs:67:12 [INFO] [stderr] | [INFO] [stderr] 67 | if archive_path.exists() == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!archive_path.exists()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/packer/packer.rs:113:12 [INFO] [stderr] | [INFO] [stderr] 113 | if keep_user_data == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!keep_user_data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/packer/packer.rs:131:12 [INFO] [stderr] | [INFO] [stderr] 131 | if vmgr.verify(&public_key_bytes).map_err(|e|e.to_string())? == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `vmgr.verify(&public_key_bytes).map_err(|e|e.to_string())?` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/packer/packer.rs:139:77 [INFO] [stderr] | [INFO] [stderr] 139 | let last_entry = vmgr.get_last_matching_version(&version_selection).ok_or(format!("No app with matching versions available."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No app with matching versions available."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/packer/packer.rs:139:83 [INFO] [stderr] | [INFO] [stderr] 139 | let last_entry = vmgr.get_last_matching_version(&version_selection).ok_or(format!("No app with matching versions available."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No app with matching versions available.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/packer/packer.rs:178:16 [INFO] [stderr] | [INFO] [stderr] 178 | if KeyFile::pk_verify_file(public_key_bytes, &manifest_path, &manifest_signature)? == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!(KeyFile::pk_verify_file(public_key_bytes, &manifest_path, &manifest_signature)?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/packer/packer.rs:213:38 [INFO] [stderr] | [INFO] [stderr] 213 | .or(get_app_root(AppDataType::UserConfig, &app_info))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| get_app_root(AppDataType::UserConfig, &app_info))` [INFO] [stderr] | [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/packer/packer.rs:255:16 [INFO] [stderr] | [INFO] [stderr] 255 | if KeyFile::pk_verify_file(public_key_bytes, &manifest_path, &manifest_signature)? == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!(KeyFile::pk_verify_file(public_key_bytes, &manifest_path, &manifest_signature)?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/packer/packer.rs:337:68 [INFO] [stderr] | [INFO] [stderr] 337 | let signature = hmac_hashmap.get(filename).ok_or(format!("No signature in manifest for {}", filename))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No signature in manifest for {}", filename))` [INFO] [stderr] | [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/packer/packer.rs:338:28 [INFO] [stderr] | [INFO] [stderr] 338 | if hmac_verify_file(hmac_key, &file_path.path(), signature)? == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!(hmac_verify_file(hmac_key, &file_path.path(), signature)?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/packer/packer.rs:392:78 [INFO] [stderr] | [INFO] [stderr] 392 | fn execute_actions(ctx: &ActionContext, tmp_dir_path: &Path, pack_files: &Vec) -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[PackFile]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: The function/method `append` doesn't need a mutable reference [INFO] [stderr] --> src/packer/packer.rs:453:28 [INFO] [stderr] | [INFO] [stderr] 453 | archive.append(&mut header, serialized.as_bytes())?; [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:79:54 [INFO] [stderr] | [INFO] [stderr] 79 | let hmac_node = self.get_child_by_name(HMAC).ok_or(format!("No hmac signatures in the package."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No hmac signatures in the package."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:79:60 [INFO] [stderr] | [INFO] [stderr] 79 | let hmac_node = self.get_child_by_name(HMAC).ok_or(format!("No hmac signatures in the package."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No hmac signatures in the package.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:88:49 [INFO] [stderr] | [INFO] [stderr] 88 | let name = self.get_child_by_name(NAME).ok_or(format!("No app name in manifest."))?.get_data(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No app name in manifest."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:88:55 [INFO] [stderr] | [INFO] [stderr] 88 | let name = self.get_child_by_name(NAME).ok_or(format!("No app name in manifest."))?.get_data(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No app name in manifest.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:89:55 [INFO] [stderr] | [INFO] [stderr] 89 | let version = self.get_child_by_name(VERSION).ok_or(format!("No app version in manifest."))?.get_data(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No app version in manifest."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:89:61 [INFO] [stderr] | [INFO] [stderr] 89 | let version = self.get_child_by_name(VERSION).ok_or(format!("No app version in manifest."))?.get_data(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No app version in manifest.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:90:55 [INFO] [stderr] | [INFO] [stderr] 90 | let authors = self.get_child_by_name(AUTHORS).ok_or(format!("No app authors in manifest."))?.get_data(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No app authors in manifest."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/packer/package_manifest/manifest_node.rs:90:61 [INFO] [stderr] | [INFO] [stderr] 90 | let authors = self.get_child_by_name(AUTHORS).ok_or(format!("No app authors in manifest."))?.get_data(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No app authors in manifest.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/encrypted_key_file.rs:65:61 [INFO] [stderr] | [INFO] [stderr] 65 | Ok(SealingKey::new(AEAD_ALG, &key_bytes).map_err(|_|format!("Cannot generate AEAD key."))?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot generate AEAD key.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/encrypted_key_file.rs:70:61 [INFO] [stderr] | [INFO] [stderr] 70 | Ok(OpeningKey::new(AEAD_ALG, &key_bytes).map_err(|_|format!("Cannot generate AEAD key."))?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot generate AEAD key.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/encrypted_key_file.rs:79:123 [INFO] [stderr] | [INFO] [stderr] 79 | let decrypted = aead::open_in_place(&opening_key, &self.aead_nonce, AUTH.as_bytes(), 0, &mut file_buf).map_err(|_|format!("Failed to decrypt data."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to decrypt data.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/encrypted_key_file.rs:91:40 [INFO] [stderr] | [INFO] [stderr] 91 | rng.fill(&mut salt).map_err(|_|format!("Cannot fill random salt."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot fill random salt.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/encrypted_key_file.rs:95:41 [INFO] [stderr] | [INFO] [stderr] 95 | rng.fill(&mut nonce).map_err(|_|format!("Cannot fill random nonce."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot fill random nonce.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/encrypted_key_file.rs:106:128 [INFO] [stderr] | [INFO] [stderr] 106 | let out_size = aead::seal_in_place(&sealing_key, &nonce, AUTH.as_bytes(), &mut payload, AEAD_ALG.tag_len()).map_err(|_|format!("Encryption failure."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Encryption failure.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/key_file.rs:33:86 [INFO] [stderr] | [INFO] [stderr] 33 | let pkcs8_bytes = signature::Ed25519KeyPair::generate_pkcs8(&rng).map_err(|_|format!("Failed to generate key pair."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to generate key pair.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/key_file.rs:70:17 [INFO] [stderr] | [INFO] [stderr] 70 | Err(format!("File cannot be signed: it does not exist.")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"File cannot be signed: it does not exist.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/key_file.rs:85:17 [INFO] [stderr] | [INFO] [stderr] 85 | Err(format!("File cannot be signed: it does not exist.")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"File cannot be signed: it does not exist.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/key_mgr/hmac_helpers.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | / match hmac::verify(&key, data_to_verify, data_signature).map_err(|e|e.to_string()) { [INFO] [stderr] 30 | | Ok(_) => true, [INFO] [stderr] 31 | | Err(_) => false [INFO] [stderr] 32 | | } [INFO] [stderr] | |_____^ help: try this: `hmac::verify(&key, data_to_verify, data_signature).map_err(|e|e.to_string()).is_ok()` [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: useless use of `format!` [INFO] [stderr] --> src/key_mgr/hmac_helpers.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | Err(format!("File cannot be signed: it does not exist.")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"File cannot be signed: it does not exist.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/hmac_helpers.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | Err(format!("File cannot be verified: it does not exist.")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"File cannot be verified: it does not exist.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/key_mgr/hmac_helpers.rs:99:40 [INFO] [stderr] | [INFO] [stderr] 99 | rng.fill(&mut hmac_key).map_err(|_|format!("Cannot fill random key."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot fill random key.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/version_mgr/version_manager.rs:93:99 [INFO] [stderr] | [INFO] [stderr] 93 | let index = self.app_versions.iter().position(|ref entry| entry.get_version() == version).ok_or(format!("Cannot find version {}", version))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("Cannot find version {}", version))` [INFO] [stderr] | [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/version_mgr/version_manager.rs:106:16 [INFO] [stderr] | [INFO] [stderr] 106 | if is_entry_verified == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!is_entry_verified` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/version_mgr/version_manager.rs:116:40 [INFO] [stderr] | [INFO] [stderr] 116 | let last_entry = sorted.last().ok_or(format!("Cannot find the last version."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("Cannot find the last version."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/version_mgr/version_manager.rs:116:46 [INFO] [stderr] | [INFO] [stderr] 116 | let last_entry = sorted.last().ok_or(format!("Cannot find the last version."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot find the last version.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/version_mgr/version_manager.rs:145:42 [INFO] [stderr] | [INFO] [stderr] 145 | let last_entry = matching.last().ok_or(format!("Cannot find the last version."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("Cannot find the last version."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/version_mgr/version_manager.rs:145:48 [INFO] [stderr] | [INFO] [stderr] 145 | let last_entry = matching.last().ok_or(format!("Cannot find the last version."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot find the last version.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/version_mgr/version_manager.rs:169:16 [INFO] [stderr] | [INFO] [stderr] 169 | if last_entry.get_version() > &this_version { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^------------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `this_version` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/version_mgr/version_manager.rs:202:31 [INFO] [stderr] | [INFO] [stderr] 202 | pub fn to_version_manager(mut self) -> Result { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/version_mgr/app_version_entry.rs:40:60 [INFO] [stderr] | [INFO] [stderr] 40 | let signature = decode(&self.signature).map_err(|_|format!("Cannot decode signature."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Cannot decode signature.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/version_mgr/app_version_entry.rs:80:33 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn to_app_version_entry(self) -> Result { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:54:62 [INFO] [stderr] | [INFO] [stderr] 54 | let path_res: Result = dirs::home_dir().ok_or("No home dir found.".into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No home dir found.".into())` [INFO] [stderr] | [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:110:62 [INFO] [stderr] | [INFO] [stderr] 110 | let path_res: Result = dirs::home_dir().ok_or("No home dir found.".into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No home dir found.".into())` [INFO] [stderr] | [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:126:59 [INFO] [stderr] | [INFO] [stderr] 126 | dir.to_str().and_then(|s|Some(s.to_string())).ok_or("No user data folder found.".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No user data folder found.".into())` [INFO] [stderr] | [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:131:59 [INFO] [stderr] | [INFO] [stderr] 131 | dir.to_str().and_then(|s|Some(s.to_string())).ok_or("No user config folder found.".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No user config folder found.".into())` [INFO] [stderr] | [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:136:59 [INFO] [stderr] | [INFO] [stderr] 136 | dir.to_str().and_then(|s|Some(s.to_string())).ok_or("No user cache folder found.".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No user cache folder found.".into())` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/helpers.rs:140:37 [INFO] [stderr] | [INFO] [stderr] 140 | .map_err(|_|format!("No shared data dir found."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No shared data dir found.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:141:59 [INFO] [stderr] | [INFO] [stderr] 141 | dir.to_str().and_then(|s|Some(s.to_string())).ok_or("No shared data folder found.".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No shared data folder found.".into())` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/helpers.rs:145:37 [INFO] [stderr] | [INFO] [stderr] 145 | .map_err(|_|format!("No shared config found."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No shared config found.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:146:59 [INFO] [stderr] | [INFO] [stderr] 146 | dir.to_str().and_then(|s|Some(s.to_string())).ok_or("No shared config folder found.".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| "No shared config folder found.".into())` [INFO] [stderr] | [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/helpers.rs:182:47 [INFO] [stderr] | [INFO] [stderr] 182 | let f = vars_hm.get(var_name).ok_or(format!("Var {} not found.", var_name))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("Var {} not found.", var_name))` [INFO] [stderr] | [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: equality checks against true are unnecessary [INFO] [stderr] --> src/updater.rs:40:12 [INFO] [stderr] | [INFO] [stderr] 40 | if vmgr.verify(&pub_key).map_err(|e|e.to_string())? == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `vmgr.verify(&pub_key).map_err(|e|e.to_string())?` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/updater.rs:48:72 [INFO] [stderr] | [INFO] [stderr] 48 | let last_entry = vmgr.get_last_matching_version(update_policy).ok_or(format!("No app with matching versions available."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No app with matching versions available."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/updater.rs:48:78 [INFO] [stderr] | [INFO] [stderr] 48 | let last_entry = vmgr.get_last_matching_version(update_policy).ok_or(format!("No app with matching versions available."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No app with matching versions available.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/updater.rs:64:12 [INFO] [stderr] | [INFO] [stderr] 64 | if vmgr.verify(&pub_key).map_err(|e|e.to_string())? == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `vmgr.verify(&pub_key).map_err(|e|e.to_string())?` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/updater.rs:72:72 [INFO] [stderr] | [INFO] [stderr] 72 | let last_entry = vmgr.get_last_matching_version(update_policy).ok_or(format!("No app with matching versions available."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("No app with matching versions available."))` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/updater.rs:72:78 [INFO] [stderr] | [INFO] [stderr] 72 | let last_entry = vmgr.get_last_matching_version(update_policy).ok_or(format!("No app with matching versions available."))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No app with matching versions available.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/app_dirs/common.rs:101:22 [INFO] [stderr] | [INFO] [stderr] 101 | pub fn is_shared(&self) -> bool { [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: length comparison to zero [INFO] [stderr] --> src/app_dirs/imp/mod.rs:63:8 [INFO] [stderr] | [INFO] [stderr] 63 | if app.get_author().len() == 0 || app.get_name().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `app.get_author().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: length comparison to zero [INFO] [stderr] --> src/app_dirs/imp/mod.rs:63:39 [INFO] [stderr] | [INFO] [stderr] 63 | if app.get_author().len() == 0 || app.get_name().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `app.get_name().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/app_dirs/imp/mod.rs:67:37 [INFO] [stderr] | [INFO] [stderr] 67 | for component in path.split("/").filter(|s| s.len() > 0) { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/app_dirs/imp/mod.rs:67:53 [INFO] [stderr] | [INFO] [stderr] 67 | for component in path.split("/").filter(|s| s.len() > 0) { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/app_dirs/imp/mod.rs:95:8 [INFO] [stderr] | [INFO] [stderr] 95 | if app.get_author().len() == 0 || app.get_name().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `app.get_author().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/app_dirs/imp/mod.rs:95:39 [INFO] [stderr] | [INFO] [stderr] 95 | if app.get_author().len() == 0 || app.get_name().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `app.get_name().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 51.10s [INFO] running `"docker" "inspect" "ed881f70df1b3fe336da199995c10f6b232cbd206d111e4dd36180bbf4e862f0"` [INFO] running `"docker" "rm" "-f" "ed881f70df1b3fe336da199995c10f6b232cbd206d111e4dd36180bbf4e862f0"` [INFO] [stdout] ed881f70df1b3fe336da199995c10f6b232cbd206d111e4dd36180bbf4e862f0