[INFO] cloning repository https://github.com/minipub/poker [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/minipub/poker" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fminipub%2Fpoker", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fminipub%2Fpoker'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] fb6df48ef8084eefd749557f4e4bccc5f5c7269c [INFO] testing minipub/poker against try#8de4c7234dd9b97c9d76b58671343fdbbc9a433e+target=x86_64-unknown-linux-musl for musl_upgrade_1_2_5_with_libc_patch_0 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fminipub%2Fpoker" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/minipub/poker [INFO] finished tweaking git repo https://github.com/minipub/poker [INFO] tweaked toml for git repo https://github.com/minipub/poker written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/minipub/poker on toolchain 8de4c7234dd9b97c9d76b58671343fdbbc9a433e [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/minipub/poker already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] a0d0ff0d29669031937a4951b8202ae6d3f7c639782808a6b6a78a451b271cf4 [INFO] running `Command { std: "docker" "start" "-a" "a0d0ff0d29669031937a4951b8202ae6d3f7c639782808a6b6a78a451b271cf4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a0d0ff0d29669031937a4951b8202ae6d3f7c639782808a6b6a78a451b271cf4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a0d0ff0d29669031937a4951b8202ae6d3f7c639782808a6b6a78a451b271cf4", kill_on_drop: false }` [INFO] [stdout] a0d0ff0d29669031937a4951b8202ae6d3f7c639782808a6b6a78a451b271cf4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "build" "--frozen" "--message-format=json" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] 148925a6a4608cb53e9910f946f39a769c22365245326179410a293c63d0d510 [INFO] running `Command { std: "docker" "start" "-a" "148925a6a4608cb53e9910f946f39a769c22365245326179410a293c63d0d510", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.139 [INFO] [stderr] Compiling cfg-if v1.0.0 [INFO] [stderr] Compiling ppv-lite86 v0.2.17 [INFO] [stderr] Compiling getrandom v0.2.8 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling poker v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: found module declaration for lib.rs [INFO] [stdout] --> src/main.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | mod lib; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: lib.rs is the root of this crate's library target [INFO] [stdout] = help: to refer to it from other targets, use the library's name as the path [INFO] [stdout] = note: `#[warn(special_module_name)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DECK_TWO` [INFO] [stdout] --> src/lib/judger.rs:6:34 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::lib::deck::{DECK_ONE, DECK_TWO}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::card::*` [INFO] [stdout] --> src/lib/mgr.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::lib::card::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::color::*` [INFO] [stdout] --> src/lib/mgr.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::lib::color::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::deck::*` [INFO] [stdout] --> src/lib/mgr.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::lib::deck::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::judger::*` [INFO] [stdout] --> src/lib/mgr.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::lib::judger::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::player::*` [INFO] [stdout] --> src/lib/mgr.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::lib::player::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::point::*` [INFO] [stdout] --> src/lib/mgr.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::lib::point::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::session::*` [INFO] [stdout] --> src/lib/mgr.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::lib::session::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::style::chain::Chain` [INFO] [stdout] --> src/lib/mgr.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::lib::style::chain::Chain; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::style::iface::Suit` [INFO] [stdout] --> src/lib/mgr.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::lib::style::iface::Suit; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::style::pairs::Pairs` [INFO] [stdout] --> src/lib/mgr.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::lib::style::pairs::Pairs; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::style::three_with_ones::ThreeWithOnes` [INFO] [stdout] --> src/lib/mgr.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::lib::style::three_with_ones::ThreeWithOnes; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::player::PlayerNum` [INFO] [stdout] --> src/lib/session.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::lib::player::PlayerNum; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::card::*` [INFO] [stdout] --> src/lib/style/fools.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::lib::card::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cs` [INFO] [stdout] --> src/lib/player.rs:107:17 [INFO] [stdout] | [INFO] [stdout] 107 | pub fn play(cs: Box>) {} [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cs` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cs` [INFO] [stdout] --> src/lib/style/fools.rs:27:19 [INFO] [stdout] | [INFO] [stdout] 27 | fn cmp(&self, cs: &Vec) -> Option { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `other` [INFO] [stdout] --> src/lib/style/fools.rs:58:18 [INFO] [stdout] | [INFO] [stdout] 58 | fn eq(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `other` [INFO] [stdout] --> src/lib/style/fools.rs:61:18 [INFO] [stdout] | [INFO] [stdout] 61 | fn ne(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `other` [INFO] [stdout] --> src/lib/style/fools.rs:77:18 [INFO] [stdout] | [INFO] [stdout] 77 | fn gt(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `other` [INFO] [stdout] --> src/lib/style/fools.rs:81:18 [INFO] [stdout] | [INFO] [stdout] 81 | fn ge(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `other` [INFO] [stdout] --> src/lib/style/fools.rs:85:18 [INFO] [stdout] | [INFO] [stdout] 85 | fn le(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `other` [INFO] [stdout] --> src/lib/style/fools.rs:89:18 [INFO] [stdout] | [INFO] [stdout] 89 | fn lt(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/lib/style/four_with_pairs.rs:56:14 [INFO] [stdout] | [INFO] [stdout] 56 | for (k, v) in buckets { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/lib/style/four_with_two.rs:56:14 [INFO] [stdout] | [INFO] [stdout] 56 | for (k, v) in buckets { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/lib/style/three_with_ones.rs:66:14 [INFO] [stdout] | [INFO] [stdout] 66 | for (k, v) in buckets { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/lib/style/three_with_pairs.rs:66:14 [INFO] [stdout] | [INFO] [stdout] 66 | for (k, v) in buckets { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/lib/style/threes.rs:61:14 [INFO] [stdout] | [INFO] [stdout] 61 | for (k, v) in buckets { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `unwrap_point` are never used [INFO] [stdout] --> src/lib/card.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl Card { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 14 | pub fn new(p: Point, c: Color) -> Card { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn unwrap_point(&self) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Spades`, `Plum`, `Square`, and `Hearts` are never constructed [INFO] [stdout] --> src/lib/color.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub enum Color { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 3 | Spades, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 4 | Plum, [INFO] [stdout] | ^^^^ [INFO] [stdout] 5 | Square, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 6 | Hearts, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Color` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DECK_ONE` is never used [INFO] [stdout] --> src/lib/deck.rs:5:11 [INFO] [stdout] | [INFO] [stdout] 5 | pub const DECK_ONE: u8 = 1; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DECK_TWO` is never used [INFO] [stdout] --> src/lib/deck.rs:6:11 [INFO] [stdout] | [INFO] [stdout] 6 | pub const DECK_TWO: u8 = 2; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Deck` is never constructed [INFO] [stdout] --> src/lib/deck.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct Deck {} [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Deck` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/lib/deck.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Deck { [INFO] [stdout] | --------- associated function in this implementation [INFO] [stdout] 13 | pub fn new(cnt: u8) -> Box> { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Judger` is never constructed [INFO] [stdout] --> src/lib/judger.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct Judger { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Judger` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/lib/judger.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl Judger { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 17 | pub fn new(deck_num: u8, cards: Box>) -> Judger { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | pub fn shuffle(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn reserve(&mut self, cnt: u8) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn deal_lord(&mut self, p: Rc>) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn deal(&mut self, ps: &Vec>>) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn cards_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn lords_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test` is never used [INFO] [stdout] --> src/lib/mgr.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 13 | pub fn test() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PlayerNum` is never used [INFO] [stdout] --> src/lib/player.rs:7:10 [INFO] [stdout] | [INFO] [stdout] 7 | pub enum PlayerNum { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PlayerNum` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Player` is never constructed [INFO] [stdout] --> src/lib/player.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct Player<'a> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Player` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/lib/player.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl<'a> Player<'a> { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 22 | pub fn new(id: u8, name: &str) -> Player { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn set_lord(&mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn push_card_func(p: Rc>, is_diff: bool) -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn push_diff_card(&mut self, t: Card) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn push_dup_card(&mut self, t: Card) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn find_card(&mut self, t: &Card) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn del_card_by_idx(&mut self, idx: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn del_card(&mut self, t: &Card) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub fn cards_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn set_seat(&mut self, i: usize) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | pub fn play(cs: Box>) {} [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/lib/point.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 21 | pub enum Point { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 22 | GoldenJoker(GoldenJoker), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 23 | SilverJoker(SilverJoker), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 24 | BigTwo(BigTwo), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 25 | Ace(Ace), [INFO] [stdout] | ^^^ [INFO] [stdout] 26 | King(King), [INFO] [stdout] | ^^^^ [INFO] [stdout] 27 | Queen(Queen), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 28 | Jack(Jack), [INFO] [stdout] | ^^^^ [INFO] [stdout] 29 | Ten(Ten), [INFO] [stdout] | ^^^ [INFO] [stdout] 30 | Nine(Nine), [INFO] [stdout] | ^^^^ [INFO] [stdout] 31 | Eight(Eight), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 32 | Seven(Seven), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 33 | Six(Six), [INFO] [stdout] | ^^^ [INFO] [stdout] 34 | Five(Five), [INFO] [stdout] | ^^^^ [INFO] [stdout] 35 | Four(Four), [INFO] [stdout] | ^^^^ [INFO] [stdout] 36 | Three(Three), [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Point` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/lib/point.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl Point { [INFO] [stdout] | ---------- associated function in this implementation [INFO] [stdout] 41 | pub fn new(p: Point) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `NumConfig` is never used [INFO] [stdout] --> src/lib/session.rs:15:10 [INFO] [stdout] | [INFO] [stdout] 15 | pub enum NumConfig { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `NumConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Session` is never constructed [INFO] [stdout] --> src/lib/session.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 22 | pub struct Session<'a> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Session` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Round` is never constructed [INFO] [stdout] --> src/lib/session.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 33 | pub struct Round<'a> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Round` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `push_player`, `begin`, `set_lord`, and `play_round` are never used [INFO] [stdout] --> src/lib/session.rs:39:12 [INFO] [stdout] | [INFO] [stdout] 38 | impl<'a> Session<'a> { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 39 | pub fn new(id: u64, nc: NumConfig) -> Result, &'a str> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn push_player(&mut self, p: Rc>>) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn begin(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn set_lord(&mut self, i: usize) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn play_round(&mut self, p: Rc>>, cs: &Vec) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `CardStyle` is never used [INFO] [stdout] --> src/lib/style/mod.rs:19:10 [INFO] [stdout] | [INFO] [stdout] 19 | pub enum CardStyle { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CardStyle` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `cmp` and `to_style` are never used [INFO] [stdout] --> src/lib/style/mod.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 32 | impl CardStyle { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 33 | pub fn cmp(&self, cs: &Vec) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Bomb` is never constructed [INFO] [stdout] --> src/lib/style/boom.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct Bomb(pub [Card; 4]); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Bomb` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `to_style` is never used [INFO] [stdout] --> src/lib/style/boom.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Bomb { [INFO] [stdout] | --------- associated function in this implementation [INFO] [stdout] 13 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `to_style` is never used [INFO] [stdout] --> src/lib/style/chain.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Chain { [INFO] [stdout] | ---------- associated function in this implementation [INFO] [stdout] 13 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Fools` is never constructed [INFO] [stdout] --> src/lib/style/fools.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct Fools(pub [Card; 2]); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Fools` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `to_style` is never used [INFO] [stdout] --> src/lib/style/fools.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl Fools { [INFO] [stdout] | ---------- associated function in this implementation [INFO] [stdout] 16 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `1` is never read [INFO] [stdout] --> src/lib/style/four_with_pairs.rs:11:41 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct FourWithPairs(pub [Card; 4], Vec<[Card; 2]>); [INFO] [stdout] | ------------- ^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this struct [INFO] [stdout] | [INFO] [stdout] = help: consider removing this field [INFO] [stdout] = note: `FourWithPairs` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `to_style` is never used [INFO] [stdout] --> src/lib/style/four_with_pairs.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl FourWithPairs { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 14 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FourWithTwo` is never constructed [INFO] [stdout] --> src/lib/style/four_with_two.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct FourWithTwo(pub [Card; 4], Vec); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FourWithTwo` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `to_style` is never used [INFO] [stdout] --> src/lib/style/four_with_two.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl FourWithTwo { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] 14 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Suit` is never used [INFO] [stdout] --> src/lib/style/iface.rs:4:11 [INFO] [stdout] | [INFO] [stdout] 4 | pub trait Suit { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `same_layer` is never used [INFO] [stdout] --> src/lib/style/iface.rs:11:8 [INFO] [stdout] | [INFO] [stdout] 9 | pub trait Layer { [INFO] [stdout] | ----- method in this trait [INFO] [stdout] 10 | type Other; [INFO] [stdout] 11 | fn same_layer(&self, _: Self::Other) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `StyleCmp` is never used [INFO] [stdout] --> src/lib/style/iface.rs:16:11 [INFO] [stdout] | [INFO] [stdout] 16 | pub trait StyleCmp { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `ToStyle` is never used [INFO] [stdout] --> src/lib/style/iface.rs:20:10 [INFO] [stdout] | [INFO] [stdout] 20 | pub type ToStyle = fn(cs: &Vec) -> Option; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `to_style` is never used [INFO] [stdout] --> src/lib/style/pairs.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Pairs { [INFO] [stdout] | ---------- associated function in this implementation [INFO] [stdout] 13 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Single` is never constructed [INFO] [stdout] --> src/lib/style/single.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct Single(pub Card); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Single` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `to_style` is never used [INFO] [stdout] --> src/lib/style/single.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl Single { [INFO] [stdout] | ----------- associated function in this implementation [INFO] [stdout] 10 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `to_style` is never used [INFO] [stdout] --> src/lib/style/three_with_ones.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl ThreeWithOnes { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 14 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `to_style` is never used [INFO] [stdout] --> src/lib/style/three_with_pairs.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl ThreeWithPairs { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] 14 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `to_style` is never used [INFO] [stdout] --> src/lib/style/threes.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl Threes { [INFO] [stdout] | ----------- associated function in this implementation [INFO] [stdout] 14 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `card_buckets` is never used [INFO] [stdout] --> src/lib/util/mod.rs:5:8 [INFO] [stdout] | [INFO] [stdout] 5 | pub fn card_buckets(cs: &Vec) -> HashMap>> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/lib/player.rs:22:30 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn new(id: u8, name: &str) -> Player { [INFO] [stdout] | ^^^^ ------ the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 22 | pub fn new(id: u8, name: &str) -> Player<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.63s [INFO] running `Command { std: "docker" "inspect" "148925a6a4608cb53e9910f946f39a769c22365245326179410a293c63d0d510", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "148925a6a4608cb53e9910f946f39a769c22365245326179410a293c63d0d510", kill_on_drop: false }` [INFO] [stdout] 148925a6a4608cb53e9910f946f39a769c22365245326179410a293c63d0d510 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "test" "--frozen" "--no-run" "--message-format=json" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] fcede2589efb99c3bc6febc41e62a618e4be201af38f9545c6c6ebcc2ec09527 [INFO] running `Command { std: "docker" "start" "-a" "fcede2589efb99c3bc6febc41e62a618e4be201af38f9545c6c6ebcc2ec09527", kill_on_drop: false }` [INFO] [stderr] Compiling poker v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: found module declaration for lib.rs [INFO] [stdout] --> src/main.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | mod lib; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: lib.rs is the root of this crate's library target [INFO] [stdout] = help: to refer to it from other targets, use the library's name as the path [INFO] [stdout] = note: `#[warn(special_module_name)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DECK_TWO` [INFO] [stdout] --> src/lib/judger.rs:6:34 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::lib::deck::{DECK_ONE, DECK_TWO}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::card::*` [INFO] [stdout] --> src/lib/mgr.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::lib::card::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::color::*` [INFO] [stdout] --> src/lib/mgr.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::lib::color::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::deck::*` [INFO] [stdout] --> src/lib/mgr.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::lib::deck::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::judger::*` [INFO] [stdout] --> src/lib/mgr.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::lib::judger::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::player::*` [INFO] [stdout] --> src/lib/mgr.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::lib::player::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::point::*` [INFO] [stdout] --> src/lib/mgr.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::lib::point::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::session::*` [INFO] [stdout] --> src/lib/mgr.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::lib::session::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::style::chain::Chain` [INFO] [stdout] --> src/lib/mgr.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::lib::style::chain::Chain; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::style::iface::Suit` [INFO] [stdout] --> src/lib/mgr.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::lib::style::iface::Suit; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::style::pairs::Pairs` [INFO] [stdout] --> src/lib/mgr.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::lib::style::pairs::Pairs; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::style::three_with_ones::ThreeWithOnes` [INFO] [stdout] --> src/lib/mgr.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::lib::style::three_with_ones::ThreeWithOnes; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::player::PlayerNum` [INFO] [stdout] --> src/lib/session.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::lib::player::PlayerNum; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lib::card::*` [INFO] [stdout] --> src/lib/style/fools.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::lib::card::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cs` [INFO] [stdout] --> src/lib/player.rs:107:17 [INFO] [stdout] | [INFO] [stdout] 107 | pub fn play(cs: Box>) {} [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cs` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cs` [INFO] [stdout] --> src/lib/style/fools.rs:27:19 [INFO] [stdout] | [INFO] [stdout] 27 | fn cmp(&self, cs: &Vec) -> Option { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `other` [INFO] [stdout] --> src/lib/style/fools.rs:58:18 [INFO] [stdout] | [INFO] [stdout] 58 | fn eq(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `other` [INFO] [stdout] --> src/lib/style/fools.rs:61:18 [INFO] [stdout] | [INFO] [stdout] 61 | fn ne(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `other` [INFO] [stdout] --> src/lib/style/fools.rs:77:18 [INFO] [stdout] | [INFO] [stdout] 77 | fn gt(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `other` [INFO] [stdout] --> src/lib/style/fools.rs:81:18 [INFO] [stdout] | [INFO] [stdout] 81 | fn ge(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `other` [INFO] [stdout] --> src/lib/style/fools.rs:85:18 [INFO] [stdout] | [INFO] [stdout] 85 | fn le(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `other` [INFO] [stdout] --> src/lib/style/fools.rs:89:18 [INFO] [stdout] | [INFO] [stdout] 89 | fn lt(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/lib/style/four_with_pairs.rs:56:14 [INFO] [stdout] | [INFO] [stdout] 56 | for (k, v) in buckets { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/lib/style/four_with_two.rs:56:14 [INFO] [stdout] | [INFO] [stdout] 56 | for (k, v) in buckets { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/lib/style/three_with_ones.rs:66:14 [INFO] [stdout] | [INFO] [stdout] 66 | for (k, v) in buckets { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/lib/style/three_with_pairs.rs:66:14 [INFO] [stdout] | [INFO] [stdout] 66 | for (k, v) in buckets { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/lib/style/threes.rs:61:14 [INFO] [stdout] | [INFO] [stdout] 61 | for (k, v) in buckets { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `cards_count` and `lords_count` are never used [INFO] [stdout] --> src/lib/judger.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl Judger { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn cards_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn lords_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test` is never used [INFO] [stdout] --> src/lib/mgr.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 13 | pub fn test() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PlayerNum` is never used [INFO] [stdout] --> src/lib/player.rs:7:10 [INFO] [stdout] | [INFO] [stdout] 7 | pub enum PlayerNum { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PlayerNum` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id` and `name` are never read [INFO] [stdout] --> src/lib/player.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct Player<'a> { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 14 | id: u8, [INFO] [stdout] | ^^ [INFO] [stdout] 15 | name: &'a str, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Player` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `find_card`, `del_card_by_idx`, and `play` are never used [INFO] [stdout] --> src/lib/player.rs:78:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl<'a> Player<'a> { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn find_card(&mut self, t: &Card) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn del_card_by_idx(&mut self, idx: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | pub fn play(cs: Box>) {} [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id`, `round`, `player_num`, `deck_num`, and `reserve_num` are never read [INFO] [stdout] --> src/lib/session.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub struct Session<'a> { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] 23 | id: u64, [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 26 | round: Round<'a>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 27 | player_num: u8, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 28 | deck_num: u8, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 29 | reserve_num: u8, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Session` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `player` and `style` are never read [INFO] [stdout] --> src/lib/session.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 33 | pub struct Round<'a> { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 34 | player: Option>>>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 35 | style: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Round` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `play_round` is never used [INFO] [stdout] --> src/lib/session.rs:97:12 [INFO] [stdout] | [INFO] [stdout] 38 | impl<'a> Session<'a> { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn play_round(&mut self, p: Rc>>, cs: &Vec) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Fools` is never constructed [INFO] [stdout] --> src/lib/style/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 19 | pub enum CardStyle { [INFO] [stdout] | --------- variant in this enum [INFO] [stdout] 20 | Fools(Rc), [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CardStyle` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `to_style` is never used [INFO] [stdout] --> src/lib/style/fools.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl Fools { [INFO] [stdout] | ---------- associated function in this implementation [INFO] [stdout] 16 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `to_style` is never used [INFO] [stdout] --> src/lib/style/four_with_pairs.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl FourWithPairs { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 14 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `to_style` is never used [INFO] [stdout] --> src/lib/style/four_with_two.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl FourWithTwo { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] 14 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/lib/player.rs:22:30 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn new(id: u8, name: &str) -> Player { [INFO] [stdout] | ^^^^ ------ the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 22 | pub fn new(id: u8, name: &str) -> Player<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.35s [INFO] running `Command { std: "docker" "inspect" "fcede2589efb99c3bc6febc41e62a618e4be201af38f9545c6c6ebcc2ec09527", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fcede2589efb99c3bc6febc41e62a618e4be201af38f9545c6c6ebcc2ec09527", kill_on_drop: false }` [INFO] [stdout] fcede2589efb99c3bc6febc41e62a618e4be201af38f9545c6c6ebcc2ec09527 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "test" "--frozen" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] 580902954b749e3eabbdac11c7f6571ba8667d086fbba996208622adf5336e97 [INFO] running `Command { std: "docker" "start" "-a" "580902954b749e3eabbdac11c7f6571ba8667d086fbba996208622adf5336e97", kill_on_drop: false }` [INFO] [stderr] warning: found module declaration for lib.rs [INFO] [stderr] --> src/main.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | mod lib; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: lib.rs is the root of this crate's library target [INFO] [stderr] = help: to refer to it from other targets, use the library's name as the path [INFO] [stderr] = note: `#[warn(special_module_name)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `DECK_TWO` [INFO] [stderr] --> src/lib/judger.rs:6:34 [INFO] [stderr] | [INFO] [stderr] 6 | use crate::lib::deck::{DECK_ONE, DECK_TWO}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lib::card::*` [INFO] [stderr] --> src/lib/mgr.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::lib::card::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lib::color::*` [INFO] [stderr] --> src/lib/mgr.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use crate::lib::color::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lib::deck::*` [INFO] [stderr] --> src/lib/mgr.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use crate::lib::deck::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lib::judger::*` [INFO] [stderr] --> src/lib/mgr.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use crate::lib::judger::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lib::player::*` [INFO] [stderr] --> src/lib/mgr.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use crate::lib::player::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lib::point::*` [INFO] [stderr] --> src/lib/mgr.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use crate::lib::point::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lib::session::*` [INFO] [stderr] --> src/lib/mgr.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::lib::session::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lib::style::chain::Chain` [INFO] [stderr] --> src/lib/mgr.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::lib::style::chain::Chain; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lib::style::iface::Suit` [INFO] [stderr] --> src/lib/mgr.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use crate::lib::style::iface::Suit; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lib::style::pairs::Pairs` [INFO] [stderr] --> src/lib/mgr.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use crate::lib::style::pairs::Pairs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lib::style::three_with_ones::ThreeWithOnes` [INFO] [stderr] --> src/lib/mgr.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use crate::lib::style::three_with_ones::ThreeWithOnes; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lib::player::PlayerNum` [INFO] [stderr] --> src/lib/session.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use crate::lib::player::PlayerNum; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::lib::card::*` [INFO] [stderr] --> src/lib/style/fools.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use crate::lib::card::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `cs` [INFO] [stderr] --> src/lib/player.rs:107:17 [INFO] [stderr] | [INFO] [stderr] 107 | pub fn play(cs: Box>) {} [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_cs` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `cs` [INFO] [stderr] --> src/lib/style/fools.rs:27:19 [INFO] [stderr] | [INFO] [stderr] 27 | fn cmp(&self, cs: &Vec) -> Option { [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_cs` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `other` [INFO] [stderr] --> src/lib/style/fools.rs:58:18 [INFO] [stderr] | [INFO] [stderr] 58 | fn eq(&self, other: &Self) -> bool { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `other` [INFO] [stderr] --> src/lib/style/fools.rs:61:18 [INFO] [stderr] | [INFO] [stderr] 61 | fn ne(&self, other: &Self) -> bool { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `other` [INFO] [stderr] --> src/lib/style/fools.rs:77:18 [INFO] [stdout] [INFO] [stderr] | [INFO] [stdout] running 11 tests [INFO] [stderr] 77 | fn gt(&self, other: &Self) -> bool { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `other` [INFO] [stderr] --> src/lib/style/fools.rs:81:18 [INFO] [stderr] | [INFO] [stderr] 81 | fn ge(&self, other: &Self) -> bool { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `other` [INFO] [stderr] --> src/lib/style/fools.rs:85:18 [INFO] [stderr] | [INFO] [stderr] 85 | fn le(&self, other: &Self) -> bool { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `other` [INFO] [stderr] --> src/lib/style/fools.rs:89:18 [INFO] [stderr] | [INFO] [stderr] 89 | fn lt(&self, other: &Self) -> bool { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_other` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `k` [INFO] [stderr] --> src/lib/style/four_with_pairs.rs:56:14 [INFO] [stderr] | [INFO] [stderr] 56 | for (k, v) in buckets { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `k` [INFO] [stderr] --> src/lib/style/four_with_two.rs:56:14 [INFO] [stderr] | [INFO] [stderr] 56 | for (k, v) in buckets { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `k` [INFO] [stderr] --> src/lib/style/three_with_ones.rs:66:14 [INFO] [stderr] | [INFO] [stderr] 66 | for (k, v) in buckets { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `k` [INFO] [stderr] --> src/lib/style/three_with_pairs.rs:66:14 [INFO] [stderr] | [INFO] [stderr] 66 | for (k, v) in buckets { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `k` [INFO] [stderr] --> src/lib/style/threes.rs:61:14 [INFO] [stderr] | [INFO] [stderr] 61 | for (k, v) in buckets { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stderr] [INFO] [stderr] warning: methods `cards_count` and `lords_count` are never used [INFO] [stderr] --> src/lib/judger.rs:84:12 [INFO] [stderr] | [INFO] [stderr] 16 | impl Judger { [INFO] [stderr] | ----------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 84 | pub fn cards_count(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 88 | pub fn lords_count(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function `test` is never used [INFO] [stderr] --> src/lib/mgr.rs:13:8 [INFO] [stderr] | [INFO] [stderr] 13 | pub fn test() { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `PlayerNum` is never used [INFO] [stderr] --> src/lib/player.rs:7:10 [INFO] [stderr] | [INFO] [stderr] 7 | pub enum PlayerNum { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `PlayerNum` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `id` and `name` are never read [INFO] [stderr] --> src/lib/player.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 13 | pub struct Player<'a> { [INFO] [stderr] | ------ fields in this struct [INFO] [stderr] 14 | id: u8, [INFO] [stderr] | ^^ [INFO] [stderr] 15 | name: &'a str, [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Player` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: associated items `find_card`, `del_card_by_idx`, and `play` are never used [INFO] [stderr] --> src/lib/player.rs:78:12 [INFO] [stderr] | [INFO] [stderr] 21 | impl<'a> Player<'a> { [INFO] [stderr] | ------------------- associated items in this implementation [INFO] [stderr] ... [INFO] [stderr] 78 | pub fn find_card(&mut self, t: &Card) -> Result { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 84 | pub fn del_card_by_idx(&mut self, idx: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 107 | pub fn play(cs: Box>) {} [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `id`, `round`, `player_num`, `deck_num`, and `reserve_num` are never read [INFO] [stderr] --> src/lib/session.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 22 | pub struct Session<'a> { [INFO] [stderr] | ------- fields in this struct [INFO] [stderr] 23 | id: u64, [INFO] [stderr] | ^^ [INFO] [stderr] ... [INFO] [stderr] 26 | round: Round<'a>, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 27 | player_num: u8, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 28 | deck_num: u8, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 29 | reserve_num: u8, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Session` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `player` and `style` are never read [INFO] [stderr] --> src/lib/session.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 33 | pub struct Round<'a> { [INFO] [stderr] | ----- fields in this struct [INFO] [stderr] 34 | player: Option>>>, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 35 | style: Option, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Round` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: method `play_round` is never used [INFO] [stderr] --> src/lib/session.rs:97:12 [INFO] [stderr] | [INFO] [stderr] 38 | impl<'a> Session<'a> { [INFO] [stderr] | -------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 97 | pub fn play_round(&mut self, p: Rc>>, cs: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `Fools` is never constructed [INFO] [stderr] --> src/lib/style/mod.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 19 | pub enum CardStyle { [INFO] [stderr] | --------- variant in this enum [INFO] [stderr] 20 | Fools(Rc), [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `CardStyle` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: associated function `to_style` is never used [INFO] [stderr] --> src/lib/style/fools.rs:16:12 [INFO] [stderr] | [INFO] [stderr] 15 | impl Fools { [INFO] [stderr] | ---------- associated function in this implementation [INFO] [stderr] 16 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `to_style` is never used [INFO] [stderr] --> src/lib/style/four_with_pairs.rs:14:12 [INFO] [stderr] | [INFO] [stderr] 13 | impl FourWithPairs { [INFO] [stderr] | ------------------ associated function in this implementation [INFO] [stderr] 14 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `to_style` is never used [INFO] [stderr] --> src/lib/style/four_with_two.rs:14:12 [INFO] [stderr] | [INFO] [stderr] 13 | impl FourWithTwo { [INFO] [stderr] | ---------------- associated function in this implementation [INFO] [stderr] 14 | pub fn to_style(cs: &Vec) -> Option { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/lib/player.rs:22:30 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn new(id: u8, name: &str) -> Player { [INFO] [stderr] | ^^^^ ------ the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 22 | pub fn new(id: u8, name: &str) -> Player<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: `poker` (bin "poker" test) generated 41 warnings (run `cargo fix --bin "poker" --tests` to apply 15 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.06s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/x86_64-unknown-linux-musl/debug/deps/poker-cbee75195abb1b31) [INFO] [stdout] test lib::color::tests::test_eq ... ok [INFO] [stdout] test lib::player::tests::test_del_card ... ok [INFO] [stdout] test lib::session::tests::test_session_3_players ... ok [INFO] [stdout] test lib::session::tests::test_session_none_numconfig ... ok [INFO] [stdout] test lib::style::tests::test_chain ... ok [INFO] [stdout] test lib::session::tests::test_session_4_players ... ok [INFO] [stdout] test lib::style::four_with_two::tests::test_suit ... ok [INFO] [stdout] test lib::style::tests::test_cmp ... ok [INFO] [stdout] test lib::style::tests::test_single ... ok [INFO] [stdout] test lib::player::tests::test_push_card ... ok [INFO] [stdout] test lib::style::four_with_pairs::tests::test_suit ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- lib::style::four_with_pairs::tests::test_suit stdout ---- [INFO] [stdout] buckets: {5: [Card { point: Five(5), color: Spades }, Card { point: Five(5), color: Hearts }], 10: [Card { point: Ten(10), color: Spades }, Card { point: Ten(10), color: Plum }, Card { point: Ten(10), color: Square }, Card { point: Ten(10), color: Hearts }]} [INFO] [stdout] [INFO] [stdout] thread 'lib::style::four_with_pairs::tests::test_suit' panicked at src/lib/style/four_with_pairs.rs:144:9: [INFO] [stdout] assertion `left == right` failed [INFO] [stdout] left: true [INFO] [stdout] right: false [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x75d5efbb5af2 - std::backtrace_rs::backtrace::libunwind::trace::h559918daaaf51ab7 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x75d5efbb5af2 - std::backtrace_rs::backtrace::trace_unsynchronized::hb04fbcf80d07af8b [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x75d5efbb5af2 - std::sys::backtrace::_print_fmt::h7c0bbbbfac0065d4 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/sys/backtrace.rs:66:9 [INFO] [stdout] 3: 0x75d5efbb5af2 - ::fmt::hb62c8ed31943daa5 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/sys/backtrace.rs:39:26 [INFO] [stdout] 4: 0x75d5efbf05d3 - core::fmt::rt::Argument::fmt::he5eaa7dd607ed4c9 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/core/src/fmt/rt.rs:173:76 [INFO] [stdout] 5: 0x75d5efbf05d3 - core::fmt::write::h375399f8cb90b45a [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/core/src/fmt/mod.rs:1460:25 [INFO] [stdout] 6: 0x75d5efbb2e23 - std::io::default_write_fmt::hdc1b4dd565dd0099 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x75d5efbb2e23 - std::io::Write::write_fmt::h29f6044e9bc43c23 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/io/mod.rs:1954:13 [INFO] [stdout] 8: 0x75d5efbb5942 - std::sys::backtrace::BacktraceLock::print::ha189c586374f916a [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/sys/backtrace.rs:42:9 [INFO] [stdout] 9: 0x75d5efbb70bc - std::panicking::default_hook::{{closure}}::ha3a26c98ff210e12 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/panicking.rs:300:27 [INFO] [stdout] 10: 0x75d5efbb6f12 - std::panicking::default_hook::h8c8a86b4390ab794 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/panicking.rs:324:9 [INFO] [stdout] 11: 0x75d5efb4b9a4 - as core::ops::function::Fn>::call::ha39ae63ed1e9a130 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/alloc/src/boxed.rs:1980:9 [INFO] [stdout] 12: 0x75d5efb4b9a4 - test::test_main_with_exit_callback::{{closure}}::h9df7c328ebe18c28 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x75d5efbb7a43 - as core::ops::function::Fn>::call::h96b7201b552e9069 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/alloc/src/boxed.rs:1980:9 [INFO] [stdout] 14: 0x75d5efbb7a43 - std::panicking::rust_panic_with_hook::hb3b66c2e80efa371 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/panicking.rs:841:13 [INFO] [stdout] 15: 0x75d5efbb780a - std::panicking::begin_panic_handler::{{closure}}::h9c68d0f839e62070 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/panicking.rs:706:13 [INFO] [stdout] 16: 0x75d5efbb5fe9 - std::sys::backtrace::__rust_end_short_backtrace::h68d22ddde4a73ad6 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/sys/backtrace.rs:168:18 [INFO] [stdout] 17: 0x75d5efbb749d - __rustc[f4ffc7196a45a630]::rust_begin_unwind [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/panicking.rs:697:5 [INFO] [stdout] 18: 0x75d5efad0580 - core::panicking::panic_fmt::h8cdd4c81eb9069aa [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/core/src/panicking.rs:75:14 [INFO] [stdout] 19: 0x75d5efad08d3 - core::panicking::assert_failed_inner::h483faaa3ae844fd5 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/core/src/panicking.rs:432:17 [INFO] [stdout] 20: 0x75d5efaeff59 - core::panicking::assert_failed::h9d3971af581d5572 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/core/src/panicking.rs:387:5 [INFO] [stdout] 21: 0x75d5efafdf81 - poker::lib::style::four_with_pairs::tests::test_suit::h0965412c2cf413d3 [INFO] [stdout] at /opt/rustwide/workdir/src/lib/style/four_with_pairs.rs:144:9 [INFO] [stdout] 22: 0x75d5efafd7b7 - poker::lib::style::four_with_pairs::tests::test_suit::{{closure}}::h5cb83cc0bd82bc79 [INFO] [stdout] at /opt/rustwide/workdir/src/lib/style/four_with_pairs.rs:133:19 [INFO] [stdout] 23: 0x75d5efafaf06 - core::ops::function::FnOnce::call_once::h94ebef6d9a91d928 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 24: 0x75d5efb5109b - core::ops::function::FnOnce::call_once::h9633dcf760ae81b2 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 25: 0x75d5efb5109b - test::__rust_begin_short_backtrace::h12ad5e04c8d7b4a5 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/test/src/lib.rs:648:18 [INFO] [stdout] 26: 0x75d5efb5030e - test::run_test_in_process::{{closure}}::he596b4fd3fa4893c [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/test/src/lib.rs:671:74 [INFO] [stdout] 27: 0x75d5efb5030e - as core::ops::function::FnOnce<()>>::call_once::hc746bc3fa75190e0 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/core/src/panic/unwind_safe.rs:272:9 [INFO] [stdout] 28: 0x75d5efb5030e - std::panicking::catch_unwind::do_call::hf4843906108d6299 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/panicking.rs:589:40 [INFO] [stdout] 29: 0x75d5efb5030e - std::panicking::catch_unwind::h849d4e8b03577bb9 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/panicking.rs:552:19 [INFO] [stdout] 30: 0x75d5efb5030e - std::panic::catch_unwind::ha1f814c1dec025d2 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/panic.rs:359:14 [INFO] [stdout] 31: 0x75d5efb5030e - test::run_test_in_process::h542aad3fe61255e7 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/test/src/lib.rs:671:27 [INFO] [stdout] 32: 0x75d5efb5030e - test::run_test::{{closure}}::h612788d75908cb63 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/test/src/lib.rs:592:43 [INFO] [stdout] 33: 0x75d5efb15194 - test::run_test::{{closure}}::hbfeea3bcb7245123 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/test/src/lib.rs:622:41 [INFO] [stdout] 34: 0x75d5efb15194 - std::sys::backtrace::__rust_begin_short_backtrace::h72542b83b4f87d5b [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/sys/backtrace.rs:152:18 [INFO] [stdout] 35: 0x75d5efb1898a - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hff26a7547ea762c9 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/thread/mod.rs:559:17 [INFO] [stdout] 36: 0x75d5efb1898a - as core::ops::function::FnOnce<()>>::call_once::hbee49bc759312884 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/core/src/panic/unwind_safe.rs:272:9 [INFO] [stdout] 37: 0x75d5efb1898a - std::panicking::catch_unwind::do_call::h61de12ce5e04e28f [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/panicking.rs:589:40 [INFO] [stdout] 38: 0x75d5efb1898a - std::panicking::catch_unwind::h454dd49873d22e18 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/panicking.rs:552:19 [INFO] [stdout] 39: 0x75d5efb1898a - std::panic::catch_unwind::h5c15187324f8cebb [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/panic.rs:359:14 [INFO] [stdout] 40: 0x75d5efb1898a - std::thread::Builder::spawn_unchecked_::{{closure}}::hbc9d9c7427673d42 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/thread/mod.rs:557:30 [INFO] [stdout] 41: 0x75d5efb1898a - core::ops::function::FnOnce::call_once{{vtable.shim}}::hefd458a129ddca13 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 42: 0x75d5efbba497 - as core::ops::function::FnOnce>::call_once::h2d6e2e526b02c3da [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/alloc/src/boxed.rs:1966:9 [INFO] [stdout] 43: 0x75d5efbba497 - as core::ops::function::FnOnce>::call_once::h1aefced482b33c72 [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/alloc/src/boxed.rs:1966:9 [INFO] [stdout] 44: 0x75d5efbba497 - std::sys::pal::unix::thread::Thread::new::thread_start::h7c9c6951b48f721d [INFO] [stdout] at /rustc/8de4c7234dd9b97c9d76b58671343fdbbc9a433e/library/std/src/sys/pal/unix/thread.rs:97:17 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] lib::style::four_with_pairs::tests::test_suit [INFO] [stdout] [INFO] [stdout] test result: FAILED. 10 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass `--bin poker` [INFO] running `Command { std: "docker" "inspect" "580902954b749e3eabbdac11c7f6571ba8667d086fbba996208622adf5336e97", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "580902954b749e3eabbdac11c7f6571ba8667d086fbba996208622adf5336e97", kill_on_drop: false }` [INFO] [stdout] 580902954b749e3eabbdac11c7f6571ba8667d086fbba996208622adf5336e97