[INFO] updating cached repository marte/baraha [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/marte/baraha [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/marte/baraha" "work/ex/clippy-test-run/sources/stable/gh/marte/baraha"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/marte/baraha'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/marte/baraha" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/marte/baraha"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/marte/baraha'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 2f0407c1eeaa5973b3e9b207b55b34d8988f34aa [INFO] sha for GitHub repo marte/baraha: 2f0407c1eeaa5973b3e9b207b55b34d8988f34aa [INFO] validating manifest of marte/baraha 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 marte/baraha 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 marte/baraha [INFO] finished frobbing marte/baraha [INFO] frobbed toml for marte/baraha written to work/ex/clippy-test-run/sources/stable/gh/marte/baraha/Cargo.toml [INFO] started frobbing marte/baraha [INFO] finished frobbing marte/baraha [INFO] frobbed toml for marte/baraha written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/marte/baraha/Cargo.toml [INFO] crate marte/baraha 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 marte/baraha 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-5/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/marte/baraha:/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] 90feb0898134d3dacaba989483cf598b873a5093def9b587b550e4da521c9af5 [INFO] running `"docker" "start" "-a" "90feb0898134d3dacaba989483cf598b873a5093def9b587b550e4da521c9af5"` [INFO] [stderr] Checking termion v1.1.3 [INFO] [stderr] Checking baraha v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client.rs:140:21 [INFO] [stderr] | [INFO] [stderr] 140 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client.rs:153:21 [INFO] [stderr] | [INFO] [stderr] 153 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client.rs:165:25 [INFO] [stderr] | [INFO] [stderr] 165 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client.rs:339:13 [INFO] [stderr] | [INFO] [stderr] 339 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client.rs:140:21 [INFO] [stderr] | [INFO] [stderr] 140 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client.rs:153:21 [INFO] [stderr] | [INFO] [stderr] 153 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client.rs:165:25 [INFO] [stderr] | [INFO] [stderr] 165 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client.rs:339:13 [INFO] [stderr] | [INFO] [stderr] 339 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client.rs:349:13 [INFO] [stderr] | [INFO] [stderr] 349 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client.rs:359:13 [INFO] [stderr] | [INFO] [stderr] 359 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:83:25 [INFO] [stderr] | [INFO] [stderr] 83 | d.push(Card{rank: rank, suit: suit}); [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `rank` [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/game.rs:83:37 [INFO] [stderr] | [INFO] [stderr] 83 | d.push(Card{rank: rank, suit: suit}); [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `suit` [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] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client.rs:349:13 [INFO] [stderr] | [INFO] [stderr] 349 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client.rs:359:13 [INFO] [stderr] | [INFO] [stderr] 359 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:83:25 [INFO] [stderr] | [INFO] [stderr] 83 | d.push(Card{rank: rank, suit: suit}); [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `rank` [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/game.rs:83:37 [INFO] [stderr] | [INFO] [stderr] 83 | d.push(Card{rank: rank, suit: suit}); [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `suit` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/game.rs:10:15 [INFO] [stderr] | [INFO] [stderr] 10 | const RANKS: &'static str = "3456789TJQKA2"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/game.rs:11:15 [INFO] [stderr] | [INFO] [stderr] 11 | const SUITS: &'static str = "CSHD"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/game.rs:247:9 [INFO] [stderr] | [INFO] [stderr] 247 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/game.rs:203:19 [INFO] [stderr] | [INFO] [stderr] 203 | let res = match cards.len() { [INFO] [stderr] | ___________________^ [INFO] [stderr] 204 | | 0 => Ok(0), [INFO] [stderr] 205 | | 1 => Ok(cards[0].value()), [INFO] [stderr] 206 | | 2 => { [INFO] [stderr] ... | [INFO] [stderr] 245 | | } [INFO] [stderr] 246 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/game.rs:227:24 [INFO] [stderr] | [INFO] [stderr] 227 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 228 | | if let Some(val) = quadro(cards) { [INFO] [stderr] 229 | | (Combi::Quadro, val) [INFO] [stderr] 230 | | } else if let Some(val) = full_house(cards) { [INFO] [stderr] ... | [INFO] [stderr] 236 | | } [INFO] [stderr] 237 | | }; [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] 227 | } else if let Some(val) = quadro(cards) { [INFO] [stderr] 228 | (Combi::Quadro, val) [INFO] [stderr] 229 | } else if let Some(val) = full_house(cards) { [INFO] [stderr] 230 | (Combi::FullHouse, val) [INFO] [stderr] 231 | } else if let Some(val) = flush(cards) { [INFO] [stderr] 232 | (Combi::Flush, val) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/game.rs:10:15 [INFO] [stderr] | [INFO] [stderr] 10 | const RANKS: &'static str = "3456789TJQKA2"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/game.rs:11:15 [INFO] [stderr] | [INFO] [stderr] 11 | const SUITS: &'static str = "CSHD"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/game.rs:247:9 [INFO] [stderr] | [INFO] [stderr] 247 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/game.rs:203:19 [INFO] [stderr] | [INFO] [stderr] 203 | let res = match cards.len() { [INFO] [stderr] | ___________________^ [INFO] [stderr] 204 | | 0 => Ok(0), [INFO] [stderr] 205 | | 1 => Ok(cards[0].value()), [INFO] [stderr] 206 | | 2 => { [INFO] [stderr] ... | [INFO] [stderr] 245 | | } [INFO] [stderr] 246 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/game.rs:227:24 [INFO] [stderr] | [INFO] [stderr] 227 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 228 | | if let Some(val) = quadro(cards) { [INFO] [stderr] 229 | | (Combi::Quadro, val) [INFO] [stderr] 230 | | } else if let Some(val) = full_house(cards) { [INFO] [stderr] ... | [INFO] [stderr] 236 | | } [INFO] [stderr] 237 | | }; [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] 227 | } else if let Some(val) = quadro(cards) { [INFO] [stderr] 228 | (Combi::Quadro, val) [INFO] [stderr] 229 | } else if let Some(val) = full_house(cards) { [INFO] [stderr] 230 | (Combi::FullHouse, val) [INFO] [stderr] 231 | } else if let Some(val) = flush(cards) { [INFO] [stderr] 232 | (Combi::Flush, val) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/client.rs:237:13 [INFO] [stderr] | [INFO] [stderr] 237 | stream.write((output.to_string() + "\r\n").as_bytes()).expect("write error"); [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 character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/client.rs:309:40 [INFO] [stderr] | [INFO] [stderr] 309 | if bytes.len() == 2 && bytes[0] == ('#' 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'#' [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/client.rs:310:30 [INFO] [stderr] | [INFO] [stderr] 310 | let num = bytes[1] - ('0' as u8); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'0' [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/server.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 57 | / streams[sout.0 - 1].write((sout.1 + "\r\n").as_bytes()) [INFO] [stderr] 58 | | .expect("write error"); [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] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:33:14 [INFO] [stderr] | [INFO] [stderr] 33 | fn value(&self) -> Value { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/game.rs:196:80 [INFO] [stderr] | [INFO] [stderr] 196 | } else if is_same_rank(&cards[0..3]) && is_same_rank(&cards[3..5]) { [INFO] [stderr] | ________________________________________________________________________________^ [INFO] [stderr] 197 | | Some(cards[2].value()) [INFO] [stderr] 198 | | } else { [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/game.rs:194:73 [INFO] [stderr] | [INFO] [stderr] 194 | if is_same_rank(&cards[0..2]) && is_same_rank(&cards[2..5]) { [INFO] [stderr] | _________________________________________________________________________^ [INFO] [stderr] 195 | | Some(cards[2].value()) [INFO] [stderr] 196 | | } else if is_same_rank(&cards[0..3]) && is_same_rank(&cards[3..5]) { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/game.rs:222:28 [INFO] [stderr] | [INFO] [stderr] 222 | if let Some(_) = flush(cards) { [INFO] [stderr] | _____________________- ^^^^^^^ [INFO] [stderr] 223 | | (Combi::StraightFlush, val) [INFO] [stderr] 224 | | } else { [INFO] [stderr] 225 | | (Combi::Straight, val) [INFO] [stderr] 226 | | } [INFO] [stderr] | |_____________________- help: try this: `if flush(cards).is_some()` [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/client.rs:237:13 [INFO] [stderr] | [INFO] [stderr] 237 | stream.write((output.to_string() + "\r\n").as_bytes()).expect("write error"); [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/game.rs:391:9 [INFO] [stderr] | [INFO] [stderr] 391 | / let mut wins = false; [INFO] [stderr] 392 | | if self.hands[t.player()-1].is_empty() { [INFO] [stderr] 393 | | self.winners.push(t.player()); [INFO] [stderr] 394 | | wins = true; [INFO] [stderr] 395 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let wins = if self.hands[t.player()-1].is_empty() { ..; true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [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/client.rs:309:40 [INFO] [stderr] | [INFO] [stderr] 309 | if bytes.len() == 2 && bytes[0] == ('#' 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'#' [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/client.rs:310:30 [INFO] [stderr] | [INFO] [stderr] 310 | let num = bytes[1] - ('0' as u8); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'0' [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: length comparison to zero [INFO] [stderr] --> src/bots/dealer.rs:87:20 [INFO] [stderr] | [INFO] [stderr] 87 | if tokens.len() == 0 || tokens[0] != "P" { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tokens.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: identical conversion [INFO] [stderr] --> src/bots/dealer.rs:116:69 [INFO] [stderr] | [INFO] [stderr] 116 | vec![Output::PlayError(player, e.into())]) [INFO] [stderr] | ^^^^^^^^ help: consider removing `.into()`: `e` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/bots/dealer.rs:122:61 [INFO] [stderr] | [INFO] [stderr] 122 | vec![Output::PlayError(player, e.into())]) [INFO] [stderr] | ^^^^^^^^ help: consider removing `.into()`: `e` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/server.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 57 | / streams[sout.0 - 1].write((sout.1 + "\r\n").as_bytes()) [INFO] [stderr] 58 | | .expect("write error"); [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: Could not compile `baraha`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:33:14 [INFO] [stderr] | [INFO] [stderr] 33 | fn value(&self) -> Value { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/game.rs:196:80 [INFO] [stderr] | [INFO] [stderr] 196 | } else if is_same_rank(&cards[0..3]) && is_same_rank(&cards[3..5]) { [INFO] [stderr] | ________________________________________________________________________________^ [INFO] [stderr] 197 | | Some(cards[2].value()) [INFO] [stderr] 198 | | } else { [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/game.rs:194:73 [INFO] [stderr] | [INFO] [stderr] 194 | if is_same_rank(&cards[0..2]) && is_same_rank(&cards[2..5]) { [INFO] [stderr] | _________________________________________________________________________^ [INFO] [stderr] 195 | | Some(cards[2].value()) [INFO] [stderr] 196 | | } else if is_same_rank(&cards[0..3]) && is_same_rank(&cards[3..5]) { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/game.rs:222:28 [INFO] [stderr] | [INFO] [stderr] 222 | if let Some(_) = flush(cards) { [INFO] [stderr] | _____________________- ^^^^^^^ [INFO] [stderr] 223 | | (Combi::StraightFlush, val) [INFO] [stderr] 224 | | } else { [INFO] [stderr] 225 | | (Combi::Straight, val) [INFO] [stderr] 226 | | } [INFO] [stderr] | |_____________________- help: try this: `if flush(cards).is_some()` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/game.rs:391:9 [INFO] [stderr] | [INFO] [stderr] 391 | / let mut wins = false; [INFO] [stderr] 392 | | if self.hands[t.player()-1].is_empty() { [INFO] [stderr] 393 | | self.winners.push(t.player()); [INFO] [stderr] 394 | | wins = true; [INFO] [stderr] 395 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let wins = if self.hands[t.player()-1].is_empty() { ..; true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bots/dealer.rs:87:20 [INFO] [stderr] | [INFO] [stderr] 87 | if tokens.len() == 0 || tokens[0] != "P" { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tokens.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: identical conversion [INFO] [stderr] --> src/bots/dealer.rs:116:69 [INFO] [stderr] | [INFO] [stderr] 116 | vec![Output::PlayError(player, e.into())]) [INFO] [stderr] | ^^^^^^^^ help: consider removing `.into()`: `e` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/bots/dealer.rs:122:61 [INFO] [stderr] | [INFO] [stderr] 122 | vec![Output::PlayError(player, e.into())]) [INFO] [stderr] | ^^^^^^^^ help: consider removing `.into()`: `e` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `baraha`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "90feb0898134d3dacaba989483cf598b873a5093def9b587b550e4da521c9af5"` [INFO] running `"docker" "rm" "-f" "90feb0898134d3dacaba989483cf598b873a5093def9b587b550e4da521c9af5"` [INFO] [stdout] 90feb0898134d3dacaba989483cf598b873a5093def9b587b550e4da521c9af5