[INFO] cloning repository https://github.com/jbrot/santorini-ai
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jbrot/santorini-ai" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjbrot%2Fsantorini-ai", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjbrot%2Fsantorini-ai'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 278df2ebfdf758ec6d2812fcb6a1faa4b774a1ff
[INFO] checking jbrot/santorini-ai against master#bca37a20bd376ce3fd138e7cdee7fe704e0f8814 for pr-139493-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjbrot%2Fsantorini-ai" "/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/jbrot/santorini-ai
[INFO] finished tweaking git repo https://github.com/jbrot/santorini-ai
[INFO] tweaked toml for git repo https://github.com/jbrot/santorini-ai written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jbrot/santorini-ai on toolchain bca37a20bd376ce3fd138e7cdee7fe704e0f8814
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jbrot/santorini-ai 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" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded cassowary v0.3.0
[INFO] [stderr]   Downloaded tinytemplate v1.1.0
[INFO] [stderr]   Downloaded termion v1.5.5
[INFO] [stderr]   Downloaded cached_proc_macro v0.4.0
[INFO] [stderr]   Downloaded cached v0.21.0
[INFO] [stderr]   Downloaded half v1.6.0
[INFO] [stderr]   Downloaded tui v0.13.0
[INFO] [stderr]   Downloaded criterion v0.3.3
[INFO] [stderr]   Downloaded web-sys v0.3.45
[INFO] [stderr]   Downloaded plotters v0.2.15
[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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b0ab18cff6c73d2fc48d3aa89dc83c2137390d095089682aa8bc0c04a6ea5f1e
[INFO] running `Command { std: "docker" "start" "-a" "b0ab18cff6c73d2fc48d3aa89dc83c2137390d095089682aa8bc0c04a6ea5f1e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b0ab18cff6c73d2fc48d3aa89dc83c2137390d095089682aa8bc0c04a6ea5f1e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b0ab18cff6c73d2fc48d3aa89dc83c2137390d095089682aa8bc0c04a6ea5f1e", kill_on_drop: false }`
[INFO] [stdout] b0ab18cff6c73d2fc48d3aa89dc83c2137390d095089682aa8bc0c04a6ea5f1e
[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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 48153b77fafd983d491ae7f4c894bd45e33e1b7b373b10fef6a386af2d81cfd5
[INFO] running `Command { std: "docker" "start" "-a" "48153b77fafd983d491ae7f4c894bd45e33e1b7b373b10fef6a386af2d81cfd5", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v1.0.51
[INFO] [stderr]    Compiling libc v0.2.80
[INFO] [stderr]    Compiling proc-macro-nested v0.1.6
[INFO] [stderr]    Compiling quote v1.0.7
[INFO] [stderr]     Checking futures-sink v0.3.8
[INFO] [stderr]    Compiling strsim v0.9.3
[INFO] [stderr]     Checking futures-core v0.3.8
[INFO] [stderr]    Compiling serde v1.0.117
[INFO] [stderr]     Checking futures-task v0.3.8
[INFO] [stderr]     Checking futures-channel v0.3.8
[INFO] [stderr]    Compiling const_fn v0.4.3
[INFO] [stderr]     Checking futures-io v0.3.8
[INFO] [stderr]    Compiling byteorder v1.3.4
[INFO] [stderr]    Compiling event-listener v2.5.1
[INFO] [stderr]    Compiling cast v0.2.3
[INFO] [stderr]    Compiling async-mutex v1.4.0
[INFO] [stderr]    Compiling serde_json v1.0.59
[INFO] [stderr]     Checking itoa v0.4.6
[INFO] [stderr]     Checking unicode-segmentation v1.7.1
[INFO] [stderr]     Checking cassowary v0.3.0
[INFO] [stderr]     Checking regex-automata v0.1.9
[INFO] [stderr]     Checking crossbeam-epoch v0.9.1
[INFO] [stderr]    Compiling serde_derive v1.0.117
[INFO] [stderr]     Checking getrandom v0.1.15
[INFO] [stderr]     Checking termion v1.5.5
[INFO] [stderr]     Checking time v0.1.44
[INFO] [stderr]     Checking crossbeam-deque v0.8.0
[INFO] [stderr]     Checking num_cpus v1.13.0
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking csv-core v0.1.10
[INFO] [stderr]     Checking half v1.6.0
[INFO] [stderr]     Checking rayon-core v1.9.0
[INFO] [stderr]     Checking chrono v0.4.19
[INFO] [stderr]     Checking tui v0.13.0
[INFO] [stderr]     Checking rand_pcg v0.2.1
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking regex v1.4.2
[INFO] [stderr]     Checking clap v2.33.3
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking rayon v1.5.0
[INFO] [stderr]     Checking criterion-plot v0.4.3
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking plotters v0.2.15
[INFO] [stderr]     Checking bstr v0.2.14
[INFO] [stderr]     Checking serde_cbor v0.11.1
[INFO] [stderr]     Checking csv v1.1.5
[INFO] [stderr]     Checking tinytemplate v1.1.0
[INFO] [stderr]    Compiling darling_core v0.10.2
[INFO] [stderr]    Compiling pin-project-internal v1.0.2
[INFO] [stderr]    Compiling futures-macro v0.3.8
[INFO] [stderr]    Compiling thiserror-impl v1.0.22
[INFO] [stderr]    Compiling async-trait v0.1.42
[INFO] [stderr]    Compiling derive_more v0.99.11
[INFO] [stderr]    Compiling darling_macro v0.10.2
[INFO] [stderr]     Checking thiserror v1.0.22
[INFO] [stderr]     Checking pin-project v1.0.2
[INFO] [stderr]     Checking futures-util v0.3.8
[INFO] [stderr]    Compiling darling v0.10.2
[INFO] [stderr]    Compiling cached_proc_macro v0.4.0
[INFO] [stderr]     Checking criterion v0.3.3
[INFO] [stderr]     Checking futures-executor v0.3.8
[INFO] [stderr]     Checking futures v0.3.8
[INFO] [stderr]     Checking cached v0.21.0
[INFO] [stderr]     Checking santorini-ai v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/mcts/santorini.rs:153:21
[INFO] [stdout]     |
[INFO] [stdout] 153 |                     &mut actions.shuffle(rng);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 153 |                     let _ = &mut actions.shuffle(rng);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/player/mod.rs:24:15
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn render(&self, game: &Game<T>) -> BoardWidget;
[INFO] [stdout]    |               ^^^^^                     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |               |
[INFO] [stdout]    |               the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn render(&self, game: &Game<T>) -> BoardWidget<'_>;
[INFO] [stdout]    |                                                    ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/heuristic_ai.rs:197:15
[INFO] [stdout]     |
[INFO] [stdout] 197 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 197 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/heuristic_ai.rs:222:15
[INFO] [stdout]     |
[INFO] [stdout] 222 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 222 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/heuristic_ai.rs:250:15
[INFO] [stdout]     |
[INFO] [stdout] 250 |     fn render(&self, game: &Game<Move>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                        ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 250 |     fn render(&self, game: &Game<Move>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/heuristic_ai.rs:272:15
[INFO] [stdout]     |
[INFO] [stdout] 272 |     fn render(&self, game: &Game<Build>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                         ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 272 |     fn render(&self, game: &Game<Build>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/player/human.rs:94:51
[INFO] [stdout]    |
[INFO] [stdout] 94 |     fn default_render<T: GameState + NormalState>(&self, game: &Game<T>) -> BoardWidget {
[INFO] [stdout]    |                                                   ^^^^^                     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                                   |
[INFO] [stdout]    |                                                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 94 |     fn default_render<T: GameState + NormalState>(&self, game: &Game<T>) -> BoardWidget<'_> {
[INFO] [stdout]    |                                                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/human.rs:115:54
[INFO] [stdout]     |
[INFO] [stdout] 115 | fn pawn_at<T: GameState + NormalState + Clone>(game: &Game<T>, loc: Point) -> Option<Pawn<T>> {
[INFO] [stdout]     |                                                      ^^^^^^^^                        ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                                      |
[INFO] [stdout]     |                                                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 115 | fn pawn_at<T: GameState + NormalState + Clone>(game: &Game<T>, loc: Point) -> Option<Pawn<'_, T>> {
[INFO] [stdout]     |                                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/human.rs:130:15
[INFO] [stdout]     |
[INFO] [stdout] 130 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 130 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/human.rs:171:15
[INFO] [stdout]     |
[INFO] [stdout] 171 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 171 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/human.rs:219:15
[INFO] [stdout]     |
[INFO] [stdout] 219 |     fn render(&self, game: &Game<Move>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                        ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 219 |     fn render(&self, game: &Game<Move>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/human.rs:268:15
[INFO] [stdout]     |
[INFO] [stdout] 268 |     fn render(&self, game: &Game<Build>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                         ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 268 |     fn render(&self, game: &Game<Build>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/player/mcts_ai.rs:47:47
[INFO] [stdout]    |
[INFO] [stdout] 47 |             MctsOrParams::Params(_) => panic!(message),
[INFO] [stdout]    |                                        ------ ^^^^^^^
[INFO] [stdout]    |                                        |
[INFO] [stdout]    |                                        help: use std::panic::panic_any instead: `std::panic::panic_any`
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/mcts_ai.rs:107:15
[INFO] [stdout]     |
[INFO] [stdout] 107 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 107 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/mcts_ai.rs:132:15
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/mcts_ai.rs:173:15
[INFO] [stdout]     |
[INFO] [stdout] 173 |     fn render(&self, game: &Game<Move>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                        ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 173 |     fn render(&self, game: &Game<Move>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/mcts_ai.rs:194:15
[INFO] [stdout]     |
[INFO] [stdout] 194 |     fn render(&self, game: &Game<Build>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                         ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 194 |     fn render(&self, game: &Game<Build>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/player/random_ai.rs:48:15
[INFO] [stdout]    |
[INFO] [stdout] 48 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget {
[INFO] [stdout]    |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |               |
[INFO] [stdout]    |               the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 48 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget<'_> {
[INFO] [stdout]    |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/player/random_ai.rs:73:15
[INFO] [stdout]    |
[INFO] [stdout] 73 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget {
[INFO] [stdout]    |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |               |
[INFO] [stdout]    |               the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 73 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget<'_> {
[INFO] [stdout]    |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/player/random_ai.rs:98:15
[INFO] [stdout]    |
[INFO] [stdout] 98 |     fn render(&self, game: &Game<Move>) -> BoardWidget {
[INFO] [stdout]    |               ^^^^^                        ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |               |
[INFO] [stdout]    |               the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 98 |     fn render(&self, game: &Game<Move>) -> BoardWidget<'_> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/random_ai.rs:121:15
[INFO] [stdout]     |
[INFO] [stdout] 121 |     fn render(&self, game: &Game<Build>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                         ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 121 |     fn render(&self, game: &Game<Build>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/santorini.rs:425:25
[INFO] [stdout]     |
[INFO] [stdout] 425 |     pub fn player_pawns(&self, player: Player) -> [Pawn<S>; 2] {
[INFO] [stdout]     |                         ^^^^^                      ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 425 |     pub fn player_pawns(&self, player: Player) -> [Pawn<'_, S>; 2] {
[INFO] [stdout]     |                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/santorini.rs:442:25
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn active_pawns(&self) -> [Pawn<S>; 2] {
[INFO] [stdout]     |                         ^^^^^      ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn active_pawns(&self) -> [Pawn<'_, S>; 2] {
[INFO] [stdout]     |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/santorini.rs:446:27
[INFO] [stdout]     |
[INFO] [stdout] 446 |     pub fn inactive_pawns(&self) -> [Pawn<S>; 2] {
[INFO] [stdout]     |                           ^^^^^      ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 446 |     pub fn inactive_pawns(&self) -> [Pawn<'_, S>; 2] {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/santorini.rs:972:24
[INFO] [stdout]     |
[INFO] [stdout] 972 |     pub fn active_pawn(&self) -> Pawn<Build> {
[INFO] [stdout]     |                        ^^^^^     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 972 |     pub fn active_pawn(&self) -> Pawn<'_, Build> {
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/ui/app.rs:26:28
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn current_player_name(&self) -> Span {
[INFO] [stdout]    |                            ^^^^^     ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                            |
[INFO] [stdout]    |                            the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn current_player_name(&self) -> Span<'_> {
[INFO] [stdout]    |                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/ui/menu.rs:58:26
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn selected_item(&self) -> &Spans {
[INFO] [stdout]    |                          ^^^^^     ^^^^^^
[INFO] [stdout]    |                          |         ||
[INFO] [stdout]    |                          |         |the same lifetime is hidden here
[INFO] [stdout]    |                          |         the same lifetime is elided here
[INFO] [stdout]    |                          the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn selected_item(&self) -> &Spans<'_> {
[INFO] [stdout]    |                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/mcts/santorini.rs:153:21
[INFO] [stdout]     |
[INFO] [stdout] 153 |                     &mut actions.shuffle(rng);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 153 |                     let _ = &mut actions.shuffle(rng);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/player/mod.rs:24:15
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn render(&self, game: &Game<T>) -> BoardWidget;
[INFO] [stdout]    |               ^^^^^                     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |               |
[INFO] [stdout]    |               the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn render(&self, game: &Game<T>) -> BoardWidget<'_>;
[INFO] [stdout]    |                                                    ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/heuristic_ai.rs:197:15
[INFO] [stdout]     |
[INFO] [stdout] 197 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 197 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/heuristic_ai.rs:222:15
[INFO] [stdout]     |
[INFO] [stdout] 222 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 222 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/heuristic_ai.rs:250:15
[INFO] [stdout]     |
[INFO] [stdout] 250 |     fn render(&self, game: &Game<Move>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                        ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 250 |     fn render(&self, game: &Game<Move>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/heuristic_ai.rs:272:15
[INFO] [stdout]     |
[INFO] [stdout] 272 |     fn render(&self, game: &Game<Build>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                         ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 272 |     fn render(&self, game: &Game<Build>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/player/human.rs:94:51
[INFO] [stdout]    |
[INFO] [stdout] 94 |     fn default_render<T: GameState + NormalState>(&self, game: &Game<T>) -> BoardWidget {
[INFO] [stdout]    |                                                   ^^^^^                     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                                   |
[INFO] [stdout]    |                                                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 94 |     fn default_render<T: GameState + NormalState>(&self, game: &Game<T>) -> BoardWidget<'_> {
[INFO] [stdout]    |                                                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/human.rs:115:54
[INFO] [stdout]     |
[INFO] [stdout] 115 | fn pawn_at<T: GameState + NormalState + Clone>(game: &Game<T>, loc: Point) -> Option<Pawn<T>> {
[INFO] [stdout]     |                                                      ^^^^^^^^                        ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                                      |
[INFO] [stdout]     |                                                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 115 | fn pawn_at<T: GameState + NormalState + Clone>(game: &Game<T>, loc: Point) -> Option<Pawn<'_, T>> {
[INFO] [stdout]     |                                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/human.rs:130:15
[INFO] [stdout]     |
[INFO] [stdout] 130 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 130 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/human.rs:171:15
[INFO] [stdout]     |
[INFO] [stdout] 171 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 171 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/human.rs:219:15
[INFO] [stdout]     |
[INFO] [stdout] 219 |     fn render(&self, game: &Game<Move>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                        ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 219 |     fn render(&self, game: &Game<Move>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/human.rs:268:15
[INFO] [stdout]     |
[INFO] [stdout] 268 |     fn render(&self, game: &Game<Build>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                         ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 268 |     fn render(&self, game: &Game<Build>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/player/mcts_ai.rs:47:47
[INFO] [stdout]    |
[INFO] [stdout] 47 |             MctsOrParams::Params(_) => panic!(message),
[INFO] [stdout]    |                                        ------ ^^^^^^^
[INFO] [stdout]    |                                        |
[INFO] [stdout]    |                                        help: use std::panic::panic_any instead: `std::panic::panic_any`
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/mcts_ai.rs:107:15
[INFO] [stdout]     |
[INFO] [stdout] 107 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 107 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/mcts_ai.rs:132:15
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/mcts_ai.rs:173:15
[INFO] [stdout]     |
[INFO] [stdout] 173 |     fn render(&self, game: &Game<Move>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                        ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 173 |     fn render(&self, game: &Game<Move>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/mcts_ai.rs:194:15
[INFO] [stdout]     |
[INFO] [stdout] 194 |     fn render(&self, game: &Game<Build>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                         ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 194 |     fn render(&self, game: &Game<Build>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/player/random_ai.rs:48:15
[INFO] [stdout]    |
[INFO] [stdout] 48 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget {
[INFO] [stdout]    |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |               |
[INFO] [stdout]    |               the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 48 |     fn render(&self, game: &Game<PlaceOne>) -> BoardWidget<'_> {
[INFO] [stdout]    |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/player/random_ai.rs:73:15
[INFO] [stdout]    |
[INFO] [stdout] 73 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget {
[INFO] [stdout]    |               ^^^^^                            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |               |
[INFO] [stdout]    |               the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 73 |     fn render(&self, game: &Game<PlaceTwo>) -> BoardWidget<'_> {
[INFO] [stdout]    |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/player/random_ai.rs:98:15
[INFO] [stdout]    |
[INFO] [stdout] 98 |     fn render(&self, game: &Game<Move>) -> BoardWidget {
[INFO] [stdout]    |               ^^^^^                        ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |               |
[INFO] [stdout]    |               the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 98 |     fn render(&self, game: &Game<Move>) -> BoardWidget<'_> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/player/random_ai.rs:121:15
[INFO] [stdout]     |
[INFO] [stdout] 121 |     fn render(&self, game: &Game<Build>) -> BoardWidget {
[INFO] [stdout]     |               ^^^^^                         ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |               |
[INFO] [stdout]     |               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 121 |     fn render(&self, game: &Game<Build>) -> BoardWidget<'_> {
[INFO] [stdout]     |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/santorini.rs:425:25
[INFO] [stdout]     |
[INFO] [stdout] 425 |     pub fn player_pawns(&self, player: Player) -> [Pawn<S>; 2] {
[INFO] [stdout]     |                         ^^^^^                      ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 425 |     pub fn player_pawns(&self, player: Player) -> [Pawn<'_, S>; 2] {
[INFO] [stdout]     |                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/santorini.rs:442:25
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn active_pawns(&self) -> [Pawn<S>; 2] {
[INFO] [stdout]     |                         ^^^^^      ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn active_pawns(&self) -> [Pawn<'_, S>; 2] {
[INFO] [stdout]     |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/santorini.rs:446:27
[INFO] [stdout]     |
[INFO] [stdout] 446 |     pub fn inactive_pawns(&self) -> [Pawn<S>; 2] {
[INFO] [stdout]     |                           ^^^^^      ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 446 |     pub fn inactive_pawns(&self) -> [Pawn<'_, S>; 2] {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/santorini.rs:972:24
[INFO] [stdout]     |
[INFO] [stdout] 972 |     pub fn active_pawn(&self) -> Pawn<Build> {
[INFO] [stdout]     |                        ^^^^^     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 972 |     pub fn active_pawn(&self) -> Pawn<'_, Build> {
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/ui/app.rs:26:28
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn current_player_name(&self) -> Span {
[INFO] [stdout]    |                            ^^^^^     ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                            |
[INFO] [stdout]    |                            the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn current_player_name(&self) -> Span<'_> {
[INFO] [stdout]    |                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/ui/menu.rs:58:26
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn selected_item(&self) -> &Spans {
[INFO] [stdout]    |                          ^^^^^     ^^^^^^
[INFO] [stdout]    |                          |         ||
[INFO] [stdout]    |                          |         |the same lifetime is hidden here
[INFO] [stdout]    |                          |         the same lifetime is elided here
[INFO] [stdout]    |                          the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn selected_item(&self) -> &Spans<'_> {
[INFO] [stdout]    |                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 41.07s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: criterion v0.3.3
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 8`
[INFO] running `Command { std: "docker" "inspect" "48153b77fafd983d491ae7f4c894bd45e33e1b7b373b10fef6a386af2d81cfd5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "48153b77fafd983d491ae7f4c894bd45e33e1b7b373b10fef6a386af2d81cfd5", kill_on_drop: false }`
[INFO] [stdout] 48153b77fafd983d491ae7f4c894bd45e33e1b7b373b10fef6a386af2d81cfd5
