[INFO] crate dbus-bytestream 0.1.4 is already in cache [INFO] extracting crate dbus-bytestream 0.1.4 into work/ex/clippy-test-run/sources/stable/reg/dbus-bytestream/0.1.4 [INFO] extracting crate dbus-bytestream 0.1.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dbus-bytestream/0.1.4 [INFO] validating manifest of dbus-bytestream-0.1.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 dbus-bytestream-0.1.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 dbus-bytestream-0.1.4 [INFO] finished frobbing dbus-bytestream-0.1.4 [INFO] frobbed toml for dbus-bytestream-0.1.4 written to work/ex/clippy-test-run/sources/stable/reg/dbus-bytestream/0.1.4/Cargo.toml [INFO] started frobbing dbus-bytestream-0.1.4 [INFO] finished frobbing dbus-bytestream-0.1.4 [INFO] frobbed toml for dbus-bytestream-0.1.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dbus-bytestream/0.1.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 dbus-bytestream-0.1.4 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/dbus-bytestream/0.1.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] 2317fcefb32caa0aa9e07c9439f5987ad263e43a76984ea79697be51c7b77ac6 [INFO] running `"docker" "start" "-a" "2317fcefb32caa0aa9e07c9439f5987ad263e43a76984ea79697be51c7b77ac6"` [INFO] [stderr] Checking dbus-serialize v0.1.2 [INFO] [stderr] Checking dbus-bytestream v0.1.4 (/opt/crater/workdir) [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/demarshal.rs:155:12 [INFO] [stderr] | [INFO] [stderr] 155 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 156 | | if count_size == 4 { [INFO] [stderr] 157 | | Ok(Value::BasicValue(BasicValue::String(val))) [INFO] [stderr] 158 | | } else { [INFO] [stderr] 159 | | Ok(Value::BasicValue(BasicValue::Signature(Signature(val)))) [INFO] [stderr] 160 | | } [INFO] [stderr] 161 | | } [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] 155 | } else if count_size == 4 { [INFO] [stderr] 156 | Ok(Value::BasicValue(BasicValue::String(val))) [INFO] [stderr] 157 | } else { [INFO] [stderr] 158 | Ok(Value::BasicValue(BasicValue::Signature(Signature(val)))) [INFO] [stderr] 159 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/marshal.rs:19:56 [INFO] [stderr] | [INFO] [stderr] 19 | pub fn pad_to_multiple (buf: &mut Vec, len: usize) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/connection.rs:173:20 [INFO] [stderr] | [INFO] [stderr] 173 | let hd = match env::home_dir() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/demarshal.rs:155:12 [INFO] [stderr] | [INFO] [stderr] 155 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 156 | | if count_size == 4 { [INFO] [stderr] 157 | | Ok(Value::BasicValue(BasicValue::String(val))) [INFO] [stderr] 158 | | } else { [INFO] [stderr] 159 | | Ok(Value::BasicValue(BasicValue::Signature(Signature(val)))) [INFO] [stderr] 160 | | } [INFO] [stderr] 161 | | } [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] 155 | } else if count_size == 4 { [INFO] [stderr] 156 | Ok(Value::BasicValue(BasicValue::String(val))) [INFO] [stderr] 157 | } else { [INFO] [stderr] 158 | Ok(Value::BasicValue(BasicValue::Signature(Signature(val)))) [INFO] [stderr] 159 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/marshal.rs:19:56 [INFO] [stderr] | [INFO] [stderr] 19 | pub fn pad_to_multiple (buf: &mut Vec, len: usize) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/connection.rs:173:20 [INFO] [stderr] | [INFO] [stderr] 173 | let hd = match env::home_dir() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/demarshal.rs:55:8 [INFO] [stderr] | [INFO] [stderr] 55 | if buf.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buf.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: the loop variable `i` is only used to index `intbuf`. [INFO] [stderr] --> src/demarshal.rs:106:14 [INFO] [stderr] | [INFO] [stderr] 106 | for i in 0..len { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 106 | for in intbuf.iter_mut().take(len) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `intbuf`. [INFO] [stderr] --> src/demarshal.rs:112:18 [INFO] [stderr] | [INFO] [stderr] 112 | for i in len..8 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 112 | for in intbuf.iter_mut().skip(len) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/demarshal.rs:139:55 [INFO] [stderr] | [INFO] [stderr] 139 | Ok(Value::BasicValue(BasicValue::Byte(x))) => x as u32, [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [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: length comparison to one [INFO] [stderr] --> src/demarshal.rs:165:8 [INFO] [stderr] | [INFO] [stderr] 165 | if sig.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `sig.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 one [INFO] [stderr] --> src/demarshal.rs:218:8 [INFO] [stderr] | [INFO] [stderr] 218 | if sig.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `sig.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: the loop variable `i` is only used to index `bytes`. [INFO] [stderr] --> src/marshal.rs:36:14 [INFO] [stderr] | [INFO] [stderr] 36 | for i in 0..len { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 36 | for in bytes.iter().take(len) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `bytes`. [INFO] [stderr] --> src/marshal.rs:48:14 [INFO] [stderr] | [INFO] [stderr] 48 | for i in 0..len { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 48 | for in bytes.iter().take(len) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/marshal.rs:90:19 [INFO] [stderr] | [INFO] [stderr] 90 | let val = match *self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 91 | | true => 1, [INFO] [stderr] 92 | | false => 0 [INFO] [stderr] 93 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if *self { 1 } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/marshal.rs:114:21 [INFO] [stderr] | [INFO] [stderr] 114 | marshal_int(*self as u64, 2, buf) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u64::from(*self)` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/marshal.rs:134:21 [INFO] [stderr] | [INFO] [stderr] 134 | marshal_int(*self as u64, 4, buf) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u64::from(*self)` [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: it looks like you're manually copying between slices [INFO] [stderr] --> src/marshal.rs:240:18 [INFO] [stderr] | [INFO] [stderr] 240 | for i in 0..4 { [INFO] [stderr] | ^^^^ help: try replacing the loop by: `buf[len_idx..(4 + len_idx)].clone_from_slice(&len_buf[..4])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/marshal.rs:270:23 [INFO] [stderr] | [INFO] [stderr] 270 | impl Marshal for HashMap [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 270 | impl Marshal for HashMap [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/message.rs:66:43 [INFO] [stderr] | [INFO] [stderr] 66 | let endian = if self.big_endian { 'B' as u8 } else { 'l' as u8 }; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'B' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/message.rs:66:62 [INFO] [stderr] | [INFO] [stderr] 66 | let endian = if self.big_endian { 'B' as u8 } else { 'l' as u8 }; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'l' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/message.rs:178:16 [INFO] [stderr] | [INFO] [stderr] 178 | if let None = self.get_header(HEADER_FIELD_SIGNATURE) { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 179 | | let value = Value::BasicValue(BasicValue::Signature(Signature("".to_owned()))); [INFO] [stderr] 180 | | let variant = Variant::new(value, "g"); [INFO] [stderr] 181 | | self = self.add_header(HEADER_FIELD_SIGNATURE, variant); [INFO] [stderr] 182 | | }; [INFO] [stderr] | |_________- help: try this: `if self.get_header(HEADER_FIELD_SIGNATURE).is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/message.rs:184:21 [INFO] [stderr] | [INFO] [stderr] 184 | let b : &mut Box = &mut self.get_header_mut(HEADER_FIELD_SIGNATURE).unwrap().object; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `&mut Value` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/connection.rs:491:22 [INFO] [stderr] | [INFO] [stderr] 491 | if endian == 'B' as u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'B' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/address.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | / if kvs.is_none() { [INFO] [stderr] 97 | | return None; [INFO] [stderr] 98 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `kvs?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/demarshal.rs:55:8 [INFO] [stderr] | [INFO] [stderr] 55 | if buf.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buf.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: the loop variable `i` is only used to index `intbuf`. [INFO] [stderr] --> src/demarshal.rs:106:14 [INFO] [stderr] | [INFO] [stderr] 106 | for i in 0..len { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 106 | for in intbuf.iter_mut().take(len) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `intbuf`. [INFO] [stderr] --> src/demarshal.rs:112:18 [INFO] [stderr] | [INFO] [stderr] 112 | for i in len..8 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 112 | for in intbuf.iter_mut().skip(len) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/demarshal.rs:139:55 [INFO] [stderr] | [INFO] [stderr] 139 | Ok(Value::BasicValue(BasicValue::Byte(x))) => x as u32, [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [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: length comparison to one [INFO] [stderr] --> src/demarshal.rs:165:8 [INFO] [stderr] | [INFO] [stderr] 165 | if sig.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `sig.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 one [INFO] [stderr] --> src/demarshal.rs:218:8 [INFO] [stderr] | [INFO] [stderr] 218 | if sig.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `sig.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: the loop variable `i` is only used to index `bytes`. [INFO] [stderr] --> src/marshal.rs:36:14 [INFO] [stderr] | [INFO] [stderr] 36 | for i in 0..len { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 36 | for in bytes.iter().take(len) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `bytes`. [INFO] [stderr] --> src/marshal.rs:48:14 [INFO] [stderr] | [INFO] [stderr] 48 | for i in 0..len { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 48 | for in bytes.iter().take(len) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/marshal.rs:90:19 [INFO] [stderr] | [INFO] [stderr] 90 | let val = match *self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 91 | | true => 1, [INFO] [stderr] 92 | | false => 0 [INFO] [stderr] 93 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if *self { 1 } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/marshal.rs:114:21 [INFO] [stderr] | [INFO] [stderr] 114 | marshal_int(*self as u64, 2, buf) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u64::from(*self)` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/marshal.rs:134:21 [INFO] [stderr] | [INFO] [stderr] 134 | marshal_int(*self as u64, 4, buf) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u64::from(*self)` [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: it looks like you're manually copying between slices [INFO] [stderr] --> src/marshal.rs:240:18 [INFO] [stderr] | [INFO] [stderr] 240 | for i in 0..4 { [INFO] [stderr] | ^^^^ help: try replacing the loop by: `buf[len_idx..(4 + len_idx)].clone_from_slice(&len_buf[..4])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/marshal.rs:270:23 [INFO] [stderr] | [INFO] [stderr] 270 | impl Marshal for HashMap [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 270 | impl Marshal for HashMap [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/marshal.rs:356:36 [INFO] [stderr] | [INFO] [stderr] 356 | let x_bytes = vec![6, 0, 0, 0, 'a' as u8, 'b' as u8, 'c' as u8, '1' as u8, '2' as u8, '3' as u8, 0]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/marshal.rs:356:47 [INFO] [stderr] | [INFO] [stderr] 356 | let x_bytes = vec![6, 0, 0, 0, 'a' as u8, 'b' as u8, 'c' as u8, '1' as u8, '2' as u8, '3' as u8, 0]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/marshal.rs:356:58 [INFO] [stderr] | [INFO] [stderr] 356 | let x_bytes = vec![6, 0, 0, 0, 'a' as u8, 'b' as u8, 'c' as u8, '1' as u8, '2' as u8, '3' as u8, 0]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'c' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/marshal.rs:356:69 [INFO] [stderr] | [INFO] [stderr] 356 | let x_bytes = vec![6, 0, 0, 0, 'a' as u8, 'b' as u8, 'c' as u8, '1' as u8, '2' as u8, '3' as u8, 0]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'1' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/marshal.rs:356:80 [INFO] [stderr] | [INFO] [stderr] 356 | let x_bytes = vec![6, 0, 0, 0, 'a' as u8, 'b' as u8, 'c' as u8, '1' as u8, '2' as u8, '3' as u8, 0]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'2' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/marshal.rs:356:91 [INFO] [stderr] | [INFO] [stderr] 356 | let x_bytes = vec![6, 0, 0, 0, 'a' as u8, 'b' as u8, 'c' as u8, '1' as u8, '2' as u8, '3' as u8, 0]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'3' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/marshal.rs:389:27 [INFO] [stderr] | [INFO] [stderr] 389 | let v_bytes = vec![1, 'u' as u8, 0, 0, 42, 0, 0, 0]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'u' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/message.rs:66:43 [INFO] [stderr] | [INFO] [stderr] 66 | let endian = if self.big_endian { 'B' as u8 } else { 'l' as u8 }; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'B' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/message.rs:66:62 [INFO] [stderr] | [INFO] [stderr] 66 | let endian = if self.big_endian { 'B' as u8 } else { 'l' as u8 }; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'l' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/message.rs:178:16 [INFO] [stderr] | [INFO] [stderr] 178 | if let None = self.get_header(HEADER_FIELD_SIGNATURE) { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 179 | | let value = Value::BasicValue(BasicValue::Signature(Signature("".to_owned()))); [INFO] [stderr] 180 | | let variant = Variant::new(value, "g"); [INFO] [stderr] 181 | | self = self.add_header(HEADER_FIELD_SIGNATURE, variant); [INFO] [stderr] 182 | | }; [INFO] [stderr] | |_________- help: try this: `if self.get_header(HEADER_FIELD_SIGNATURE).is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/message.rs:184:21 [INFO] [stderr] | [INFO] [stderr] 184 | let b : &mut Box = &mut self.get_header_mut(HEADER_FIELD_SIGNATURE).unwrap().object; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `&mut Value` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/connection.rs:491:22 [INFO] [stderr] | [INFO] [stderr] 491 | if endian == 'B' as u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'B' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/address.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | / if kvs.is_none() { [INFO] [stderr] 97 | | return None; [INFO] [stderr] 98 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `kvs?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.98s [INFO] running `"docker" "inspect" "2317fcefb32caa0aa9e07c9439f5987ad263e43a76984ea79697be51c7b77ac6"` [INFO] running `"docker" "rm" "-f" "2317fcefb32caa0aa9e07c9439f5987ad263e43a76984ea79697be51c7b77ac6"` [INFO] [stdout] 2317fcefb32caa0aa9e07c9439f5987ad263e43a76984ea79697be51c7b77ac6