[INFO] crate mitrid_core 0.9.4 is already in cache [INFO] extracting crate mitrid_core 0.9.4 into work/ex/clippy-test-run/sources/stable/reg/mitrid_core/0.9.4 [INFO] extracting crate mitrid_core 0.9.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mitrid_core/0.9.4 [INFO] validating manifest of mitrid_core-0.9.4 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 mitrid_core-0.9.4 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 mitrid_core-0.9.4 [INFO] finished frobbing mitrid_core-0.9.4 [INFO] frobbed toml for mitrid_core-0.9.4 written to work/ex/clippy-test-run/sources/stable/reg/mitrid_core/0.9.4/Cargo.toml [INFO] started frobbing mitrid_core-0.9.4 [INFO] finished frobbing mitrid_core-0.9.4 [INFO] frobbed toml for mitrid_core-0.9.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mitrid_core/0.9.4/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 mitrid_core-0.9.4 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/mitrid_core/0.9.4:/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] 8e4f871e49cf04233663d72b30cdd4af1a13e9f596bed3e570910d04da319824 [INFO] running `"docker" "start" "-a" "8e4f871e49cf04233663d72b30cdd4af1a13e9f596bed3e570910d04da319824"` [INFO] [stderr] Checking mitrid_core v0.9.4 (/opt/crater/workdir) [INFO] [stderr] Compiling libsodium-sys v0.1.0 [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/io/session.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/app/channel.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | sender: sender, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `sender` [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/app/channel.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | receiver: receiver, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `receiver` [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/app/channel.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | sender: sender, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `sender` [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/app/channel.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | receiver: receiver, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `receiver` [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/util/timestamp/mod.rs:6:1 [INFO] [stderr] | [INFO] [stderr] 6 | pub mod timestamp; [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: this if statement can be collapsed [INFO] [stderr] --> src/io/network/message/method.rs:78:16 [INFO] [stderr] | [INFO] [stderr] 78 | } else if permission == &Permission::None { [INFO] [stderr] | ________________^ [INFO] [stderr] 79 | | if self != &Method::Ping { [INFO] [stderr] 80 | | return Err(String::from("invalid permission")); [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 78 | } else if permission == &Permission::None && self != &Method::Ping { [INFO] [stderr] 79 | return Err(String::from("invalid permission")); [INFO] [stderr] 80 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/io/network/message/mod.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | pub mod message; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/io/network/client/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | pub mod client; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/io/network/server/mod.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | pub mod server; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/app/logger/mod.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | pub mod logger; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/app/mod.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | pub mod app; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/base/check.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | for ref v in self { [INFO] [stderr] | ^^^^^ ---- help: try: `let v = &self;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/base/size.rs:87:13 [INFO] [stderr] | [INFO] [stderr] 87 | for ref el in self { [INFO] [stderr] | ^^^^^^ ---- help: try: `let el = &self;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/base/size.rs:99:26 [INFO] [stderr] | [INFO] [stderr] 99 | if let Some(t) = self.clone() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 99 | if let Some(t) = &(*self).clone() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 99 | if let Some(t) = &std::option::Option::clone(self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/util/timestamp/timestamp_diff.rs:40:44 [INFO] [stderr] | [INFO] [stderr] 40 | let _diff = dur.as_secs() * 1000 + (dur.subsec_millis() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(dur.subsec_millis())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/util/timestamp/timestamp_diff.rs:55:19 [INFO] [stderr] | [INFO] [stderr] 55 | pub fn as_i64(&self) -> i64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/util/timestamp/timestamp_diff.rs:60:16 [INFO] [stderr] | [INFO] [stderr] 60 | pub fn abs(&self) -> u64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/util/timestamp/timestamp_diff.rs:65:19 [INFO] [stderr] | [INFO] [stderr] 65 | pub fn as_u64(&self) -> u64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/util/timestamp/timestamp_diff.rs:70:24 [INFO] [stderr] | [INFO] [stderr] 70 | pub fn as_duration(&self) -> Duration { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/util/timestamp/timestamp_diff.rs:81:22 [INFO] [stderr] | [INFO] [stderr] 81 | pub fn as_millis(&self) -> u64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/util/timestamp/timestamp_diff.rs:86:20 [INFO] [stderr] | [INFO] [stderr] 86 | pub fn as_secs(&self) -> u64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/util/timestamp/timestamp_diff.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | pub fn sign(&self) -> i64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/util/timestamp/timestamp.rs:34:45 [INFO] [stderr] | [INFO] [stderr] 34 | let tmstmp = dur.as_secs() * 1000 + (dur.subsec_millis() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(dur.subsec_millis())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/util/timestamp/timestamp.rs:49:24 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn as_duration(&self) -> Duration { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/util/timestamp/timestamp.rs:60:20 [INFO] [stderr] | [INFO] [stderr] 60 | pub fn as_diff(&self) -> TimestampDiff { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/util/timestamp/timestamp.rs:65:19 [INFO] [stderr] | [INFO] [stderr] 65 | pub fn as_u64(&self) -> u64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/util/timestamp/timestamp.rs:70:22 [INFO] [stderr] | [INFO] [stderr] 70 | pub fn as_millis(&self) -> u64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/util/timestamp/timestamp.rs:75:20 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn as_secs(&self) -> u64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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] error: you are deriving `Hash` but have implemented `PartialEq` explicitly [INFO] [stderr] --> src/util/version.rs:31:24 [INFO] [stderr] | [INFO] [stderr] 31 | #[derive(Clone, Debug, Hash, Serialize, Deserialize)] [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::derive_hash_xor_eq)] on by default [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/util/version.rs:202:1 [INFO] [stderr] | [INFO] [stderr] 202| / impl PartialEq for Version { [INFO] [stderr] 203| | fn eq(&self, other: &Version) -> bool { [INFO] [stderr] 204| | self.major == other.major && [INFO] [stderr] 205| | self.minor == other.minor && [INFO] [stderr] 206| | self.patch == other.patch [INFO] [stderr] 207| | } [INFO] [stderr] 208| | } [INFO] [stderr] | |_^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/util/version.rs:101:22 [INFO] [stderr] | [INFO] [stderr] 101 | let _major = matches.get("major").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&matches["major"]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/util/version.rs:105:22 [INFO] [stderr] | [INFO] [stderr] 105 | let _minor = matches.get("minor").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&matches["minor"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/util/version.rs:109:22 [INFO] [stderr] | [INFO] [stderr] 109 | let _patch = matches.get("patch").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&matches["patch"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/util/version.rs:113:27 [INFO] [stderr] | [INFO] [stderr] 113 | let _prerelease = matches.get("prerelease").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&matches["prerelease"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/util/version.rs:115:26 [INFO] [stderr] | [INFO] [stderr] 115 | let _buildmeta = matches.get("buildmeta").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&matches["buildmeta"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/util/version.rs:144:39 [INFO] [stderr] | [INFO] [stderr] 144 | fn compare_numeric(n: u32, other: &u32) -> Ordering { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u32` [INFO] [stderr] | [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/util/version.rs:148:30 [INFO] [stderr] | [INFO] [stderr] 148 | fn compare_prerelease(a: &String, b: &String) -> Ordering { [INFO] [stderr] | ^^^^^^^ [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] help: change this to [INFO] [stderr] | [INFO] [stderr] 148 | fn compare_prerelease(a: &str, b: &String) -> Ordering { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `a.clone()` to [INFO] [stderr] | [INFO] [stderr] 161 | let _a = a.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/util/version.rs:148:42 [INFO] [stderr] | [INFO] [stderr] 148 | fn compare_prerelease(a: &String, b: &String) -> Ordering { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 148 | fn compare_prerelease(a: &String, b: &str) -> Ordering { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `b.clone()` to [INFO] [stderr] | [INFO] [stderr] 162 | let _b = b.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/io/permission.rs:20:22 [INFO] [stderr] | [INFO] [stderr] 20 | const Read = 1 << 0; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/io/permission.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / match self { [INFO] [stderr] 47 | | &Permission::None => write!(f, "none"), [INFO] [stderr] 48 | | &Permission::Read => write!(f, "read"), [INFO] [stderr] 49 | | &Permission::Write => write!(f, "write"), [INFO] [stderr] 50 | | &Permission { .. } => Err(fmt::Error), // unreachable [INFO] [stderr] 51 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 46 | match *self { [INFO] [stderr] 47 | Permission::None => write!(f, "none"), [INFO] [stderr] 48 | Permission::Read => write!(f, "read"), [INFO] [stderr] 49 | Permission::Write => write!(f, "write"), [INFO] [stderr] 50 | Permission { .. } => Err(fmt::Error), // unreachable [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io/session.rs:32:37 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn new(id: u64, permission: &Permission, expires_at: &Timestamp, payload: &P) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `Permission` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io/session.rs:32:62 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn new(id: u64, permission: &Permission, expires_at: &Timestamp, payload: &P) -> Result { [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `Timestamp` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io/store.rs:20:39 [INFO] [stderr] | [INFO] [stderr] 20 | fn session(&mut self, permission: &Permission) -> Result>; [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `Permission` [INFO] [stderr] | [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: identical conversion [INFO] [stderr] --> src/io/store.rs:80:20 [INFO] [stderr] | [INFO] [stderr] 80 | return Err(String::from("invalid permission")).into(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Err(String::from("invalid permission"))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/io/store.rs:100:20 [INFO] [stderr] | [INFO] [stderr] 100 | return Err(String::from("invalid permission")).into(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Err(String::from("invalid permission"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/io/store.rs:383:20 [INFO] [stderr] | [INFO] [stderr] 383 | return Err(String::from("invalid permission")).into(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Err(String::from("invalid permission"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/io/store.rs:404:20 [INFO] [stderr] | [INFO] [stderr] 404 | return Err(String::from("invalid permission")).into(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Err(String::from("invalid permission"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io/network/message/method.rs:65:29 [INFO] [stderr] | [INFO] [stderr] 65 | pub fn check_permission(&self, permission: &Permission) -> Result<()> { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io/network/message/method.rs:65:48 [INFO] [stderr] | [INFO] [stderr] 65 | pub fn check_permission(&self, permission: &Permission) -> Result<()> { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `Permission` [INFO] [stderr] | [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: taken reference of right operand [INFO] [stderr] --> src/io/network/message/method.rs:70:12 [INFO] [stderr] | [INFO] [stderr] 70 | if permission >= &Permission::Write { [INFO] [stderr] | ^^^^^^^^^^^^^^------------------ [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `Permission::Write` [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: taken reference of right operand [INFO] [stderr] --> src/io/network/message/method.rs:71:16 [INFO] [stderr] | [INFO] [stderr] 71 | if self < &Method::Create || self == &Method::Eval { [INFO] [stderr] | ^^^^^^^--------------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `Method::Create` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/io/network/message/method.rs:74:19 [INFO] [stderr] | [INFO] [stderr] 74 | } else if permission > &Permission::None && permission < &Permission::Write { [INFO] [stderr] | ^^^^^^^^^^^^^----------------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `Permission::None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/io/network/message/method.rs:74:53 [INFO] [stderr] | [INFO] [stderr] 74 | } else if permission > &Permission::None && permission < &Permission::Write { [INFO] [stderr] | ^^^^^^^^^^^^^------------------ [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `Permission::Write` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/io/network/message/method.rs:75:42 [INFO] [stderr] | [INFO] [stderr] 75 | if self == &Method::Ping || (self >= &Method::Create && self != &Method::Eval) { [INFO] [stderr] | ^^^^^^^^--------------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `Method::Create` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io/network/message/resource.rs:74:25 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn check_method(&self, method: &Method) -> Result<()> { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io/network/message/resource.rs:74:40 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn check_method(&self, method: &Method) -> Result<()> { [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `Method` [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/io/network/message/resource.rs:86:17 [INFO] [stderr] | [INFO] [stderr] 86 | / match self { [INFO] [stderr] 87 | | &Resource::Session => {}, [INFO] [stderr] 88 | | _ => { [INFO] [stderr] 89 | | return Err(String::from("invalid method")); [INFO] [stderr] 90 | | }, [INFO] [stderr] 91 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 86 | match *self { [INFO] [stderr] 87 | Resource::Session => {}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/io/network/message/resource.rs:94:20 [INFO] [stderr] | [INFO] [stderr] 94 | if self <= &Resource::Session || self >= &Resource::EvalParams { [INFO] [stderr] | ^^^^^^^^------------------ [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `Resource::Session` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/io/network/message/resource.rs:94:50 [INFO] [stderr] | [INFO] [stderr] 94 | if self <= &Resource::Session || self >= &Resource::EvalParams { [INFO] [stderr] | ^^^^^^^^--------------------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `Resource::EvalParams` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/io/network/message/resource.rs:99:17 [INFO] [stderr] | [INFO] [stderr] 99 | / match self { [INFO] [stderr] 100 | | &Resource::EvalParams | &Resource::EvalResult => {}, [INFO] [stderr] 101 | | _ => { [INFO] [stderr] 102 | | return Err(String::from("invalid method")); [INFO] [stderr] 103 | | }, [INFO] [stderr] 104 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 99 | match *self { [INFO] [stderr] 100 | Resource::EvalParams | Resource::EvalResult => {}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/io/network/message/resource.rs:107:17 [INFO] [stderr] | [INFO] [stderr] 107 | / match self { [INFO] [stderr] 108 | | &Resource::EvalMutParams | &Resource::EvalMutResult => {}, [INFO] [stderr] 109 | | _ => { [INFO] [stderr] 110 | | return Err(String::from("invalid method")); [INFO] [stderr] 111 | | }, [INFO] [stderr] 112 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 107 | match *self { [INFO] [stderr] 108 | Resource::EvalMutParams | Resource::EvalMutResult => {}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io/network/message/message.rs:93:37 [INFO] [stderr] | [INFO] [stderr] 93 | pub fn method(mut self, method: &Method) -> Result { [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `Method` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io/network/message/message.rs:104:41 [INFO] [stderr] | [INFO] [stderr] 104 | pub fn resource(mut self, resource: &Resource) -> Result { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Resource` [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/io/network/client/on_error.rs:56:9 [INFO] [stderr] | [INFO] [stderr] 56 | / match self { [INFO] [stderr] 57 | | &OnError::Ignore | &OnError::Fail => 0u8.size(), [INFO] [stderr] 58 | | &OnError::RetryAndIgnore(times) => times.size(), [INFO] [stderr] 59 | | &OnError::RetryAndFail(times) => times.size(), [INFO] [stderr] 60 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 56 | match *self { [INFO] [stderr] 57 | OnError::Ignore | OnError::Fail => 0u8.size(), [INFO] [stderr] 58 | OnError::RetryAndIgnore(times) => times.size(), [INFO] [stderr] 59 | OnError::RetryAndFail(times) => times.size(), [INFO] [stderr] | [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/io/network/client/client.rs:27:39 [INFO] [stderr] | [INFO] [stderr] 27 | requests: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Request]` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/io/network/client/client.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | for ref req in requests { [INFO] [stderr] | ^^^^^^^ -------- help: try: `let req = &requests;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [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/io/network/client/client.rs:53:37 [INFO] [stderr] | [INFO] [stderr] 53 | requests: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Request]` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/io/network/client/client.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | for ref req in requests { [INFO] [stderr] | ^^^^^^^ -------- help: try: `let req = &requests;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [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/io/network/client/client.rs:85:40 [INFO] [stderr] | [INFO] [stderr] 85 | requests: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Request]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/io/network/client/client.rs:131:38 [INFO] [stderr] | [INFO] [stderr] 131 | requests: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Request]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/io/network/client/client.rs:179:23 [INFO] [stderr] | [INFO] [stderr] 179 | requests: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Request]` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/io/network/server/handler.rs:27:12 [INFO] [stderr] | [INFO] [stderr] 27 | -> Result) [INFO] [stderr] | ____________^ [INFO] [stderr] 28 | | -> Result<(Request)>>>> [INFO] [stderr] | |________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/io/network/server/router.rs:30:12 [INFO] [stderr] | [INFO] [stderr] 30 | -> Result) [INFO] [stderr] | ____________^ [INFO] [stderr] 31 | | -> Result<(Request)>>>> [INFO] [stderr] | |_________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: The function/method `handle_ping` doesn't need a mutable reference [INFO] [stderr] --> src/io/network/server/router.rs:61:59 [INFO] [stderr] | [INFO] [stderr] 61 | let response = handler.handle_ping(store, &mut request)?; [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: The function/method `handle_session` doesn't need a mutable reference [INFO] [stderr] --> src/io/network/server/router.rs:72:62 [INFO] [stderr] | [INFO] [stderr] 72 | let response = handler.handle_session(store, &mut request)?; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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: The function/method `handle_count` doesn't need a mutable reference [INFO] [stderr] --> src/io/network/server/router.rs:83:60 [INFO] [stderr] | [INFO] [stderr] 83 | let response = handler.handle_count(store, &mut request)?; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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: The function/method `handle_list` doesn't need a mutable reference [INFO] [stderr] --> src/io/network/server/router.rs:94:59 [INFO] [stderr] | [INFO] [stderr] 94 | let response = handler.handle_list(store, &mut request)?; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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: The function/method `handle_lookup` doesn't need a mutable reference [INFO] [stderr] --> src/io/network/server/router.rs:105:61 [INFO] [stderr] | [INFO] [stderr] 105 | let response = handler.handle_lookup(store, &mut request)?; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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: The function/method `handle_get` doesn't need a mutable reference [INFO] [stderr] --> src/io/network/server/router.rs:116:58 [INFO] [stderr] | [INFO] [stderr] 116 | let response = handler.handle_get(store, &mut request)?; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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: The function/method `handle_create` doesn't need a mutable reference [INFO] [stderr] --> src/io/network/server/router.rs:127:61 [INFO] [stderr] | [INFO] [stderr] 127 | let response = handler.handle_create(store, &mut request)?; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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: The function/method `handle_update` doesn't need a mutable reference [INFO] [stderr] --> src/io/network/server/router.rs:138:61 [INFO] [stderr] | [INFO] [stderr] 138 | let response = handler.handle_update(store, &mut request)?; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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: The function/method `handle_upsert` doesn't need a mutable reference [INFO] [stderr] --> src/io/network/server/router.rs:149:61 [INFO] [stderr] | [INFO] [stderr] 149 | let response = handler.handle_upsert(store, &mut request)?; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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: The function/method `handle_delete` doesn't need a mutable reference [INFO] [stderr] --> src/io/network/server/router.rs:160:61 [INFO] [stderr] | [INFO] [stderr] 160 | let response = handler.handle_delete(store, &mut request)?; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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: The function/method `handle_eval` doesn't need a mutable reference [INFO] [stderr] --> src/io/network/server/router.rs:171:59 [INFO] [stderr] | [INFO] [stderr] 171 | let response = handler.handle_eval(store, &mut request, evaluator)?; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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: The function/method `handle_eval_mut` doesn't need a mutable reference [INFO] [stderr] --> src/io/network/server/router.rs:182:63 [INFO] [stderr] | [INFO] [stderr] 182 | let response = handler.handle_eval_mut(store, &mut request, evaluator_mut)?; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/io/network/server/server.rs:85:50 [INFO] [stderr] | [INFO] [stderr] 85 | .or_else(|e| Err(format!("{:}", e))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `e.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/model/transaction.rs:81:37 [INFO] [stderr] | [INFO] [stderr] 81 | pub fn inputs(mut self, inputs: &Vec>) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 81 | pub fn inputs(mut self, inputs: &[Input]) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `inputs.clone()` to [INFO] [stderr] | [INFO] [stderr] 84 | let mut unique_inputs = inputs.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `inputs.clone()` to [INFO] [stderr] | [INFO] [stderr] 92 | self.inputs = inputs.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/model/transaction.rs:88:24 [INFO] [stderr] | [INFO] [stderr] 88 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/model/transaction.rs:100:39 [INFO] [stderr] | [INFO] [stderr] 100 | pub fn outputs(mut self, outputs: &Vec>) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 100 | pub fn outputs(mut self, outputs: &[Output]) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `outputs.clone()` to [INFO] [stderr] | [INFO] [stderr] 103 | let mut unique_outputs = outputs.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `outputs.clone()` to [INFO] [stderr] | [INFO] [stderr] 111 | self.outputs = outputs.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/model/transaction.rs:107:24 [INFO] [stderr] | [INFO] [stderr] 107 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: useless use of `format!` [INFO] [stderr] --> src/model/transaction.rs:254:24 [INFO] [stderr] | [INFO] [stderr] 254 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: useless use of `format!` [INFO] [stderr] --> src/model/transaction.rs:268:24 [INFO] [stderr] | [INFO] [stderr] 268 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/model/block.rs:91:47 [INFO] [stderr] | [INFO] [stderr] 91 | pub fn prev_blocks(mut self, prev_blocks: &Vec>) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 91 | pub fn prev_blocks(mut self, prev_blocks: &[BlockNode]) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `prev_blocks.clone()` to [INFO] [stderr] | [INFO] [stderr] 94 | let mut unique_prev_blocks = prev_blocks.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `prev_blocks.clone()` to [INFO] [stderr] | [INFO] [stderr] 103| for prev_block in prev_blocks.to_owned() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `prev_blocks.clone()` to [INFO] [stderr] | [INFO] [stderr] 111| self.prev_blocks = prev_blocks.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/model/block.rs:98:24 [INFO] [stderr] | [INFO] [stderr] 98 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/model/block.rs:119:49 [INFO] [stderr] | [INFO] [stderr] 119 | pub fn transactions(mut self, transactions: &Vec>) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 119 | pub fn transactions(mut self, transactions: &[Transaction]) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `transactions.clone()` to [INFO] [stderr] | [INFO] [stderr] 122 | let mut unique_transactions = transactions.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `transactions.clone()` to [INFO] [stderr] | [INFO] [stderr] 130 | self.transactions = transactions.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/model/block.rs:126:24 [INFO] [stderr] | [INFO] [stderr] 126 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: useless use of `format!` [INFO] [stderr] --> src/model/block.rs:323:24 [INFO] [stderr] | [INFO] [stderr] 323 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: useless use of `format!` [INFO] [stderr] --> src/model/block.rs:337:24 [INFO] [stderr] | [INFO] [stderr] 337 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/model/blockgraph.rs:78:63 [INFO] [stderr] | [INFO] [stderr] 78 | pub fn frontier(mut self, tip_idx: Option, frontier: &Vec>) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 78 | pub fn frontier(mut self, tip_idx: Option, frontier: &[BlockNode]) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `frontier.clone()` to [INFO] [stderr] | [INFO] [stderr] 81 | let mut unique_frontier = frontier.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `frontier.clone()` to [INFO] [stderr] | [INFO] [stderr] 90 | for node in frontier.to_owned() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `frontier.clone()` to [INFO] [stderr] | [INFO] [stderr] 105| self.frontier = frontier.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/model/blockgraph.rs:85:24 [INFO] [stderr] | [INFO] [stderr] 85 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: useless use of `format!` [INFO] [stderr] --> src/model/blockgraph.rs:243:24 [INFO] [stderr] | [INFO] [stderr] 243 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/model/wallet.rs:76:47 [INFO] [stderr] | [INFO] [stderr] 76 | pub fn spent_coins(mut self, spent_coins: &Vec>) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 76 | pub fn spent_coins(mut self, spent_coins: &[Coin]) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] help: change `spent_coins.clone()` to [INFO] [stderr] | [INFO] [stderr] 79 | let mut unique_spent_coins = spent_coins.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `spent_coins.clone()` to [INFO] [stderr] | [INFO] [stderr] 93 | self.spent_coins = spent_coins.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:83:24 [INFO] [stderr] | [INFO] [stderr] 83 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/model/wallet.rs:86:13 [INFO] [stderr] | [INFO] [stderr] 86 | for ref coin in spent_coins { [INFO] [stderr] | ^^^^^^^^ ----------- help: try: `let coin = &spent_coins;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:88:28 [INFO] [stderr] | [INFO] [stderr] 88 | return Err(format!("spent and unpent not disjunct")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"spent and unpent not disjunct".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/model/wallet.rs:105:24 [INFO] [stderr] | [INFO] [stderr] 105 | return Err(format!("already found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"already 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: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:109:24 [INFO] [stderr] | [INFO] [stderr] 109 | return Err(format!("already found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"already 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: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:123:24 [INFO] [stderr] | [INFO] [stderr] 123 | return Err(format!("not found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"not 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: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:127:24 [INFO] [stderr] | [INFO] [stderr] 127 | return Err(format!("already found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"already 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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/model/wallet.rs:140:51 [INFO] [stderr] | [INFO] [stderr] 140 | pub fn unspent_coins(mut self, unspent_coins: &Vec>) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 140 | pub fn unspent_coins(mut self, unspent_coins: &[Coin]) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] help: change `unspent_coins.clone()` to [INFO] [stderr] | [INFO] [stderr] 143 | let mut unique_unspent_coins = unspent_coins.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `unspent_coins.clone()` to [INFO] [stderr] | [INFO] [stderr] 157 | self.unspent_coins = unspent_coins.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:147:24 [INFO] [stderr] | [INFO] [stderr] 147 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/model/wallet.rs:150:13 [INFO] [stderr] | [INFO] [stderr] 150 | for ref coin in unspent_coins { [INFO] [stderr] | ^^^^^^^^ ------------- help: try: `let coin = &unspent_coins;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:152:28 [INFO] [stderr] | [INFO] [stderr] 152 | return Err(format!("spent and unpent not disjunct")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"spent and unpent not disjunct".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/model/wallet.rs:169:24 [INFO] [stderr] | [INFO] [stderr] 169 | return Err(format!("already found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"already 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: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:173:24 [INFO] [stderr] | [INFO] [stderr] 173 | return Err(format!("already found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"already 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: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:187:24 [INFO] [stderr] | [INFO] [stderr] 187 | return Err(format!("not found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"not 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: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:191:24 [INFO] [stderr] | [INFO] [stderr] 191 | return Err(format!("already found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"already 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: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:340:24 [INFO] [stderr] | [INFO] [stderr] 340 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:354:24 [INFO] [stderr] | [INFO] [stderr] 354 | return Err(format!("duplicates found")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"duplicates 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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/model/wallet.rs:357:13 [INFO] [stderr] | [INFO] [stderr] 357 | for ref coin in self.spent_coins.iter() { [INFO] [stderr] | ^^^^^^^^ ----------------------- help: try: `let coin = &self.spent_coins.iter();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:359:28 [INFO] [stderr] | [INFO] [stderr] 359 | return Err(format!("spent and unpent not disjunct")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"spent and unpent not disjunct".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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/model/wallet.rs:363:13 [INFO] [stderr] | [INFO] [stderr] 363 | for ref coin in self.unspent_coins.iter() { [INFO] [stderr] | ^^^^^^^^ ------------------------- help: try: `let coin = &self.unspent_coins.iter();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/model/wallet.rs:365:28 [INFO] [stderr] | [INFO] [stderr] 365 | return Err(format!("spent and unpent not disjunct")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"spent and unpent not disjunct".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/app/command/request.rs:71:24 [INFO] [stderr] | [INFO] [stderr] 71 | return Err(format!("invalid size")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid size".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/app/command/response.rs:40:24 [INFO] [stderr] | [INFO] [stderr] 40 | return Err(format!("invalid result")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid result".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/app/command/response.rs:80:24 [INFO] [stderr] | [INFO] [stderr] 80 | return Err(format!("invalid result")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid result".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/app/command/response.rs:84:24 [INFO] [stderr] | [INFO] [stderr] 84 | return Err(format!("invalid size")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid size".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 should consider adding a `Default` implementation for `app::channel::RequestChannel` [INFO] [stderr] --> src/app/channel.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | / pub fn new() -> Self { [INFO] [stderr] 32 | | let (sender, receiver) = channel(); [INFO] [stderr] 33 | | [INFO] [stderr] 34 | | RequestChannel { [INFO] [stderr] ... | [INFO] [stderr] 37 | | } [INFO] [stderr] 38 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 26 | impl Default for app::channel::RequestChannel { [INFO] [stderr] 27 | fn default() -> Self { [INFO] [stderr] 28 | Self::new() [INFO] [stderr] 29 | } [INFO] [stderr] 30 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `app::channel::ResponseChannel` [INFO] [stderr] --> src/app/channel.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / pub fn new() -> Self { [INFO] [stderr] 62 | | let (sender, receiver) = channel(); [INFO] [stderr] 63 | | [INFO] [stderr] 64 | | ResponseChannel { [INFO] [stderr] ... | [INFO] [stderr] 67 | | } [INFO] [stderr] 68 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 56 | impl Default for app::channel::ResponseChannel { [INFO] [stderr] 57 | fn default() -> Self { [INFO] [stderr] 58 | Self::new() [INFO] [stderr] 59 | } [INFO] [stderr] 60 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `app::channel::Channels` [INFO] [stderr] --> src/app/channel.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | / pub fn new() -> Self { [INFO] [stderr] 91 | | let request_channel = RequestChannel::new(); [INFO] [stderr] 92 | | let response_channel = ResponseChannel::new(); [INFO] [stderr] 93 | | [INFO] [stderr] ... | [INFO] [stderr] 97 | | } [INFO] [stderr] 98 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 84 | impl Default for app::channel::Channels { [INFO] [stderr] 85 | fn default() -> Self { [INFO] [stderr] 86 | Self::new() [INFO] [stderr] 87 | } [INFO] [stderr] 88 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/app/logger/log_file.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | / match self { [INFO] [stderr] 68 | | &LogFile::StdOut => Ok(()), [INFO] [stderr] 69 | | &LogFile::StdErr => Ok(()), [INFO] [stderr] 70 | | &LogFile::Path(ref path) => { [INFO] [stderr] ... | [INFO] [stderr] 74 | | }, [INFO] [stderr] 75 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 67 | match *self { [INFO] [stderr] 68 | LogFile::StdOut => Ok(()), [INFO] [stderr] 69 | LogFile::StdErr => Ok(()), [INFO] [stderr] 70 | LogFile::Path(ref path) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/app/logger/logger.rs:17:44 [INFO] [stderr] | [INFO] [stderr] 17 | fn set_log_level(&mut self, log_level: &LogLevel) -> Result<()>; [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `LogLevel` [INFO] [stderr] | [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: identical conversion [INFO] [stderr] --> src/app/env.rs:21:25 [INFO] [stderr] | [INFO] [stderr] 21 | vars.insert(key.into(), var.into()); [INFO] [stderr] | ^^^^^^^^^^ help: consider removing `.into()`: `key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/app/env.rs:21:37 [INFO] [stderr] | [INFO] [stderr] 21 | vars.insert(key.into(), var.into()); [INFO] [stderr] | ^^^^^^^^^^ help: consider removing `.into()`: `var` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/app/env.rs:48:25 [INFO] [stderr] | [INFO] [stderr] 48 | let value = vars.get("LOG_LEVEL").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&vars["LOG_LEVEL"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/app/env.rs:53:25 [INFO] [stderr] | [INFO] [stderr] 53 | let value = vars.get("log_level").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&vars["log_level"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/app/env.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | let value = vars.get("LOG_FILE").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&vars["LOG_FILE"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/app/env.rs:70:25 [INFO] [stderr] | [INFO] [stderr] 70 | let value = vars.get("log_file").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&vars["log_file"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [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/app/cli.rs:50:77 [INFO] [stderr] | [INFO] [stderr] 50 | fn parse_vars_and_args(&mut self, vars: &HashMap, 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] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `mitrid_core`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "8e4f871e49cf04233663d72b30cdd4af1a13e9f596bed3e570910d04da319824"` [INFO] running `"docker" "rm" "-f" "8e4f871e49cf04233663d72b30cdd4af1a13e9f596bed3e570910d04da319824"` [INFO] [stdout] 8e4f871e49cf04233663d72b30cdd4af1a13e9f596bed3e570910d04da319824