[INFO] cloning repository https://github.com/simon-void/chess_replay_rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/simon-void/chess_replay_rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsimon-void%2Fchess_replay_rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsimon-void%2Fchess_replay_rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 7d7b9b30bb2afded06a7a4cf3313bbc34eba7a3b [INFO] checking simon-void/chess_replay_rs against master#506512391b1a75ae450d36c9420978402a91abcc for pr-125384 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsimon-void%2Fchess_replay_rs" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/simon-void/chess_replay_rs on toolchain 506512391b1a75ae450d36c9420978402a91abcc [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+506512391b1a75ae450d36c9420978402a91abcc" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/simon-void/chess_replay_rs [INFO] finished tweaking git repo https://github.com/simon-void/chess_replay_rs [INFO] tweaked toml for git repo https://github.com/simon-void/chess_replay_rs written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/simon-void/chess_replay_rs 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" "+506512391b1a75ae450d36c9420978402a91abcc" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+506512391b1a75ae450d36c9420978402a91abcc" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] c4a4097c2a56fa3e9f42f0208048ec83aa2faa5f9b55b2c6a633acf4181a5bfc [INFO] running `Command { std: "docker" "start" "-a" "c4a4097c2a56fa3e9f42f0208048ec83aa2faa5f9b55b2c6a633acf4181a5bfc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c4a4097c2a56fa3e9f42f0208048ec83aa2faa5f9b55b2c6a633acf4181a5bfc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c4a4097c2a56fa3e9f42f0208048ec83aa2faa5f9b55b2c6a633acf4181a5bfc", kill_on_drop: false }` [INFO] [stdout] c4a4097c2a56fa3e9f42f0208048ec83aa2faa5f9b55b2c6a633acf4181a5bfc [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=allow" "-e" "RUSTDOCFLAGS=--cap-lints=allow" "-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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+506512391b1a75ae450d36c9420978402a91abcc" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 00399f6b092d9221871d9f0e3d08172cdfdc2668852ed090105a23eb79476421 [INFO] running `Command { std: "docker" "start" "-a" "00399f6b092d9221871d9f0e3d08172cdfdc2668852ed090105a23eb79476421", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.69 [INFO] [stderr] Compiling unicode-ident v1.0.12 [INFO] [stderr] Compiling wasm-bindgen-shared v0.2.89 [INFO] [stderr] Compiling semver v1.0.20 [INFO] [stderr] Compiling log v0.4.20 [INFO] [stderr] Compiling once_cell v1.18.0 [INFO] [stderr] Compiling futures-core v0.3.29 [INFO] [stderr] Compiling bumpalo v3.14.0 [INFO] [stderr] Compiling autocfg v1.1.0 [INFO] [stderr] Compiling futures-channel v0.3.29 [INFO] [stderr] Compiling futures-task v0.3.29 [INFO] [stderr] Compiling futures-util v0.3.29 [INFO] [stderr] Compiling serde v1.0.193 [INFO] [stderr] Compiling wasm-bindgen v0.2.89 [INFO] [stderr] Checking futures-sink v0.3.29 [INFO] [stderr] Compiling memchr v2.6.4 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Compiling regex-syntax v0.8.2 [INFO] [stderr] Compiling rustc_version v0.4.0 [INFO] [stderr] Checking pin-project-lite v0.2.13 [INFO] [stderr] Checking cfg-if v1.0.0 [INFO] [stderr] Checking futures-io v0.3.29 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Checking tinyvec_macros v0.1.1 [INFO] [stderr] Compiling quote v1.0.33 [INFO] [stderr] Checking either v1.10.0 [INFO] [stderr] Checking tinyvec v1.6.0 [INFO] [stderr] Compiling rstest_macros v0.18.2 [INFO] [stderr] Compiling syn v2.0.39 [INFO] [stderr] Compiling aho-corasick v1.1.2 [INFO] [stderr] Checking itertools v0.12.1 [INFO] [stderr] Compiling relative-path v1.9.0 [INFO] [stderr] Compiling serde_json v1.0.108 [INFO] [stderr] Compiling glob v0.3.1 [INFO] [stderr] Checking futures-timer v3.0.2 [INFO] [stderr] Checking ryu v1.0.15 [INFO] [stderr] Checking itoa v1.0.9 [INFO] [stderr] Compiling regex-automata v0.4.3 [INFO] [stderr] Compiling regex v1.10.2 [INFO] [stderr] Compiling wasm-bindgen-backend v0.2.89 [INFO] [stderr] Compiling serde_derive v1.0.193 [INFO] [stderr] Compiling futures-macro v0.3.29 [INFO] [stderr] Compiling wasm-bindgen-macro-support v0.2.89 [INFO] [stderr] Compiling wasm-bindgen-macro v0.2.89 [INFO] [stderr] Checking js-sys v0.3.66 [INFO] [stderr] Checking console_error_panic_hook v0.1.7 [INFO] [stderr] Checking futures-executor v0.3.29 [INFO] [stderr] Checking futures v0.3.29 [INFO] [stderr] Checking rstest v0.18.2 [INFO] [stderr] Checking web-sys v0.3.66 [INFO] [stderr] Checking logic_core v0.0.1 (/opt/rustwide/workdir/workspace/logic_core) [INFO] [stdout] error[E0432]: unresolved import `crate::game::MoveStats` [INFO] [stdout] --> workspace/logic_core/src/game/board_state.rs:2:34 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::game::{StoppedReason, MoveStats}; [INFO] [stdout] | ^^^^^^^^^ no `MoveStats` in `game` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0412]: cannot find type `MoveStats` in this scope [INFO] [stdout] --> workspace/logic_core/src/game/mod.rs:185:24 [INFO] [stdout] | [INFO] [stdout] 185 | Ongoing(Box, MoveStats), [INFO] [stdout] | ^^^^^^^^^ not found in this scope [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the trait bound `a_move::MoveType: Default` is not satisfied [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 13 | #[derive(Debug, Copy, Clone, Default, Serialize)] [INFO] [stdout] | ------- in this derive macro expansion [INFO] [stdout] ... [INFO] [stdout] 20 | pub move_type: MoveType, // TODO: make this a Box or Rc together with a static lifetime instance of Rc/Box workspace/logic_core/src/base/a_move.rs:13:39 [INFO] [stdout] | [INFO] [stdout] 13 | #[derive(Debug, Copy, Clone, Default, Serialize)] [INFO] [stdout] | ^^^^^^^^^ the trait `Serialize` is not implemented for `a_move::MoveType` [INFO] [stdout] ... [INFO] [stdout] 20 | pub move_type: MoveType, // TODO: make this a Box or Rc together with a static lifetime instance of Rc/Box /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/serde-1.0.193/src/ser/mod.rs:1865:12 [INFO] [stdout] | [INFO] [stdout] 1859 | fn serialize_field( [INFO] [stdout] | --------------- required by a bound in this associated function [INFO] [stdout] ... [INFO] [stdout] 1865 | T: Serialize; [INFO] [stdout] | ^^^^^^^^^ required by this bound in `SerializeStruct::serialize_field` [INFO] [stdout] = note: this error originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `move_type` on type `a_move::FromTo` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/check_search.rs:107:23 [INFO] [stdout] | [INFO] [stdout] 107 | match latest_move.move_type { [INFO] [stdout] | ^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `from`, `to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0023]: this pattern has 1 field, but the corresponding tuple variant has 2 fields [INFO] [stdout] --> workspace/logic_core/src/figure/functions/check_search.rs:108:28 [INFO] [stdout] | [INFO] [stdout] 108 | MoveType::Castling(castling_type) => { [INFO] [stdout] | ^^^^^^^^^^^^^ expected 2 fields, found 1 [INFO] [stdout] | [INFO] [stdout] ::: workspace/logic_core/src/base/a_move.rs:240:14 [INFO] [stdout] | [INFO] [stdout] 240 | Castling(CastlingType, /*rookMove:*/FromTo) // TODO: is CastlingType needed? [INFO] [stdout] | ------------ ------ tuple variant has 2 fields [INFO] [stdout] | [INFO] [stdout] help: use `_` to explicitly ignore each field [INFO] [stdout] | [INFO] [stdout] 108 | MoveType::Castling(castling_type, _) => { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `move_type` on type `a_move::FromTo` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/checkmate.rs:23:22 [INFO] [stdout] | [INFO] [stdout] 23 | match after_move.move_type { [INFO] [stdout] | ^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `from`, `to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0023]: this pattern has 1 field, but the corresponding tuple variant has 2 fields [INFO] [stdout] --> workspace/logic_core/src/figure/functions/checkmate.rs:24:28 [INFO] [stdout] | [INFO] [stdout] 24 | MoveType::Castling(castling_type) => { [INFO] [stdout] | ^^^^^^^^^^^^^ expected 2 fields, found 1 [INFO] [stdout] | [INFO] [stdout] ::: workspace/logic_core/src/base/a_move.rs:240:14 [INFO] [stdout] | [INFO] [stdout] 240 | Castling(CastlingType, /*rookMove:*/FromTo) // TODO: is CastlingType needed? [INFO] [stdout] | ------------ ------ tuple variant has 2 fields [INFO] [stdout] | [INFO] [stdout] help: use `_` to explicitly ignore each field [INFO] [stdout] | [INFO] [stdout] 24 | MoveType::Castling(castling_type, _) => { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `a_move::FromTo` has no field named `move_type` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:92:29 [INFO] [stdout] | [INFO] [stdout] 92 | ... move_type: MoveType::EnPassant [INFO] [stdout] | ^^^^^^^^^ `a_move::FromTo` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: all struct fields are already assigned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `a_move::FromTo` has no field named `move_type` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:114:21 [INFO] [stdout] | [INFO] [stdout] 114 | move_type: *pawn_promo [INFO] [stdout] | ^^^^^^^^^ `a_move::FromTo` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: all struct fields are already assigned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `a_move::FromTo` has no field named `move_type` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:121:17 [INFO] [stdout] | [INFO] [stdout] 121 | move_type: MoveType::Normal [INFO] [stdout] | ^^^^^^^^^ `a_move::FromTo` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: all struct fields are already assigned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `a_move::FromTo` has no field named `move_type` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:221:17 [INFO] [stdout] | [INFO] [stdout] 221 | move_type: MoveType::Castling(CastlingType::QueenSide) [INFO] [stdout] | ^^^^^^^^^ `a_move::FromTo` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: all struct fields are already assigned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this enum variant takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:221:28 [INFO] [stdout] | [INFO] [stdout] 221 | move_type: MoveType::Castling(CastlingType::QueenSide) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^------------------------- an argument of type `a_move::FromTo` is missing [INFO] [stdout] | [INFO] [stdout] note: tuple variant defined here [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:240:5 [INFO] [stdout] | [INFO] [stdout] 240 | Castling(CastlingType, /*rookMove:*/FromTo) // TODO: is CastlingType needed? [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 221 | move_type: MoveType::Castling(CastlingType::QueenSide, /* a_move::FromTo */) [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `a_move::FromTo` has no field named `move_type` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:230:17 [INFO] [stdout] | [INFO] [stdout] 230 | move_type: MoveType::Castling(CastlingType::KingSide) [INFO] [stdout] | ^^^^^^^^^ `a_move::FromTo` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: all struct fields are already assigned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this enum variant takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:230:28 [INFO] [stdout] | [INFO] [stdout] 230 | move_type: MoveType::Castling(CastlingType::KingSide) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^------------------------ an argument of type `a_move::FromTo` is missing [INFO] [stdout] | [INFO] [stdout] note: tuple variant defined here [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:240:5 [INFO] [stdout] | [INFO] [stdout] 240 | Castling(CastlingType, /*rookMove:*/FromTo) // TODO: is CastlingType needed? [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 230 | move_type: MoveType::Castling(CastlingType::KingSide, /* a_move::FromTo */) [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `move_type` on type `a_move::FromTo` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/allowed.rs:17:65 [INFO] [stdout] | [INFO] [stdout] 17 | if let MoveType::PawnPromotion(promo_type) = a_move.move_type { [INFO] [stdout] | ^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `from`, `to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:276:68 [INFO] [stdout] | [INFO] [stdout] 276 | let mut stats = Move::new(effective_king_move, figure_captured); [INFO] [stdout] | --------- ^^^^^^^^^^^^^^^ expected `Option`, found `Option<(Figure, Position)>` [INFO] [stdout] | | [INFO] [stdout] | arguments to this function are incorrect [INFO] [stdout] | [INFO] [stdout] = note: expected enum `std::option::Option` [INFO] [stdout] found enum `std::option::Option<(Figure, position::Position)>` [INFO] [stdout] note: associated function defined here [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] 25 | main_move: FromTo, [INFO] [stdout] 26 | figure_caught: Option, [INFO] [stdout] | --------------------------------- [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `castling_rook_move` on type `a_move::Move` [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:277:27 [INFO] [stdout] | [INFO] [stdout] 277 | stats.castling_rook_move = castling_rook_move; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `main_move`, `figure_captured`, `is_pawn_move`, `move_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:330:62 [INFO] [stdout] | [INFO] [stdout] 330 | let mut stats = Move::new(next_move, figure_captured); [INFO] [stdout] | --------- ^^^^^^^^^^^^^^^ expected `Option`, found `Option<(Figure, Position)>` [INFO] [stdout] | | [INFO] [stdout] | arguments to this function are incorrect [INFO] [stdout] | [INFO] [stdout] = note: expected enum `std::option::Option` [INFO] [stdout] found enum `std::option::Option<(Figure, position::Position)>` [INFO] [stdout] note: associated function defined here [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] 25 | main_move: FromTo, [INFO] [stdout] 26 | figure_caught: Option, [INFO] [stdout] | --------------------------------- [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `did_move_pawn` on type `a_move::Move` [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:331:31 [INFO] [stdout] | [INFO] [stdout] 331 | stats.did_move_pawn = true; [INFO] [stdout] | ^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `main_move`, `figure_captured`, `is_pawn_move`, `move_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `did_move_pawn` on type `a_move::Move` [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:341:31 [INFO] [stdout] | [INFO] [stdout] 341 | stats.did_move_pawn = true; [INFO] [stdout] | ^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `main_move`, `figure_captured`, `is_pawn_move`, `move_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `move_type` on type `a_move::FromTo` [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:353:35 [INFO] [stdout] | [INFO] [stdout] 353 | next_move.move_type = MoveType::EnPassant; [INFO] [stdout] | ^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `from`, `to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:354:67 [INFO] [stdout] | [INFO] [stdout] 354 | let mut stats = Move::new(next_move, Some(pawn_captured)); [INFO] [stdout] | ---- ^^^^^^^^^^^^^ expected `FigureType`, found `(Figure, Position)` [INFO] [stdout] | | [INFO] [stdout] | arguments to this enum variant are incorrect [INFO] [stdout] | [INFO] [stdout] = note: expected enum `FigureType` [INFO] [stdout] found tuple `(Figure, position::Position)` [INFO] [stdout] help: the type constructed contains `(Figure, position::Position)` due to the type of the argument passed [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:354:62 [INFO] [stdout] | [INFO] [stdout] 354 | let mut stats = Move::new(next_move, Some(pawn_captured)); [INFO] [stdout] | ^^^^^-------------^ [INFO] [stdout] | | [INFO] [stdout] | this argument influences the type of `Some` [INFO] [stdout] note: tuple variant defined here [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:579:5 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `did_move_pawn` on type `a_move::Move` [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:355:31 [INFO] [stdout] | [INFO] [stdout] 355 | stats.did_move_pawn = true; [INFO] [stdout] | ^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `main_move`, `figure_captured`, `is_pawn_move`, `move_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:370:42 [INFO] [stdout] | [INFO] [stdout] 370 | Move::new(next_move, figure_captured), [INFO] [stdout] | --------- ^^^^^^^^^^^^^^^ expected `Option`, found `Option<(Figure, Position)>` [INFO] [stdout] | | [INFO] [stdout] | arguments to this function are incorrect [INFO] [stdout] | [INFO] [stdout] = note: expected enum `std::option::Option` [INFO] [stdout] found enum `std::option::Option<(Figure, position::Position)>` [INFO] [stdout] note: associated function defined here [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] 25 | main_move: FromTo, [INFO] [stdout] 26 | figure_caught: Option, [INFO] [stdout] | --------------------------------- [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `move_type` on type `a_move::FromTo` [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:318:76 [INFO] [stdout] | [INFO] [stdout] 318 | if let MoveType::PawnPromotion(promo_type) = pawn_move.move_type { [INFO] [stdout] | ^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `from`, `to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:541:46 [INFO] [stdout] | [INFO] [stdout] 541 | let (new_game_state, _) = game_state.do_move(a_move); [INFO] [stdout] | ^^^^^^^-------- an argument of type `std::option::Option` is missing [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn do_move(&self, mut next_move: FromTo, pawn_move_type: Option) -> (GameState, Move) { [INFO] [stdout] | ^^^^^^^ --------------------- ------------------------------------- [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 541 | let (new_game_state, _) = game_state.do_move(a_move, /* std::option::Option */); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no function or associated item named `new_castling` found for struct `a_move::FromTo` in the current scope [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:631:14 [INFO] [stdout] | [INFO] [stdout] 631 | (FromTo::new_castling(king_move.from, king_to_pos, castling_type), FromTo::new(king_move.to, rook_to_pos)) [INFO] [stdout] | ^^^^^^^^^^^^ function or associated item not found in `FromTo` [INFO] [stdout] | [INFO] [stdout] ::: workspace/logic_core/src/base/a_move.rs:59:1 [INFO] [stdout] | [INFO] [stdout] 59 | pub struct FromTo { [INFO] [stdout] | ----------------- function or associated item `new_castling` not found for this struct [INFO] [stdout] | [INFO] [stdout] note: if you're trying to build a new `a_move::FromTo` consider using one of the following associated functions: [INFO] [stdout] a_move::FromTo::new [INFO] [stdout] a_move::FromTo::from_code [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | pub fn new(from: Position, to: Position) -> FromTo { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn from_code(code: &str) -> FromTo { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/game/mod.rs:44:62 [INFO] [stdout] | [INFO] [stdout] 44 | let (new_game_state, move_stats) = self.latest_state.do_move(a_move); [INFO] [stdout] | ^^^^^^^-------- an argument of type `std::option::Option` is missing [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn do_move(&self, mut next_move: FromTo, pawn_move_type: Option) -> (GameState, Move) { [INFO] [stdout] | ^^^^^^^ --------------------- ------------------------------------- [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 44 | let (new_game_state, move_stats) = self.latest_state.do_move(a_move, /* std::option::Option */); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 29 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0023, E0061, E0277, E0308, E0412, E0432, E0560, E0599, E0609. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0023`. [INFO] [stdout] [INFO] [stderr] error: could not compile `logic_core` (lib) due to 30 previous errors [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error[E0432]: unresolved import `crate::game::MoveStats` [INFO] [stdout] --> workspace/logic_core/src/game/board_state.rs:2:34 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::game::{StoppedReason, MoveStats}; [INFO] [stdout] | ^^^^^^^^^ no `MoveStats` in `game` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0412]: cannot find type `MoveStats` in this scope [INFO] [stdout] --> workspace/logic_core/src/game/mod.rs:185:24 [INFO] [stdout] | [INFO] [stdout] 185 | Ongoing(Box, MoveStats), [INFO] [stdout] | ^^^^^^^^^ not found in this scope [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the trait bound `a_move::MoveType: Default` is not satisfied [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 13 | #[derive(Debug, Copy, Clone, Default, Serialize)] [INFO] [stdout] | ------- in this derive macro expansion [INFO] [stdout] ... [INFO] [stdout] 20 | pub move_type: MoveType, // TODO: make this a Box or Rc together with a static lifetime instance of Rc/Box workspace/logic_core/src/base/a_move.rs:13:39 [INFO] [stdout] | [INFO] [stdout] 13 | #[derive(Debug, Copy, Clone, Default, Serialize)] [INFO] [stdout] | ^^^^^^^^^ the trait `Serialize` is not implemented for `a_move::MoveType` [INFO] [stdout] ... [INFO] [stdout] 20 | pub move_type: MoveType, // TODO: make this a Box or Rc together with a static lifetime instance of Rc/Box /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/serde-1.0.193/src/ser/mod.rs:1865:12 [INFO] [stdout] | [INFO] [stdout] 1859 | fn serialize_field( [INFO] [stdout] | --------------- required by a bound in this associated function [INFO] [stdout] ... [INFO] [stdout] 1865 | T: Serialize; [INFO] [stdout] | ^^^^^^^^^ required by this bound in `SerializeStruct::serialize_field` [INFO] [stdout] = note: this error originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `move_type` on type `a_move::FromTo` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/check_search.rs:107:23 [INFO] [stdout] | [INFO] [stdout] 107 | match latest_move.move_type { [INFO] [stdout] | ^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `from`, `to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0023]: this pattern has 1 field, but the corresponding tuple variant has 2 fields [INFO] [stdout] --> workspace/logic_core/src/figure/functions/check_search.rs:108:28 [INFO] [stdout] | [INFO] [stdout] 108 | MoveType::Castling(castling_type) => { [INFO] [stdout] | ^^^^^^^^^^^^^ expected 2 fields, found 1 [INFO] [stdout] | [INFO] [stdout] ::: workspace/logic_core/src/base/a_move.rs:240:14 [INFO] [stdout] | [INFO] [stdout] 240 | Castling(CastlingType, /*rookMove:*/FromTo) // TODO: is CastlingType needed? [INFO] [stdout] | ------------ ------ tuple variant has 2 fields [INFO] [stdout] | [INFO] [stdout] help: use `_` to explicitly ignore each field [INFO] [stdout] | [INFO] [stdout] 108 | MoveType::Castling(castling_type, _) => { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `move_type` on type `a_move::FromTo` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/checkmate.rs:23:22 [INFO] [stdout] | [INFO] [stdout] 23 | match after_move.move_type { [INFO] [stdout] | ^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `from`, `to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0023]: this pattern has 1 field, but the corresponding tuple variant has 2 fields [INFO] [stdout] --> workspace/logic_core/src/figure/functions/checkmate.rs:24:28 [INFO] [stdout] | [INFO] [stdout] 24 | MoveType::Castling(castling_type) => { [INFO] [stdout] | ^^^^^^^^^^^^^ expected 2 fields, found 1 [INFO] [stdout] | [INFO] [stdout] ::: workspace/logic_core/src/base/a_move.rs:240:14 [INFO] [stdout] | [INFO] [stdout] 240 | Castling(CastlingType, /*rookMove:*/FromTo) // TODO: is CastlingType needed? [INFO] [stdout] | ------------ ------ tuple variant has 2 fields [INFO] [stdout] | [INFO] [stdout] help: use `_` to explicitly ignore each field [INFO] [stdout] | [INFO] [stdout] 24 | MoveType::Castling(castling_type, _) => { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/figure/functions/checkmate.rs:357:79 [INFO] [stdout] | [INFO] [stdout] 357 | let (game_state, _) = game_state_config.parse::().unwrap().do_move(latest_move); [INFO] [stdout] | ^^^^^^^------------- an argument of type `std::option::Option` is missing [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn do_move(&self, mut next_move: FromTo, pawn_move_type: Option) -> (GameState, Move) { [INFO] [stdout] | ^^^^^^^ --------------------- ------------------------------------- [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 357 | let (game_state, _) = game_state_config.parse::().unwrap().do_move(latest_move, /* std::option::Option */); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/figure/functions/checkmate.rs:395:79 [INFO] [stdout] | [INFO] [stdout] 395 | let (game_state, _) = game_state_config.parse::().unwrap().do_move(latest_move); [INFO] [stdout] | ^^^^^^^------------- an argument of type `std::option::Option` is missing [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn do_move(&self, mut next_move: FromTo, pawn_move_type: Option) -> (GameState, Move) { [INFO] [stdout] | ^^^^^^^ --------------------- ------------------------------------- [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 395 | let (game_state, _) = game_state_config.parse::().unwrap().do_move(latest_move, /* std::option::Option */); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `a_move::FromTo` has no field named `move_type` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:92:29 [INFO] [stdout] | [INFO] [stdout] 92 | ... move_type: MoveType::EnPassant [INFO] [stdout] | ^^^^^^^^^ `a_move::FromTo` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: all struct fields are already assigned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `a_move::FromTo` has no field named `move_type` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:114:21 [INFO] [stdout] | [INFO] [stdout] 114 | move_type: *pawn_promo [INFO] [stdout] | ^^^^^^^^^ `a_move::FromTo` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: all struct fields are already assigned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `a_move::FromTo` has no field named `move_type` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:121:17 [INFO] [stdout] | [INFO] [stdout] 121 | move_type: MoveType::Normal [INFO] [stdout] | ^^^^^^^^^ `a_move::FromTo` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: all struct fields are already assigned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `a_move::FromTo` has no field named `move_type` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:221:17 [INFO] [stdout] | [INFO] [stdout] 221 | move_type: MoveType::Castling(CastlingType::QueenSide) [INFO] [stdout] | ^^^^^^^^^ `a_move::FromTo` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: all struct fields are already assigned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this enum variant takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:221:28 [INFO] [stdout] | [INFO] [stdout] 221 | move_type: MoveType::Castling(CastlingType::QueenSide) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^------------------------- an argument of type `a_move::FromTo` is missing [INFO] [stdout] | [INFO] [stdout] note: tuple variant defined here [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:240:5 [INFO] [stdout] | [INFO] [stdout] 240 | Castling(CastlingType, /*rookMove:*/FromTo) // TODO: is CastlingType needed? [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 221 | move_type: MoveType::Castling(CastlingType::QueenSide, /* a_move::FromTo */) [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0560]: struct `a_move::FromTo` has no field named `move_type` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:230:17 [INFO] [stdout] | [INFO] [stdout] 230 | move_type: MoveType::Castling(CastlingType::KingSide) [INFO] [stdout] | ^^^^^^^^^ `a_move::FromTo` does not have this field [INFO] [stdout] | [INFO] [stdout] = note: all struct fields are already assigned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this enum variant takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/figure/functions/reachable.rs:230:28 [INFO] [stdout] | [INFO] [stdout] 230 | move_type: MoveType::Castling(CastlingType::KingSide) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^------------------------ an argument of type `a_move::FromTo` is missing [INFO] [stdout] | [INFO] [stdout] note: tuple variant defined here [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:240:5 [INFO] [stdout] | [INFO] [stdout] 240 | Castling(CastlingType, /*rookMove:*/FromTo) // TODO: is CastlingType needed? [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 230 | move_type: MoveType::Castling(CastlingType::KingSide, /* a_move::FromTo */) [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `move_type` on type `a_move::FromTo` [INFO] [stdout] --> workspace/logic_core/src/figure/functions/allowed.rs:17:65 [INFO] [stdout] | [INFO] [stdout] 17 | if let MoveType::PawnPromotion(promo_type) = a_move.move_type { [INFO] [stdout] | ^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `from`, `to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:276:68 [INFO] [stdout] | [INFO] [stdout] 276 | let mut stats = Move::new(effective_king_move, figure_captured); [INFO] [stdout] | --------- ^^^^^^^^^^^^^^^ expected `Option`, found `Option<(Figure, Position)>` [INFO] [stdout] | | [INFO] [stdout] | arguments to this function are incorrect [INFO] [stdout] | [INFO] [stdout] = note: expected enum `std::option::Option` [INFO] [stdout] found enum `std::option::Option<(figure::Figure, position::Position)>` [INFO] [stdout] note: associated function defined here [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] 25 | main_move: FromTo, [INFO] [stdout] 26 | figure_caught: Option, [INFO] [stdout] | --------------------------------- [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `castling_rook_move` on type `a_move::Move` [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:277:27 [INFO] [stdout] | [INFO] [stdout] 277 | stats.castling_rook_move = castling_rook_move; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `main_move`, `figure_captured`, `is_pawn_move`, `move_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:330:62 [INFO] [stdout] | [INFO] [stdout] 330 | let mut stats = Move::new(next_move, figure_captured); [INFO] [stdout] | --------- ^^^^^^^^^^^^^^^ expected `Option`, found `Option<(Figure, Position)>` [INFO] [stdout] | | [INFO] [stdout] | arguments to this function are incorrect [INFO] [stdout] | [INFO] [stdout] = note: expected enum `std::option::Option` [INFO] [stdout] found enum `std::option::Option<(figure::Figure, position::Position)>` [INFO] [stdout] note: associated function defined here [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] 25 | main_move: FromTo, [INFO] [stdout] 26 | figure_caught: Option, [INFO] [stdout] | --------------------------------- [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `did_move_pawn` on type `a_move::Move` [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:331:31 [INFO] [stdout] | [INFO] [stdout] 331 | stats.did_move_pawn = true; [INFO] [stdout] | ^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `main_move`, `figure_captured`, `is_pawn_move`, `move_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `did_move_pawn` on type `a_move::Move` [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:341:31 [INFO] [stdout] | [INFO] [stdout] 341 | stats.did_move_pawn = true; [INFO] [stdout] | ^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `main_move`, `figure_captured`, `is_pawn_move`, `move_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `move_type` on type `a_move::FromTo` [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:353:35 [INFO] [stdout] | [INFO] [stdout] 353 | next_move.move_type = MoveType::EnPassant; [INFO] [stdout] | ^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `from`, `to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:354:67 [INFO] [stdout] | [INFO] [stdout] 354 | let mut stats = Move::new(next_move, Some(pawn_captured)); [INFO] [stdout] | ---- ^^^^^^^^^^^^^ expected `FigureType`, found `(Figure, Position)` [INFO] [stdout] | | [INFO] [stdout] | arguments to this enum variant are incorrect [INFO] [stdout] | [INFO] [stdout] = note: expected enum `figure::FigureType` [INFO] [stdout] found tuple `(figure::Figure, position::Position)` [INFO] [stdout] help: the type constructed contains `(figure::Figure, position::Position)` due to the type of the argument passed [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:354:62 [INFO] [stdout] | [INFO] [stdout] 354 | let mut stats = Move::new(next_move, Some(pawn_captured)); [INFO] [stdout] | ^^^^^-------------^ [INFO] [stdout] | | [INFO] [stdout] | this argument influences the type of `Some` [INFO] [stdout] note: tuple variant defined here [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:579:5 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `did_move_pawn` on type `a_move::Move` [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:355:31 [INFO] [stdout] | [INFO] [stdout] 355 | stats.did_move_pawn = true; [INFO] [stdout] | ^^^^^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `main_move`, `figure_captured`, `is_pawn_move`, `move_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:370:42 [INFO] [stdout] | [INFO] [stdout] 370 | Move::new(next_move, figure_captured), [INFO] [stdout] | --------- ^^^^^^^^^^^^^^^ expected `Option`, found `Option<(Figure, Position)>` [INFO] [stdout] | | [INFO] [stdout] | arguments to this function are incorrect [INFO] [stdout] | [INFO] [stdout] = note: expected enum `std::option::Option` [INFO] [stdout] found enum `std::option::Option<(figure::Figure, position::Position)>` [INFO] [stdout] note: associated function defined here [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] 25 | main_move: FromTo, [INFO] [stdout] 26 | figure_caught: Option, [INFO] [stdout] | --------------------------------- [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `move_type` on type `a_move::FromTo` [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:318:76 [INFO] [stdout] | [INFO] [stdout] 318 | if let MoveType::PawnPromotion(promo_type) = pawn_move.move_type { [INFO] [stdout] | ^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `from`, `to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:541:46 [INFO] [stdout] | [INFO] [stdout] 541 | let (new_game_state, _) = game_state.do_move(a_move); [INFO] [stdout] | ^^^^^^^-------- an argument of type `std::option::Option` is missing [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn do_move(&self, mut next_move: FromTo, pawn_move_type: Option) -> (GameState, Move) { [INFO] [stdout] | ^^^^^^^ --------------------- ------------------------------------- [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 541 | let (new_game_state, _) = game_state.do_move(a_move, /* std::option::Option */); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no function or associated item named `new_castling` found for struct `a_move::FromTo` in the current scope [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:631:14 [INFO] [stdout] | [INFO] [stdout] 631 | (FromTo::new_castling(king_move.from, king_to_pos, castling_type), FromTo::new(king_move.to, rook_to_pos)) [INFO] [stdout] | ^^^^^^^^^^^^ function or associated item not found in `FromTo` [INFO] [stdout] | [INFO] [stdout] ::: workspace/logic_core/src/base/a_move.rs:59:1 [INFO] [stdout] | [INFO] [stdout] 59 | pub struct FromTo { [INFO] [stdout] | ----------------- function or associated item `new_castling` not found for this struct [INFO] [stdout] | [INFO] [stdout] note: if you're trying to build a new `a_move::FromTo` consider using one of the following associated functions: [INFO] [stdout] a_move::FromTo::new [INFO] [stdout] a_move::FromTo::from_code [INFO] [stdout] --> workspace/logic_core/src/base/a_move.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | pub fn new(from: Position, to: Position) -> FromTo { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn from_code(code: &str) -> FromTo { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:752:43 [INFO] [stdout] | [INFO] [stdout] 752 | let ( _, move_stats) = game_state.do_move(white_move); [INFO] [stdout] | ^^^^^^^------------ an argument of type `std::option::Option` is missing [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn do_move(&self, mut next_move: FromTo, pawn_move_type: Option) -> (GameState, Move) { [INFO] [stdout] | ^^^^^^^ --------------------- ------------------------------------- [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 752 | let ( _, move_stats) = game_state.do_move(white_move, /* std::option::Option */); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `did_catch_figure` found for struct `a_move::Move` in the current scope [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:753:31 [INFO] [stdout] | [INFO] [stdout] 753 | assert_eq!(move_stats.did_catch_figure(), expected_catches_figure, "white catches figure"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ method not found in `Move` [INFO] [stdout] | [INFO] [stdout] ::: workspace/logic_core/src/base/a_move.rs:14:1 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct Move { [INFO] [stdout] | --------------- method `did_catch_figure` not found for this struct [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:757:51 [INFO] [stdout] | [INFO] [stdout] 757 | let ( _, move_stats) = toggled_game_state.do_move(white_move.toggle_rows()); [INFO] [stdout] | ^^^^^^^-------------------------- an argument of type `std::option::Option` is missing [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn do_move(&self, mut next_move: FromTo, pawn_move_type: Option) -> (GameState, Move) { [INFO] [stdout] | ^^^^^^^ --------------------- ------------------------------------- [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 757 | let ( _, move_stats) = toggled_game_state.do_move(white_move.toggle_rows(), /* std::option::Option */); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `did_catch_figure` found for struct `a_move::Move` in the current scope [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:758:31 [INFO] [stdout] | [INFO] [stdout] 758 | assert_eq!(move_stats.did_catch_figure(), expected_catches_figure, "black catches figure"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ method not found in `Move` [INFO] [stdout] | [INFO] [stdout] ::: workspace/logic_core/src/base/a_move.rs:14:1 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct Move { [INFO] [stdout] | --------------- method `did_catch_figure` not found for this struct [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:769:20 [INFO] [stdout] | [INFO] [stdout] 769 | game_state.do_move(white_move); [INFO] [stdout] | ^^^^^^^------------ an argument of type `std::option::Option` is missing [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn do_move(&self, mut next_move: FromTo, pawn_move_type: Option) -> (GameState, Move) { [INFO] [stdout] | ^^^^^^^ --------------------- ------------------------------------- [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 769 | game_state.do_move(white_move, /* std::option::Option */); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:776:28 [INFO] [stdout] | [INFO] [stdout] 776 | toggled_game_state.do_move(white_move.toggle_rows()); [INFO] [stdout] | ^^^^^^^-------------------------- an argument of type `std::option::Option` is missing [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn do_move(&self, mut next_move: FromTo, pawn_move_type: Option) -> (GameState, Move) { [INFO] [stdout] | ^^^^^^^ --------------------- ------------------------------------- [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 776 | toggled_game_state.do_move(white_move.toggle_rows(), /* std::option::Option */); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `move_type` on type `a_move::FromTo` [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:832:102 [INFO] [stdout] | [INFO] [stdout] 832 | let expected_promo_figure_type = if let MoveType::PawnPromotion(promo_type) = promoting_move.move_type { [INFO] [stdout] | ^^^^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `from`, `to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:837:46 [INFO] [stdout] | [INFO] [stdout] 837 | let (new_game_state, _) = game_state.do_move(promoting_move); [INFO] [stdout] | ^^^^^^^---------------- an argument of type `std::option::Option` is missing [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn do_move(&self, mut next_move: FromTo, pawn_move_type: Option) -> (GameState, Move) { [INFO] [stdout] | ^^^^^^^ --------------------- ------------------------------------- [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 837 | let (new_game_state, _) = game_state.do_move(promoting_move, /* std::option::Option */); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:864:46 [INFO] [stdout] | [INFO] [stdout] 864 | let (new_game_state, _) = game_state.do_move(castling_move); [INFO] [stdout] | ^^^^^^^--------------- an argument of type `std::option::Option` is missing [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn do_move(&self, mut next_move: FromTo, pawn_move_type: Option) -> (GameState, Move) { [INFO] [stdout] | ^^^^^^^ --------------------- ------------------------------------- [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 864 | let (new_game_state, _) = game_state.do_move(castling_move, /* std::option::Option */); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied [INFO] [stdout] --> workspace/logic_core/src/game/mod.rs:44:62 [INFO] [stdout] | [INFO] [stdout] 44 | let (new_game_state, move_stats) = self.latest_state.do_move(a_move); [INFO] [stdout] | ^^^^^^^-------- an argument of type `std::option::Option` is missing [INFO] [stdout] | [INFO] [stdout] note: method defined here [INFO] [stdout] --> workspace/logic_core/src/game/game_state.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub fn do_move(&self, mut next_move: FromTo, pawn_move_type: Option) -> (GameState, Move) { [INFO] [stdout] | ^^^^^^^ --------------------- ------------------------------------- [INFO] [stdout] help: provide the argument [INFO] [stdout] | [INFO] [stdout] 44 | let (new_game_state, move_stats) = self.latest_state.do_move(a_move, /* std::option::Option */); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 40 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0023, E0061, E0277, E0308, E0412, E0432, E0560, E0599, E0609. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0023`. [INFO] [stdout] [INFO] [stderr] error: could not compile `logic_core` (lib test) due to 41 previous errors [INFO] running `Command { std: "docker" "inspect" "00399f6b092d9221871d9f0e3d08172cdfdc2668852ed090105a23eb79476421", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "00399f6b092d9221871d9f0e3d08172cdfdc2668852ed090105a23eb79476421", kill_on_drop: false }` [INFO] [stdout] 00399f6b092d9221871d9f0e3d08172cdfdc2668852ed090105a23eb79476421 [INFO] checking simon-void/chess_replay_rs against try#dae34b759e282c069aa28752564694effd121a63 for pr-125384 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsimon-void%2Fchess_replay_rs" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/simon-void/chess_replay_rs on toolchain dae34b759e282c069aa28752564694effd121a63 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dae34b759e282c069aa28752564694effd121a63" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/simon-void/chess_replay_rs [INFO] finished tweaking git repo https://github.com/simon-void/chess_replay_rs [INFO] tweaked toml for git repo https://github.com/simon-void/chess_replay_rs written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] crate git repo https://github.com/simon-void/chess_replay_rs 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" "+dae34b759e282c069aa28752564694effd121a63" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+dae34b759e282c069aa28752564694effd121a63" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] e5af9d8322e046a1b5bc409b61056dbdea327ec519a2865ee7d2078507f015ee [INFO] running `Command { std: "docker" "start" "-a" "e5af9d8322e046a1b5bc409b61056dbdea327ec519a2865ee7d2078507f015ee", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "e5af9d8322e046a1b5bc409b61056dbdea327ec519a2865ee7d2078507f015ee", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e5af9d8322e046a1b5bc409b61056dbdea327ec519a2865ee7d2078507f015ee", kill_on_drop: false }` [INFO] [stdout] e5af9d8322e046a1b5bc409b61056dbdea327ec519a2865ee7d2078507f015ee [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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=allow" "-e" "RUSTDOCFLAGS=--cap-lints=allow" "-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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+dae34b759e282c069aa28752564694effd121a63" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f81cd3dbe3f9a4c0cdd02a217e9b892b3772223bbda48ea65e0042e9108f7226 [INFO] running `Command { std: "docker" "start" "-a" "f81cd3dbe3f9a4c0cdd02a217e9b892b3772223bbda48ea65e0042e9108f7226", kill_on_drop: false }` [INFO] [stderr] Copying to /tmp/fixit [INFO] [stderr] no edition found in manifest, probably 2015, skipping [INFO] running `Command { std: "docker" "inspect" "f81cd3dbe3f9a4c0cdd02a217e9b892b3772223bbda48ea65e0042e9108f7226", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f81cd3dbe3f9a4c0cdd02a217e9b892b3772223bbda48ea65e0042e9108f7226", kill_on_drop: false }` [INFO] [stdout] f81cd3dbe3f9a4c0cdd02a217e9b892b3772223bbda48ea65e0042e9108f7226