[INFO] updating cached repository kralo/ubx-multiplex [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/kralo/ubx-multiplex [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/kralo/ubx-multiplex" "work/ex/clippy-test-run/sources/stable/gh/kralo/ubx-multiplex"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/kralo/ubx-multiplex'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/kralo/ubx-multiplex" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/kralo/ubx-multiplex"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/kralo/ubx-multiplex'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 77f9cbee9b20324e23877a73ec8345a0972700d8 [INFO] sha for GitHub repo kralo/ubx-multiplex: 77f9cbee9b20324e23877a73ec8345a0972700d8 [INFO] validating manifest of kralo/ubx-multiplex 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 kralo/ubx-multiplex 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 kralo/ubx-multiplex [INFO] finished frobbing kralo/ubx-multiplex [INFO] frobbed toml for kralo/ubx-multiplex written to work/ex/clippy-test-run/sources/stable/gh/kralo/ubx-multiplex/Cargo.toml [INFO] started frobbing kralo/ubx-multiplex [INFO] finished frobbing kralo/ubx-multiplex [INFO] frobbed toml for kralo/ubx-multiplex written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/kralo/ubx-multiplex/Cargo.toml [INFO] crate kralo/ubx-multiplex 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 kralo/ubx-multiplex against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/kralo/ubx-multiplex:/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 -Dclippy::into_iter_on_array" "-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] 40a98ccdd26f97455f534acd9368952de5f57aef3af34c8b245afd53d874fa63 [INFO] running `"docker" "start" "-a" "40a98ccdd26f97455f534acd9368952de5f57aef3af34c8b245afd53d874fa63"` [INFO] [stderr] Checking ubx_multiplex v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:37:19 [INFO] [stderr] | [INFO] [stderr] 37 | Program { name: name } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/main.rs:172:41 [INFO] [stderr] | [INFO] [stderr] 172 | / print!("$GNTXT,01,01,02,S1: force-unblock after \ [INFO] [stderr] 173 | | timeout*00\r\n"); [INFO] [stderr] | |________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/main.rs:327:49 [INFO] [stderr] | [INFO] [stderr] 327 | / print!("$GNTXT,01,01,02,S2: acquiring diff \ [INFO] [stderr] 328 | | fix*2F\r\n"); [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/main.rs:334:49 [INFO] [stderr] | [INFO] [stderr] 334 | / print!("$GNTXT,01,01,02,S2: \ [INFO] [stderr] 335 | | loosing diff fix*00\r\n"); [INFO] [stderr] | |_________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/bin/nmea_dummy.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | print!("${}*{:02X}\r\n", &packet, checksum); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/bin/nmea_dummy.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | print!("${}*{:02X}\r\n", &packet, checksum); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:37:19 [INFO] [stderr] | [INFO] [stderr] 37 | Program { name: name } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/main.rs:172:41 [INFO] [stderr] | [INFO] [stderr] 172 | / print!("$GNTXT,01,01,02,S1: force-unblock after \ [INFO] [stderr] 173 | | timeout*00\r\n"); [INFO] [stderr] | |________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/main.rs:327:49 [INFO] [stderr] | [INFO] [stderr] 327 | / print!("$GNTXT,01,01,02,S2: acquiring diff \ [INFO] [stderr] 328 | | fix*2F\r\n"); [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/main.rs:334:49 [INFO] [stderr] | [INFO] [stderr] 334 | / print!("$GNTXT,01,01,02,S2: \ [INFO] [stderr] 335 | | loosing diff fix*00\r\n"); [INFO] [stderr] | |_________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:197:13 [INFO] [stderr] | [INFO] [stderr] 197 | / return if x == 0xb5 { [INFO] [stderr] 198 | | LexerState::UbxLeader1 [INFO] [stderr] 199 | | } else if x == 0x24 { [INFO] [stderr] 200 | | // '$' [INFO] [stderr] ... | [INFO] [stderr] 203 | | LexerState::GroundState [INFO] [stderr] 204 | | }; [INFO] [stderr] | |______________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 197 | if x == 0xb5 { [INFO] [stderr] 198 | LexerState::UbxLeader1 [INFO] [stderr] 199 | } else if x == 0x24 { [INFO] [stderr] 200 | // '$' [INFO] [stderr] 201 | LexerState::NmeaDollar [INFO] [stderr] 202 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:216:13 [INFO] [stderr] | [INFO] [stderr] 216 | return t; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `t` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/bin/hello.rs:16:32 [INFO] [stderr] | [INFO] [stderr] 16 | println!("got now {:?}", ( (test as i16) + ((test2 as u16) << 8) as i16)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i16::from(test)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/bin/hello.rs:16:49 [INFO] [stderr] | [INFO] [stderr] 16 | println!("got now {:?}", ( (test as i16) + ((test2 as u16) << 8) as i16)); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(test2)` [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:197:13 [INFO] [stderr] | [INFO] [stderr] 197 | / return if x == 0xb5 { [INFO] [stderr] 198 | | LexerState::UbxLeader1 [INFO] [stderr] 199 | | } else if x == 0x24 { [INFO] [stderr] 200 | | // '$' [INFO] [stderr] ... | [INFO] [stderr] 203 | | LexerState::GroundState [INFO] [stderr] 204 | | }; [INFO] [stderr] | |______________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 197 | if x == 0xb5 { [INFO] [stderr] 198 | LexerState::UbxLeader1 [INFO] [stderr] 199 | } else if x == 0x24 { [INFO] [stderr] 200 | // '$' [INFO] [stderr] 201 | LexerState::NmeaDollar [INFO] [stderr] 202 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:216:13 [INFO] [stderr] | [INFO] [stderr] 216 | return t; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `t` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [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] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/bin/hello.rs:16:32 [INFO] [stderr] | [INFO] [stderr] 16 | println!("got now {:?}", ( (test as i16) + ((test2 as u16) << 8) as i16)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i16::from(test)` [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/main.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | writeln!(io::stderr(), "{}: error: {}", self.name, mesg).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_write)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:64:44 [INFO] [stderr] | [INFO] [stderr] 64 | let program = Program::new(args.next().unwrap_or("test".to_string())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "test".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:155:25 [INFO] [stderr] | [INFO] [stderr] 155 | / match rx.try_recv() { [INFO] [stderr] 156 | | Ok(x) => { [INFO] [stderr] 157 | | block_state = x; [INFO] [stderr] 158 | | last_notify_second_thread = SystemTime::now(); [INFO] [stderr] ... | [INFO] [stderr] 163 | | _ => {} [INFO] [stderr] 164 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 155 | if let Ok(x) = rx.try_recv() { [INFO] [stderr] 156 | block_state = x; [INFO] [stderr] 157 | last_notify_second_thread = SystemTime::now(); [INFO] [stderr] 158 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:167:29 [INFO] [stderr] | [INFO] [stderr] 167 | / match last_notify_second_thread.elapsed() { [INFO] [stderr] 168 | | Ok(elapsed) => { [INFO] [stderr] 169 | | if elapsed.as_secs() > 2 { [INFO] [stderr] 170 | | // force unblock if other sender 'died' [INFO] [stderr] ... | [INFO] [stderr] 176 | | _ => {} [INFO] [stderr] 177 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 167 | if let Ok(elapsed) = last_notify_second_thread.elapsed() { [INFO] [stderr] 168 | if elapsed.as_secs() > 2 { [INFO] [stderr] 169 | // force unblock if other sender 'died' [INFO] [stderr] 170 | block_state = PassthroughState::Unblocked; [INFO] [stderr] 171 | print!("$GNTXT,01,01,02,S1: force-unblock after \ [INFO] [stderr] 172 | timeout*00\r\n"); [INFO] [stderr] ... [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/bin/hello.rs:16:49 [INFO] [stderr] | [INFO] [stderr] 16 | println!("got now {:?}", ( (test as i16) + ((test2 as u16) << 8) as i16)); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(test2)` [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:182:29 [INFO] [stderr] | [INFO] [stderr] 182 | io::stdout().write(&client_buffer).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:249:46 [INFO] [stderr] | [INFO] [stderr] 249 | length = *x as u16; [INFO] [stderr] | ^^^^^^^^^ help: try: `u16::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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:253:47 [INFO] [stderr] | [INFO] [stderr] 253 | length += (*x as u16) << 8; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(*x)` [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 u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:255:44 [INFO] [stderr] | [INFO] [stderr] 255 | t = if (length as i32) <= MAX_PACKET_LENGTH { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(length)` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:307:29 [INFO] [stderr] | [INFO] [stderr] 307 | / match t { [INFO] [stderr] 308 | | LexerState::UbxRecognized => { [INFO] [stderr] 309 | | // io::stdout() [INFO] [stderr] 310 | | // .write(format!("got a finished ublox packet\n").as_bytes()) [INFO] [stderr] ... | [INFO] [stderr] 343 | | _ => {} [INFO] [stderr] 344 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 307 | if let LexerState::UbxRecognized = t { [INFO] [stderr] 308 | // io::stdout() [INFO] [stderr] 309 | // .write(format!("got a finished ublox packet\n").as_bytes()) [INFO] [stderr] 310 | // .unwrap(); [INFO] [stderr] 311 | //io::stdout().write(&cur_packet).unwrap(); [INFO] [stderr] 312 | // inspect ublox packet [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:356:29 [INFO] [stderr] | [INFO] [stderr] 356 | io::stdout().write(&client_buffer).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ubx_multiplex`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/bin/nmea_dummy.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | checksum = checksum ^ b; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `checksum ^= b` [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: manual implementation of an assign operation [INFO] [stderr] --> src/bin/nmea_dummy.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | checksum = checksum ^ b; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `checksum ^= b` [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: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/main.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | writeln!(io::stderr(), "{}: error: {}", self.name, mesg).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_write)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:64:44 [INFO] [stderr] | [INFO] [stderr] 64 | let program = Program::new(args.next().unwrap_or("test".to_string())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "test".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:155:25 [INFO] [stderr] | [INFO] [stderr] 155 | / match rx.try_recv() { [INFO] [stderr] 156 | | Ok(x) => { [INFO] [stderr] 157 | | block_state = x; [INFO] [stderr] 158 | | last_notify_second_thread = SystemTime::now(); [INFO] [stderr] ... | [INFO] [stderr] 163 | | _ => {} [INFO] [stderr] 164 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 155 | if let Ok(x) = rx.try_recv() { [INFO] [stderr] 156 | block_state = x; [INFO] [stderr] 157 | last_notify_second_thread = SystemTime::now(); [INFO] [stderr] 158 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:167:29 [INFO] [stderr] | [INFO] [stderr] 167 | / match last_notify_second_thread.elapsed() { [INFO] [stderr] 168 | | Ok(elapsed) => { [INFO] [stderr] 169 | | if elapsed.as_secs() > 2 { [INFO] [stderr] 170 | | // force unblock if other sender 'died' [INFO] [stderr] ... | [INFO] [stderr] 176 | | _ => {} [INFO] [stderr] 177 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 167 | if let Ok(elapsed) = last_notify_second_thread.elapsed() { [INFO] [stderr] 168 | if elapsed.as_secs() > 2 { [INFO] [stderr] 169 | // force unblock if other sender 'died' [INFO] [stderr] 170 | block_state = PassthroughState::Unblocked; [INFO] [stderr] 171 | print!("$GNTXT,01,01,02,S1: force-unblock after \ [INFO] [stderr] 172 | timeout*00\r\n"); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:182:29 [INFO] [stderr] | [INFO] [stderr] 182 | io::stdout().write(&client_buffer).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:249:46 [INFO] [stderr] | [INFO] [stderr] 249 | length = *x as u16; [INFO] [stderr] | ^^^^^^^^^ help: try: `u16::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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:253:47 [INFO] [stderr] | [INFO] [stderr] 253 | length += (*x as u16) << 8; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(*x)` [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 u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:255:44 [INFO] [stderr] | [INFO] [stderr] 255 | t = if (length as i32) <= MAX_PACKET_LENGTH { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(length)` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:307:29 [INFO] [stderr] | [INFO] [stderr] 307 | / match t { [INFO] [stderr] 308 | | LexerState::UbxRecognized => { [INFO] [stderr] 309 | | // io::stdout() [INFO] [stderr] 310 | | // .write(format!("got a finished ublox packet\n").as_bytes()) [INFO] [stderr] ... | [INFO] [stderr] 343 | | _ => {} [INFO] [stderr] 344 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 307 | if let LexerState::UbxRecognized = t { [INFO] [stderr] 308 | // io::stdout() [INFO] [stderr] 309 | // .write(format!("got a finished ublox packet\n").as_bytes()) [INFO] [stderr] 310 | // .unwrap(); [INFO] [stderr] 311 | //io::stdout().write(&cur_packet).unwrap(); [INFO] [stderr] 312 | // inspect ublox packet [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:356:29 [INFO] [stderr] | [INFO] [stderr] 356 | io::stdout().write(&client_buffer).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ubx_multiplex`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "40a98ccdd26f97455f534acd9368952de5f57aef3af34c8b245afd53d874fa63"` [INFO] running `"docker" "rm" "-f" "40a98ccdd26f97455f534acd9368952de5f57aef3af34c8b245afd53d874fa63"` [INFO] [stdout] 40a98ccdd26f97455f534acd9368952de5f57aef3af34c8b245afd53d874fa63