[INFO] updating cached repository platy/bacnet-rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/platy/bacnet-rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/platy/bacnet-rs" "work/ex/clippy-test-run/sources/stable/gh/platy/bacnet-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/platy/bacnet-rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/platy/bacnet-rs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/platy/bacnet-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/platy/bacnet-rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 0f57355a29c15fcf21893e40182f7c0832023d6e [INFO] sha for GitHub repo platy/bacnet-rs: 0f57355a29c15fcf21893e40182f7c0832023d6e [INFO] validating manifest of platy/bacnet-rs 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 platy/bacnet-rs 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 platy/bacnet-rs [INFO] finished frobbing platy/bacnet-rs [INFO] frobbed toml for platy/bacnet-rs written to work/ex/clippy-test-run/sources/stable/gh/platy/bacnet-rs/Cargo.toml [INFO] started frobbing platy/bacnet-rs [INFO] finished frobbing platy/bacnet-rs [INFO] frobbed toml for platy/bacnet-rs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/platy/bacnet-rs/Cargo.toml [INFO] crate platy/bacnet-rs has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting platy/bacnet-rs against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/platy/bacnet-rs:/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] b38d82fb718f3bbf8450ac20d8eed58477168aaff3cb9bfa6d97b526e5253113 [INFO] running `"docker" "start" "-a" "b38d82fb718f3bbf8450ac20d8eed58477168aaff3cb9bfa6d97b526e5253113"` [INFO] [stderr] Checking bacnet v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/service/whois.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | device_instance_low: device_instance_low, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `device_instance_low` [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/service/whois.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | device_instance_high: device_instance_high, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `device_instance_high` [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/service/iam.rs:55:21 [INFO] [stderr] | [INFO] [stderr] 55 | device_instance: device_instance, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `device_instance` [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/service/iam.rs:56:21 [INFO] [stderr] | [INFO] [stderr] 56 | max_apdu: max_apdu, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `max_apdu` [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/service/iam.rs:58:21 [INFO] [stderr] | [INFO] [stderr] 58 | vendor_id: vendor_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `vendor_id` [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/object.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | device: device, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `device` [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/service/whois.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | device_instance_low: device_instance_low, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `device_instance_low` [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/service/whois.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | device_instance_high: device_instance_high, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `device_instance_high` [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/service/iam.rs:55:21 [INFO] [stderr] | [INFO] [stderr] 55 | device_instance: device_instance, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `device_instance` [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/service/iam.rs:56:21 [INFO] [stderr] | [INFO] [stderr] 56 | max_apdu: max_apdu, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `max_apdu` [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/service/iam.rs:58:21 [INFO] [stderr] | [INFO] [stderr] 58 | vendor_id: vendor_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `vendor_id` [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/object.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | device: device, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `device` [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: long literal lacking separators [INFO] [stderr] --> src/parse.rs:241:87 [INFO] [stderr] | [INFO] [stderr] 241 | parsed_context_value_eq(&[0x3Bu8, 0x99, 0x88, 0x77], ContextValue(3, Unsigned(0x998877))); [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0099_8877` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parse.rs:242:93 [INFO] [stderr] | [INFO] [stderr] 242 | parsed_context_value_eq(&[0x3Cu8, 0x99, 0x88, 0x77, 0x66], ContextValue(3, Unsigned(0x99887766))); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x9988_7766` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parse.rs:267:75 [INFO] [stderr] | [INFO] [stderr] 267 | parsed_application_value_eq(&[0x23u8, 0x99, 0x88, 0x77], Unsigned(0x998877)); [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0099_8877` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parse.rs:268:81 [INFO] [stderr] | [INFO] [stderr] 268 | parsed_application_value_eq(&[0x24u8, 0x99, 0x88, 0x77, 0x66], Unsigned(0x99887766)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x9988_7766` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parse.rs:399:86 [INFO] [stderr] | [INFO] [stderr] 399 | assert_tag_read(&[0x05u8, 0xFF, 0x59, 0x59, 0x59, 0x59], Tag::Application(0, 0x59595959)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x5959_5959` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parse.rs:450:51 [INFO] [stderr] | [INFO] [stderr] 450 | assert_eq!(read_unsigned(reader, 4).unwrap(), 0x22334455); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x2233_4455` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/serialise.rs:307:88 [INFO] [stderr] | [INFO] [stderr] 307 | written_context_value_eq(&[0x3Bu8, 0x99, 0x88, 0x77], ContextValue(3, Unsigned(0x998877))); [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0099_8877` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/serialise.rs:308:94 [INFO] [stderr] | [INFO] [stderr] 308 | written_context_value_eq(&[0x3Cu8, 0x99, 0x88, 0x77, 0x66], ContextValue(3, Unsigned(0x99887766))); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x9988_7766` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/serialise.rs:331:76 [INFO] [stderr] | [INFO] [stderr] 331 | written_application_value_eq(&[0x23u8, 0x99, 0x88, 0x77], Unsigned(0x998877)); [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0099_8877` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/serialise.rs:332:82 [INFO] [stderr] | [INFO] [stderr] 332 | written_application_value_eq(&[0x24u8, 0x99, 0x88, 0x77, 0x66], Unsigned(0x99887766)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x9988_7766` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/serialise.rs:453:87 [INFO] [stderr] | [INFO] [stderr] 453 | assert_tag_write(&[0x05u8, 0xFF, 0x59, 0x59, 0x59, 0x59], Tag::Application(0, 0x59595959)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x5959_5959` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [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/ast.rs:84:40 [INFO] [stderr] | [INFO] [stderr] 84 | pub fn get_context_value<'a>(sequence: &'a ValueSequence, context_number: Context) -> Option<&'a PrimitiveValue> { [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] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ast.rs:84:1 [INFO] [stderr] | [INFO] [stderr] 84 | / pub fn get_context_value<'a>(sequence: &'a ValueSequence, context_number: Context) -> Option<&'a PrimitiveValue> { [INFO] [stderr] 85 | | for element in sequence.iter() { [INFO] [stderr] 86 | | match element { [INFO] [stderr] 87 | | &SequenceableValue::ContextValue(number, ref value) if number == context_number => [INFO] [stderr] ... | [INFO] [stderr] 92 | | None [INFO] [stderr] 93 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | / match element { [INFO] [stderr] 87 | | &SequenceableValue::ContextValue(number, ref value) if number == context_number => [INFO] [stderr] 88 | | return Some(value), [INFO] [stderr] 89 | | _ => {} [INFO] [stderr] 90 | | } [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] 86 | match *element { [INFO] [stderr] 87 | SequenceableValue::ContextValue(number, ref value) if number == context_number => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parse.rs:320:21 [INFO] [stderr] | [INFO] [stderr] 320 | let mut value = (first_byte & 0x07) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(first_byte & 0x07)` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parse.rs:334:21 [INFO] [stderr] | [INFO] [stderr] 334 | value = try!(read_one_byte(reader)) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 334 | value = u32::from(match $ expr { [INFO] [stderr] 335 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 336 | :: Err ( err ) => { [INFO] [stderr] 337 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 338 | $ crate :: convert :: From :: from ( err ) ) } }); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parse.rs:410:25 [INFO] [stderr] | [INFO] [stderr] 410 | let next_byte = try!(read_one_byte(reader)) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 410 | let next_byte = u32::from(match $ expr { [INFO] [stderr] 411 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 412 | :: Err ( err ) => { [INFO] [stderr] 413 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 414 | $ crate :: convert :: From :: from ( err ) ) } }); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parse.rs:411:9 [INFO] [stderr] | [INFO] [stderr] 411 | value = value | (next_byte << (8 * i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `value |= (next_byte << (8 * i))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `seg << 3` [INFO] [stderr] --> src/serialise.rs:13:25 [INFO] [stderr] | [INFO] [stderr] 13 | writer.push(0 << 4 ^ seg << 3 ^ mor << 2 ^ sa << 1); // PDU type and flags [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: manual implementation of an assign operation [INFO] [stderr] --> src/serialise.rs:252:17 [INFO] [stderr] | [INFO] [stderr] 252 | t = t >> 8; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `t >>= 8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/whois.rs:29:22 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn handler(body: &ValueSequence, db: &object::BacnetDB) -> Option { [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] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/service/iam.rs:43:41 [INFO] [stderr] | [INFO] [stderr] 43 | ApplicationValue(Enumerated(self.segmentation_support as u32)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.segmentation_support)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/mod.rs:9:46 [INFO] [stderr] | [INFO] [stderr] 9 | pub fn handle_apdu(header: ApduHeader, body: &ValueSequence, db: &BacnetDB) -> Option { [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] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/mod.rs:27:25 [INFO] [stderr] | [INFO] [stderr] 27 | fn unmarshall(body: &ValueSequence) -> 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] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/parse.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | let mut reader: &mut io::Read = &mut io::Cursor::new(data); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/parse.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | let mut reader: &mut io::Read = &mut io::Cursor::new(data); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/parse.rs:202:13 [INFO] [stderr] | [INFO] [stderr] 202 | let mut reader: &mut io::Read = &mut io::Cursor::new(data); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/parse.rs:442:9 [INFO] [stderr] | [INFO] [stderr] 442 | let mut reader: &mut Read = &mut data; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/parse.rs:449:9 [INFO] [stderr] | [INFO] [stderr] 449 | let mut reader: &mut Read = &mut data; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [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/ast.rs:84:40 [INFO] [stderr] | [INFO] [stderr] 84 | pub fn get_context_value<'a>(sequence: &'a ValueSequence, context_number: Context) -> Option<&'a PrimitiveValue> { [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] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ast.rs:84:1 [INFO] [stderr] | [INFO] [stderr] 84 | / pub fn get_context_value<'a>(sequence: &'a ValueSequence, context_number: Context) -> Option<&'a PrimitiveValue> { [INFO] [stderr] 85 | | for element in sequence.iter() { [INFO] [stderr] 86 | | match element { [INFO] [stderr] 87 | | &SequenceableValue::ContextValue(number, ref value) if number == context_number => [INFO] [stderr] ... | [INFO] [stderr] 92 | | None [INFO] [stderr] 93 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | / match element { [INFO] [stderr] 87 | | &SequenceableValue::ContextValue(number, ref value) if number == context_number => [INFO] [stderr] 88 | | return Some(value), [INFO] [stderr] 89 | | _ => {} [INFO] [stderr] 90 | | } [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] 86 | match *element { [INFO] [stderr] 87 | SequenceableValue::ContextValue(number, ref value) if number == context_number => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parse.rs:320:21 [INFO] [stderr] | [INFO] [stderr] 320 | let mut value = (first_byte & 0x07) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(first_byte & 0x07)` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parse.rs:334:21 [INFO] [stderr] | [INFO] [stderr] 334 | value = try!(read_one_byte(reader)) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 334 | value = u32::from(match $ expr { [INFO] [stderr] 335 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 336 | :: Err ( err ) => { [INFO] [stderr] 337 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 338 | $ crate :: convert :: From :: from ( err ) ) } }); [INFO] [stderr] | [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/parse.rs:358:42 [INFO] [stderr] | [INFO] [stderr] 358 | let mut reader: &mut Read = &mut data.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] 358 | let mut reader: &mut Read = &mut &(*data).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 358 | let mut reader: &mut Read = &mut &[u8]::clone(data); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parse.rs:410:25 [INFO] [stderr] | [INFO] [stderr] 410 | let next_byte = try!(read_one_byte(reader)) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 410 | let next_byte = u32::from(match $ expr { [INFO] [stderr] 411 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 412 | :: Err ( err ) => { [INFO] [stderr] 413 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 414 | $ crate :: convert :: From :: from ( err ) ) } }); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parse.rs:411:9 [INFO] [stderr] | [INFO] [stderr] 411 | value = value | (next_byte << (8 * i)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `value |= (next_byte << (8 * i))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `seg << 3` [INFO] [stderr] --> src/serialise.rs:13:25 [INFO] [stderr] | [INFO] [stderr] 13 | writer.push(0 << 4 ^ seg << 3 ^ mor << 2 ^ sa << 1); // PDU type and flags [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: manual implementation of an assign operation [INFO] [stderr] --> src/serialise.rs:252:17 [INFO] [stderr] | [INFO] [stderr] 252 | t = t >> 8; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `t >>= 8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/whois.rs:29:22 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn handler(body: &ValueSequence, db: &object::BacnetDB) -> Option { [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] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/service/iam.rs:43:41 [INFO] [stderr] | [INFO] [stderr] 43 | ApplicationValue(Enumerated(self.segmentation_support as u32)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.segmentation_support)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/mod.rs:9:46 [INFO] [stderr] | [INFO] [stderr] 9 | pub fn handle_apdu(header: ApduHeader, body: &ValueSequence, db: &BacnetDB) -> Option { [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] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/service/mod.rs:27:25 [INFO] [stderr] | [INFO] [stderr] 27 | fn unmarshall(body: &ValueSequence) -> 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] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `bacnet`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "b38d82fb718f3bbf8450ac20d8eed58477168aaff3cb9bfa6d97b526e5253113"` [INFO] running `"docker" "rm" "-f" "b38d82fb718f3bbf8450ac20d8eed58477168aaff3cb9bfa6d97b526e5253113"` [INFO] [stdout] b38d82fb718f3bbf8450ac20d8eed58477168aaff3cb9bfa6d97b526e5253113