[INFO] cloning repository https://github.com/robinsonj/ruke-cli [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/robinsonj/ruke-cli" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frobinsonj%2Fruke-cli", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frobinsonj%2Fruke-cli'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 4f70a38ae77b279d01fc9ed023a365abe0e7f619 [INFO] testing robinsonj/ruke-cli against master#b03b3a7ec92682be2917540b679478d41c95a30c for pr-137122-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frobinsonj%2Fruke-cli" "/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/robinsonj/ruke-cli [INFO] finished tweaking git repo https://github.com/robinsonj/ruke-cli [INFO] tweaked toml for git repo https://github.com/robinsonj/ruke-cli written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/robinsonj/ruke-cli on toolchain b03b3a7ec92682be2917540b679478d41c95a30c [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b03b3a7ec92682be2917540b679478d41c95a30c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/robinsonj/ruke-cli 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" "+b03b3a7ec92682be2917540b679478d41c95a30c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded toml v0.4.1 [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" "+b03b3a7ec92682be2917540b679478d41c95a30c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f285fd1214a39b21ce68325fd140b1aee70d90c99150b609456fbbe9debfbc75 [INFO] running `Command { std: "docker" "start" "-a" "f285fd1214a39b21ce68325fd140b1aee70d90c99150b609456fbbe9debfbc75", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f285fd1214a39b21ce68325fd140b1aee70d90c99150b609456fbbe9debfbc75", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f285fd1214a39b21ce68325fd140b1aee70d90c99150b609456fbbe9debfbc75", kill_on_drop: false }` [INFO] [stdout] f285fd1214a39b21ce68325fd140b1aee70d90c99150b609456fbbe9debfbc75 [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" "+b03b3a7ec92682be2917540b679478d41c95a30c" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] dc8a5d7f32201438d0df12c36bc2b72fa653fb07376d04e18886d729fbf5420a [INFO] running `Command { std: "docker" "start" "-a" "dc8a5d7f32201438d0df12c36bc2b72fa653fb07376d04e18886d729fbf5420a", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] [stderr] Compiling unicode-xid v0.0.4 [INFO] [stderr] Compiling quote v0.3.15 [INFO] [stderr] Compiling libc v0.2.23 [INFO] [stderr] Compiling serde v1.0.8 [INFO] [stderr] Compiling synom v0.11.3 [INFO] [stderr] Compiling syn v0.11.11 [INFO] [stderr] Compiling rand v0.3.15 [INFO] [stderr] Compiling serde_derive_internals v0.15.1 [INFO] [stderr] Compiling serde_derive v1.0.8 [INFO] [stderr] Compiling toml v0.4.1 [INFO] [stderr] Compiling ruke v0.0.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `FULL` [INFO] [stdout] --> src/duke/board.rs:3:33 [INFO] [stdout] | [INFO] [stdout] 3 | use bitboard::{BitBoard, EMPTY, FULL}; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: anonymous parameters are deprecated and will be removed in the next edition [INFO] [stdout] --> src/duke/player/mod.rs:12:24 [INFO] [stdout] | [INFO] [stdout] 12 | fn setup_duke(&self, &Board) -> Option; [INFO] [stdout] | ^^^^^^ help: try naming the parameter or explicitly ignoring it: `_: &Board` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2018! [INFO] [stdout] = note: for more information, see issue #41686 [INFO] [stdout] = note: `#[warn(anonymous_parameters)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/duke/board.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 58 | let mut board = String::new(); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/duke/board.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | let mut board = String::new(); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `square` [INFO] [stdout] --> src/duke/player/ai_random.rs:34:11 [INFO] [stdout] | [INFO] [stdout] 34 | let square: Square = *(thread_rng().choose(&valid).take().unwrap()); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_square` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `summon` [INFO] [stdout] --> src/duke/player/ai_random.rs:35:11 [INFO] [stdout] | [INFO] [stdout] 35 | let summon = Summon::new(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_summon` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pink_duke` [INFO] [stdout] --> src/duke/mod.rs:96:9 [INFO] [stdout] | [INFO] [stdout] 96 | let pink_duke: Option = self.pink.as_ref().unwrap().setup_duke(&(self.board)); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pink_duke` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FULL` is never used [INFO] [stdout] --> src/bitboard.rs:9:11 [INFO] [stdout] | [INFO] [stdout] 9 | pub const FULL: BitBoard = BitBoard(0xFFFFFFFFFFFFFFFFu64); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `GRAVEYARD` is never used [INFO] [stdout] --> src/duke/board.rs:9:11 [INFO] [stdout] | [INFO] [stdout] 9 | pub const GRAVEYARD: u8 = 255; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BAG` is never used [INFO] [stdout] --> src/duke/board.rs:10:11 [INFO] [stdout] | [INFO] [stdout] 10 | pub const BAG: u8 = 254; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NUM_COLORS` is never used [INFO] [stdout] --> src/duke/color.rs:13:11 [INFO] [stdout] | [INFO] [stdout] 13 | pub const NUM_COLORS: usize = 2; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ALL_COLORS` is never used [INFO] [stdout] --> src/duke/color.rs:16:11 [INFO] [stdout] | [INFO] [stdout] 16 | pub const ALL_COLORS: [Color; NUM_COLORS] = [Color::Pink, Color::Blue]; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `index` and `opponent_backrank` are never used [INFO] [stdout] --> src/duke/color.rs:20:10 [INFO] [stdout] | [INFO] [stdout] 18 | impl Color { [INFO] [stdout] | ---------- methods in this implementation [INFO] [stdout] 19 | /// Convert the color to a usize. [INFO] [stdout] 20 | pub fn index(&self) -> usize { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn opponent_backrank(&self) -> Rank { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `File` is never used [INFO] [stdout] --> src/duke/file.rs:3:10 [INFO] [stdout] | [INFO] [stdout] 3 | pub enum File { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ALL_FILES` is never used [INFO] [stdout] --> src/duke/file.rs:16:11 [INFO] [stdout] | [INFO] [stdout] 16 | pub const ALL_FILES: [File; NUM_FILES] = [ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_index`, `index`, `left`, and `right` are never used [INFO] [stdout] --> src/duke/file.rs:27:10 [INFO] [stdout] | [INFO] [stdout] 25 | impl File { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 26 | /// Convert a file number to a File. [INFO] [stdout] 27 | pub fn from_index(i: usize) -> File { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn index(&self) -> usize { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | pub fn left(&self) -> File { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub fn right(&self) -> File { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `source`, `destination`, `remove`, and `flip` are never read [INFO] [stdout] --> src/duke/move_type/mod.rs:7:3 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct MoveType { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 7 | source: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 8 | destination: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 9 | remove: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 10 | flip: Option [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MoveType` 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: trait `Execute` is never used [INFO] [stdout] --> src/duke/move_type/mod.rs:13:11 [INFO] [stdout] | [INFO] [stdout] 13 | pub trait Execute { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Second`, `Third`, `Fourth`, and `Fifth` are never constructed [INFO] [stdout] --> src/duke/rank.rs:5:3 [INFO] [stdout] | [INFO] [stdout] 3 | pub enum Rank { [INFO] [stdout] | ---- variants in this enum [INFO] [stdout] 4 | First, [INFO] [stdout] 5 | Second, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 6 | Third, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 7 | Fourth, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 8 | Fifth, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Rank` 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 `ALL_RANKS` is never used [INFO] [stdout] --> src/duke/rank.rs:16:11 [INFO] [stdout] | [INFO] [stdout] 16 | pub const ALL_RANKS: [Rank; NUM_RANKS] = [ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_index`, `down`, and `up` are never used [INFO] [stdout] --> src/duke/rank.rs:30:10 [INFO] [stdout] | [INFO] [stdout] 25 | impl Rank { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn from_index(i: usize) -> Rank { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn down(&self) -> Rank { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn up (&self) -> Rank { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NUM_SQUARES` is never used [INFO] [stdout] --> src/duke/square.rs:10:11 [INFO] [stdout] | [INFO] [stdout] 10 | pub const NUM_SQUARES: usize = 36; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/duke/square.rs:19:10 [INFO] [stdout] | [INFO] [stdout] 12 | impl Square { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 19 | pub fn make(r: Rank, f: File) -> Square { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | pub fn rank(&self) -> Rank { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | pub fn file(&self) -> File { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn up(&self) -> Option { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn down(&self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn right(&self) -> Option { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn left(&self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn player_forward(&self, color: Color) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn player_backward(&self, color: Color) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 86 | pub fn player_left(&self, color: Color) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn player_right(&self, color: Color) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `a`, and `b` are never read [INFO] [stdout] --> src/duke/tile/mod.rs:8:3 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct Tile { [INFO] [stdout] | ---- fields in this struct [INFO] [stdout] 8 | name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 9 | a: Side, [INFO] [stdout] | ^ [INFO] [stdout] 10 | b: Side [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: `Tile` 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/duke/tile/mod.rs:14:10 [INFO] [stdout] | [INFO] [stdout] 13 | impl Tile { [INFO] [stdout] | --------- associated function in this implementation [INFO] [stdout] 14 | pub fn new(name: String, a: Side, b: Side) -> Tile { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Error` is never used [INFO] [stdout] --> src/duke/tile/config.rs:8:6 [INFO] [stdout] | [INFO] [stdout] 8 | enum Error { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Result` is never used [INFO] [stdout] --> src/duke/tile/config.rs:14:6 [INFO] [stdout] | [INFO] [stdout] 14 | type Result = std::result::Result; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `a`, and `b` are never read [INFO] [stdout] --> src/duke/tile/config.rs:18:3 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct Config { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 18 | name: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] 19 | a: Option, [INFO] [stdout] | ^ [INFO] [stdout] 20 | b: Option [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: `Config` 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 `parse` and `tile` are never used [INFO] [stdout] --> src/duke/tile/config.rs:24:6 [INFO] [stdout] | [INFO] [stdout] 23 | impl Config { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 24 | fn parse(filename: &str) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | fn tile(&self) -> Tile { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `x`, and `y` are never used [INFO] [stdout] --> src/duke/tile/side.rs:8:10 [INFO] [stdout] | [INFO] [stdout] 7 | impl Side { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 8 | pub fn new(x: u8, y: u8) -> Side { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 15 | pub fn x(&self) -> u8 { [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 19 | pub fn y(&self) -> u8 { [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `AIPlayer` is never used [INFO] [stdout] --> src/duke/player/ai.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | pub trait AIPlayer : super::Player {} [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/duke/mod.rs:100:35 [INFO] [stdout] | [INFO] [stdout] 100 | Ok(self.blue.as_ref().unwrap().clone()) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the type `ai_random::Random` does not implement `Clone`, so calling `clone` on `&ai_random::Random` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] 100 - Ok(self.blue.as_ref().unwrap().clone()) [INFO] [stdout] 100 + Ok(self.blue.as_ref().unwrap()) [INFO] [stdout] | [INFO] [stdout] help: if you meant to clone `ai_random::Random`, implement `Clone` for it [INFO] [stdout] --> src/duke/player/ai_random.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 + #[derive(Clone)] [INFO] [stdout] 10 | pub struct Random { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/duke/mod.rs:104:35 [INFO] [stdout] | [INFO] [stdout] 104 | Ok(self.pink.as_ref().unwrap().clone()) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the type `ai_random::Random` does not implement `Clone`, so calling `clone` on `&ai_random::Random` copies the reference, which does not do anything and can be removed [INFO] [stdout] help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] 104 - Ok(self.pink.as_ref().unwrap().clone()) [INFO] [stdout] 104 + Ok(self.pink.as_ref().unwrap()) [INFO] [stdout] | [INFO] [stdout] help: if you meant to clone `ai_random::Random`, implement `Clone` for it [INFO] [stdout] --> src/duke/player/ai_random.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 + #[derive(Clone)] [INFO] [stdout] 10 | pub struct Random { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/duke/move_type/summon.rs:3:41 [INFO] [stdout] | [INFO] [stdout] 3 | #[derive(Copy, Clone, Debug, PartialEq, Deserialize)] [INFO] [stdout] | -^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Summon` is not local [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Summon` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/duke/tile/mod.rs:6:17 [INFO] [stdout] | [INFO] [stdout] 6 | #[derive(Debug, Deserialize)] [INFO] [stdout] | -^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Tile` is not local [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Tile` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/duke/tile/config.rs:16:17 [INFO] [stdout] | [INFO] [stdout] 16 | #[derive(Debug, Deserialize)] [INFO] [stdout] | -^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Config` is not local [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Config` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/duke/tile/side.rs:1:30 [INFO] [stdout] | [INFO] [stdout] 1 | #[derive(Copy, Clone, Debug, Deserialize, PartialEq)] [INFO] [stdout] | -^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Side` is not local [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Side` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.50s [INFO] running `Command { std: "docker" "inspect" "dc8a5d7f32201438d0df12c36bc2b72fa653fb07376d04e18886d729fbf5420a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "dc8a5d7f32201438d0df12c36bc2b72fa653fb07376d04e18886d729fbf5420a", kill_on_drop: false }` [INFO] [stdout] dc8a5d7f32201438d0df12c36bc2b72fa653fb07376d04e18886d729fbf5420a [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" "+b03b3a7ec92682be2917540b679478d41c95a30c" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] affb54a564bccd7b01ff284b232d1936e2e8e8ff1d58ecf3fd549c1c7bea0148 [INFO] running `Command { std: "docker" "start" "-a" "affb54a564bccd7b01ff284b232d1936e2e8e8ff1d58ecf3fd549c1c7bea0148", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] [stderr] Compiling ruke v0.0.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `FULL` [INFO] [stdout] --> src/duke/board.rs:3:33 [INFO] [stdout] | [INFO] [stdout] 3 | use bitboard::{BitBoard, EMPTY, FULL}; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BitBoard` [INFO] [stdout] --> src/duke/board.rs:75:18 [INFO] [stdout] | [INFO] [stdout] 75 | use bitboard::{BitBoard, EMPTY}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Board` [INFO] [stdout] --> src/duke/player/ai_random.rs:51:21 [INFO] [stdout] | [INFO] [stdout] 51 | use duke::board::{Board}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: anonymous parameters are deprecated and will be removed in the next edition [INFO] [stdout] --> src/duke/player/mod.rs:12:24 [INFO] [stdout] | [INFO] [stdout] 12 | fn setup_duke(&self, &Board) -> Option; [INFO] [stdout] | ^^^^^^ help: try naming the parameter or explicitly ignoring it: `_: &Board` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2018! [INFO] [stdout] = note: for more information, see issue #41686 [INFO] [stdout] = note: `#[warn(anonymous_parameters)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/duke/board.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 58 | let mut board = String::new(); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/duke/board.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | let mut board = String::new(); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `square` [INFO] [stdout] --> src/duke/player/ai_random.rs:34:11 [INFO] [stdout] | [INFO] [stdout] 34 | let square: Square = *(thread_rng().choose(&valid).take().unwrap()); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_square` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `summon` [INFO] [stdout] --> src/duke/player/ai_random.rs:35:11 [INFO] [stdout] | [INFO] [stdout] 35 | let summon = Summon::new(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_summon` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pink_duke` [INFO] [stdout] --> src/duke/mod.rs:96:9 [INFO] [stdout] | [INFO] [stdout] 96 | let pink_duke: Option = self.pink.as_ref().unwrap().setup_duke(&(self.board)); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pink_duke` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `source`, `destination`, `remove`, and `flip` are never read [INFO] [stdout] --> src/duke/move_type/mod.rs:7:3 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct MoveType { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 7 | source: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 8 | destination: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 9 | remove: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 10 | flip: Option [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MoveType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Execute` is never used [INFO] [stdout] --> src/duke/move_type/mod.rs:13:11 [INFO] [stdout] | [INFO] [stdout] 13 | pub trait Execute { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/duke/tile/config.rs:9:13 [INFO] [stdout] | [INFO] [stdout] 9 | OpenError(std::io::Error), [INFO] [stdout] | --------- ^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 9 - OpenError(std::io::Error), [INFO] [stdout] 9 + OpenError(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/duke/tile/config.rs:10:13 [INFO] [stdout] | [INFO] [stdout] 10 | ReadError(std::io::Error), [INFO] [stdout] | --------- ^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 10 - ReadError(std::io::Error), [INFO] [stdout] 10 + ReadError(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/duke/tile/config.rs:11:14 [INFO] [stdout] | [INFO] [stdout] 11 | ParseError(toml::de::Error) [INFO] [stdout] | ---------- ^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 11 - ParseError(toml::de::Error) [INFO] [stdout] 11 + ParseError(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `tile` is never used [INFO] [stdout] --> src/duke/tile/config.rs:63:6 [INFO] [stdout] | [INFO] [stdout] 63 | fn tile() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `AIPlayer` is never used [INFO] [stdout] --> src/duke/player/ai.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | pub trait AIPlayer : super::Player {} [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/duke/mod.rs:100:35 [INFO] [stdout] | [INFO] [stdout] 100 | Ok(self.blue.as_ref().unwrap().clone()) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the type `ai_random::Random` does not implement `Clone`, so calling `clone` on `&ai_random::Random` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] 100 - Ok(self.blue.as_ref().unwrap().clone()) [INFO] [stdout] 100 + Ok(self.blue.as_ref().unwrap()) [INFO] [stdout] | [INFO] [stdout] help: if you meant to clone `ai_random::Random`, implement `Clone` for it [INFO] [stdout] --> src/duke/player/ai_random.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 + #[derive(Clone)] [INFO] [stdout] 10 | pub struct Random { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/duke/mod.rs:104:35 [INFO] [stdout] | [INFO] [stdout] 104 | Ok(self.pink.as_ref().unwrap().clone()) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the type `ai_random::Random` does not implement `Clone`, so calling `clone` on `&ai_random::Random` copies the reference, which does not do anything and can be removed [INFO] [stdout] help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] 104 - Ok(self.pink.as_ref().unwrap().clone()) [INFO] [stdout] 104 + Ok(self.pink.as_ref().unwrap()) [INFO] [stdout] | [INFO] [stdout] help: if you meant to clone `ai_random::Random`, implement `Clone` for it [INFO] [stdout] --> src/duke/player/ai_random.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 + #[derive(Clone)] [INFO] [stdout] 10 | pub struct Random { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/duke/move_type/summon.rs:3:41 [INFO] [stdout] | [INFO] [stdout] 3 | #[derive(Copy, Clone, Debug, PartialEq, Deserialize)] [INFO] [stdout] | -^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Summon` is not local [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Summon` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/duke/tile/mod.rs:6:17 [INFO] [stdout] | [INFO] [stdout] 6 | #[derive(Debug, Deserialize)] [INFO] [stdout] | -^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Tile` is not local [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Tile` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/duke/tile/config.rs:16:17 [INFO] [stdout] | [INFO] [stdout] 16 | #[derive(Debug, Deserialize)] [INFO] [stdout] | -^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Config` is not local [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Config` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/duke/tile/side.rs:1:30 [INFO] [stdout] | [INFO] [stdout] 1 | #[derive(Copy, Clone, Debug, Deserialize, PartialEq)] [INFO] [stdout] | -^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `Side` is not local [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Side` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.08s [INFO] running `Command { std: "docker" "inspect" "affb54a564bccd7b01ff284b232d1936e2e8e8ff1d58ecf3fd549c1c7bea0148", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "affb54a564bccd7b01ff284b232d1936e2e8e8ff1d58ecf3fd549c1c7bea0148", kill_on_drop: false }` [INFO] [stdout] affb54a564bccd7b01ff284b232d1936e2e8e8ff1d58ecf3fd549c1c7bea0148 [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" "+b03b3a7ec92682be2917540b679478d41c95a30c" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] b35920e052d44bf5489a658d72962260f4d256fd41a23215cbd9a95cc47e277a [INFO] running `Command { std: "docker" "start" "-a" "b35920e052d44bf5489a658d72962260f4d256fd41a23215cbd9a95cc47e277a", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] [stderr] warning: unused import: `FULL` [INFO] [stderr] --> src/duke/board.rs:3:33 [INFO] [stderr] | [INFO] [stderr] 3 | use bitboard::{BitBoard, EMPTY, FULL}; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `BitBoard` [INFO] [stderr] --> src/duke/board.rs:75:18 [INFO] [stderr] | [INFO] [stderr] 75 | use bitboard::{BitBoard, EMPTY}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Board` [INFO] [stderr] --> src/duke/player/ai_random.rs:51:21 [INFO] [stderr] | [INFO] [stderr] 51 | use duke::board::{Board}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: anonymous parameters are deprecated and will be removed in the next edition [INFO] [stderr] --> src/duke/player/mod.rs:12:24 [INFO] [stderr] | [INFO] [stderr] 12 | fn setup_duke(&self, &Board) -> Option; [INFO] [stderr] | ^^^^^^ help: try naming the parameter or explicitly ignoring it: `_: &Board` [INFO] [stderr] | [INFO] [stderr] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2018! [INFO] [stderr] = note: for more information, see issue #41686 [INFO] [stderr] = note: `#[warn(anonymous_parameters)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/duke/board.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | let mut board = String::new(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/duke/board.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | let mut board = String::new(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `square` [INFO] [stderr] --> src/duke/player/ai_random.rs:34:11 [INFO] [stderr] | [INFO] [stderr] 34 | let square: Square = *(thread_rng().choose(&valid).take().unwrap()); [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_square` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `summon` [INFO] [stderr] --> src/duke/player/ai_random.rs:35:11 [INFO] [stderr] | [INFO] [stderr] 35 | let summon = Summon::new(); [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_summon` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pink_duke` [INFO] [stderr] --> src/duke/mod.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | let pink_duke: Option = self.pink.as_ref().unwrap().setup_duke(&(self.board)); [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pink_duke` [INFO] [stderr] [INFO] [stderr] warning: fields `source`, `destination`, `remove`, and `flip` are never read [INFO] [stderr] --> src/duke/move_type/mod.rs:7:3 [INFO] [stderr] | [INFO] [stderr] 6 | pub struct MoveType { [INFO] [stderr] | -------- fields in this struct [INFO] [stderr] 7 | source: Option, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 8 | destination: Option, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 9 | remove: Option, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 10 | flip: Option [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `MoveType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait `Execute` is never used [INFO] [stderr] --> src/duke/move_type/mod.rs:13:11 [INFO] [stderr] | [INFO] [stderr] 13 | pub trait Execute { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `0` is never read [INFO] [stderr] --> src/duke/tile/config.rs:9:13 [INFO] [stderr] | [INFO] [stderr] 9 | OpenError(std::io::Error), [INFO] [stderr] | --------- ^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | field in this variant [INFO] [stderr] | [INFO] [stderr] = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stderr] | [INFO] [stderr] 9 - OpenError(std::io::Error), [INFO] [stderr] 9 + OpenError(()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: field `0` is never read [INFO] [stderr] --> src/duke/tile/config.rs:10:13 [INFO] [stderr] | [INFO] [stderr] 10 | ReadError(std::io::Error), [INFO] [stderr] | --------- ^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | field in this variant [INFO] [stderr] | [INFO] [stderr] = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stderr] | [INFO] [stderr] 10 - ReadError(std::io::Error), [INFO] [stderr] 10 + ReadError(()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: field `0` is never read [INFO] [stderr] --> src/duke/tile/config.rs:11:14 [INFO] [stderr] | [INFO] [stderr] 11 | ParseError(toml::de::Error) [INFO] [stderr] | ---------- ^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | field in this variant [INFO] [stderr] | [INFO] [stderr] = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stderr] | [INFO] [stderr] 11 - ParseError(toml::de::Error) [INFO] [stderr] 11 + ParseError(()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: function `tile` is never used [INFO] [stderr] --> src/duke/tile/config.rs:63:6 [INFO] [stderr] | [INFO] [stderr] 63 | fn tile() { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait `AIPlayer` is never used [INFO] [stderr] --> src/duke/player/ai.rs:1:11 [INFO] [stderr] | [INFO] [stderr] 1 | pub trait AIPlayer : super::Player {} [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stderr] --> src/duke/mod.rs:100:35 [INFO] [stderr] | [INFO] [stderr] 100 | Ok(self.blue.as_ref().unwrap().clone()) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the type `ai_random::Random` does not implement `Clone`, so calling `clone` on `&ai_random::Random` copies the reference, which does not do anything and can be removed [INFO] [stderr] = note: `#[warn(noop_method_call)]` on by default [INFO] [stderr] help: remove this redundant call [INFO] [stderr] | [INFO] [stderr] 100 - Ok(self.blue.as_ref().unwrap().clone()) [INFO] [stderr] 100 + Ok(self.blue.as_ref().unwrap()) [INFO] [stderr] | [INFO] [stderr] help: if you meant to clone `ai_random::Random`, implement `Clone` for it [INFO] [stderr] --> src/duke/player/ai_random.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 + #[derive(Clone)] [INFO] [stderr] 10 | pub struct Random { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stderr] --> src/duke/mod.rs:104:35 [INFO] [stderr] | [INFO] [stderr] 104 | Ok(self.pink.as_ref().unwrap().clone()) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the type `ai_random::Random` does not implement `Clone`, so calling `clone` on `&ai_random::Random` copies the reference, which does not do anything and can be removed [INFO] [stderr] help: remove this redundant call [INFO] [stderr] | [INFO] [stderr] 104 - Ok(self.pink.as_ref().unwrap().clone()) [INFO] [stderr] 104 + Ok(self.pink.as_ref().unwrap()) [INFO] [stderr] | [INFO] [stderr] help: if you meant to clone `ai_random::Random`, implement `Clone` for it [INFO] [stderr] --> src/duke/player/ai_random.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 + #[derive(Clone)] [INFO] [stderr] 10 | pub struct Random { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/duke/move_type/summon.rs:3:41 [INFO] [stderr] | [INFO] [stderr] 3 | #[derive(Copy, Clone, Debug, PartialEq, Deserialize)] [INFO] [stderr] | -^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | `Summon` is not local [INFO] [stderr] | `Deserialize` is not local [INFO] [stderr] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Summon` [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stderr] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stderr] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/duke/tile/mod.rs:6:17 [INFO] [stderr] | [INFO] [stderr] 6 | #[derive(Debug, Deserialize)] [INFO] [stderr] | -^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | `Tile` is not local [INFO] [stderr] | `Deserialize` is not local [INFO] [stderr] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Tile` [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stderr] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/duke/tile/config.rs:16:17 [INFO] [stderr] | [INFO] [stderr] 16 | #[derive(Debug, Deserialize)] [INFO] [stderr] | -^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | `Config` is not local [INFO] [stderr] | `Deserialize` is not local [INFO] [stderr] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Config` [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stderr] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stderr] --> src/duke/tile/side.rs:1:30 [INFO] [stderr] | [INFO] [stderr] 1 | #[derive(Copy, Clone, Debug, Deserialize, PartialEq)] [INFO] [stderr] | -^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | `Side` is not local [INFO] [stderr] | `Deserialize` is not local [INFO] [stderr] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Side` [INFO] [stderr] | [INFO] [stderr] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stderr] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stderr] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stderr] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stderr] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: `ruke` (bin "ruke" test) generated 22 warnings (run `cargo fix --bin "ruke" --tests` to apply 8 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.03s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/ruke-3243d9c236d819e4) [INFO] [stdout] [INFO] [stdout] running 48 tests [INFO] [stdout] test bitboard::tests::bitand_assign ... ok [INFO] [stdout] test bitboard::tests::bitxor ... ok [INFO] [stdout] test bitboard::tests::bitxor_assign ... ok [INFO] [stdout] test bitboard::tests::empty ... ok [INFO] [stdout] test bitboard::tests::bitor_assign ... ok [INFO] [stdout] test bitboard::tests::full ... ok [INFO] [stdout] test duke::board::tests::bag ... ok [INFO] [stdout] test duke::board::tests::graveyard ... ok [INFO] [stdout] test bitboard::tests::not ... ok [INFO] [stdout] test duke::board::tests::starting_squares ... ok [INFO] [stdout] test duke::board::tests::new ... ok [INFO] [stdout] test duke::color::tests::backrank ... ok [INFO] [stdout] test duke::color::tests::all_colors ... ok [INFO] [stdout] test duke::color::tests::index ... ok [INFO] [stdout] test duke::color::tests::opponent_backrank ... ok [INFO] [stdout] test duke::file::tests::all_files ... ok [INFO] [stdout] test bitboard::tests::bitand ... ok [INFO] [stdout] test duke::color::tests::num_colors ... ok [INFO] [stdout] test duke::file::tests::from_index ... ok [INFO] [stdout] test duke::file::tests::index ... ok [INFO] [stdout] test duke::file::tests::left ... ok [INFO] [stdout] test duke::file::tests::num_files ... ok [INFO] [stdout] test duke::file::tests::right ... ok [INFO] [stdout] test duke::rank::tests::down ... ok [INFO] [stdout] test duke::player::ai_random::tests::color ... ok [INFO] [stdout] test duke::rank::tests::from_index ... ok [INFO] [stdout] test duke::rank::tests::all_ranks ... ok [INFO] [stdout] test duke::rank::tests::index ... ok [INFO] [stdout] test duke::rank::tests::up ... ok [INFO] [stdout] test duke::square::tests::down ... ok [INFO] [stdout] test duke::square::tests::display ... ok [INFO] [stdout] test duke::rank::tests::num_ranks ... ok [INFO] [stdout] test duke::square::tests::file ... ok [INFO] [stdout] test duke::square::tests::left ... ok [INFO] [stdout] test duke::square::tests::make ... ok [INFO] [stdout] test duke::square::tests::num_squares ... ok [INFO] [stdout] test duke::square::tests::player_backward ... ok [INFO] [stdout] test duke::square::tests::player_forward ... ok [INFO] [stdout] test duke::square::tests::player_left ... ok [INFO] [stdout] test duke::square::tests::player_right ... ok [INFO] [stdout] test duke::square::tests::rank ... ok [INFO] [stdout] test duke::square::tests::right ... ok [INFO] [stdout] test duke::square::tests::up ... ok [INFO] [stdout] test duke::tile::side::tests::new ... ok [INFO] [stdout] test bitboard::tests::bitor ... ok [INFO] [stdout] test duke::tile::tests::initialize ... ok [INFO] [stdout] test duke::tile::config::tests::parse ... ok [INFO] [stdout] test duke::color::tests::not ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 48 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "b35920e052d44bf5489a658d72962260f4d256fd41a23215cbd9a95cc47e277a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b35920e052d44bf5489a658d72962260f4d256fd41a23215cbd9a95cc47e277a", kill_on_drop: false }` [INFO] [stdout] b35920e052d44bf5489a658d72962260f4d256fd41a23215cbd9a95cc47e277a