[INFO] cloning repository https://github.com/Bietola/rwh-ch10-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Bietola/rwh-ch10-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBietola%2Frwh-ch10-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBietola%2Frwh-ch10-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0618c38f07cbfa3db2096707c9d31069408df054
[INFO] checking Bietola/rwh-ch10-rust against master#292be5c7c05138d753bbd4b30db7a3f1a5c914f7 for pr-148271
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBietola%2Frwh-ch10-rust" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Bietola/rwh-ch10-rust
[INFO] finished tweaking git repo https://github.com/Bietola/rwh-ch10-rust
[INFO] tweaked toml for git repo https://github.com/Bietola/rwh-ch10-rust written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Bietola/rwh-ch10-rust on toolchain 292be5c7c05138d753bbd4b30db7a3f1a5c914f7
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+292be5c7c05138d753bbd4b30db7a3f1a5c914f7" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Bietola/rwh-ch10-rust 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" "+292be5c7c05138d753bbd4b30db7a3f1a5c914f7" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded unindent v0.1.6
[INFO] [stderr]   Downloaded derive-newtype v0.2.3
[INFO] [stderr]   Downloaded indoc-impl v0.3.6
[INFO] [stderr]   Downloaded indoc v0.3.6
[INFO] [stderr]   Downloaded proc-macro2 v1.0.19
[INFO] [stderr]   Downloaded syn v1.0.35
[INFO] [stderr]   Downloaded bstr v0.2.13
[INFO] [stderr]   Downloaded newtype v0.2.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+292be5c7c05138d753bbd4b30db7a3f1a5c914f7" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 47f236e67e4cf48ec59127c93841a0df22901792796fa7b3bdc673aec539156e
[INFO] running `Command { std: "docker" "start" "-a" "47f236e67e4cf48ec59127c93841a0df22901792796fa7b3bdc673aec539156e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "47f236e67e4cf48ec59127c93841a0df22901792796fa7b3bdc673aec539156e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "47f236e67e4cf48ec59127c93841a0df22901792796fa7b3bdc673aec539156e", kill_on_drop: false }`
[INFO] [stdout] 47f236e67e4cf48ec59127c93841a0df22901792796fa7b3bdc673aec539156e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+292be5c7c05138d753bbd4b30db7a3f1a5c914f7" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 062eeff1d9e86dead32a5b170e1c670bf4f203a2418acae024c445d51fa9973e
[INFO] running `Command { std: "docker" "start" "-a" "062eeff1d9e86dead32a5b170e1c670bf4f203a2418acae024c445d51fa9973e", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.19
[INFO] [stderr]    Compiling syn v0.15.44
[INFO] [stderr]    Compiling syn v1.0.35
[INFO] [stderr]    Compiling byteorder v1.3.4
[INFO] [stderr]    Compiling memchr v2.3.3
[INFO] [stderr]    Compiling unindent v0.1.6
[INFO] [stderr]    Compiling proc-macro-hack v0.5.18
[INFO] [stderr]     Checking regex-automata v0.1.9
[INFO] [stderr]     Checking bstr v0.2.13
[INFO] [stderr]    Compiling quote v1.0.7
[INFO] [stderr]    Compiling derive-newtype v0.2.3
[INFO] [stderr]     Checking newtype v0.2.1
[INFO] [stderr]    Compiling indoc-impl v0.3.6
[INFO] [stderr]     Checking indoc v0.3.6
[INFO] [stderr]     Checking rwh-ch10-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: the feature `result_flattening` has been stable since 1.89.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(result_flattening)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `result_flattening` has been stable since 1.89.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(result_flattening)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0525]: expected a closure that implements the `Fn` trait, but this closure only implements `FnOnce`
[INFO] [stdout]    --> src/main.rs:60:9
[INFO] [stdout]     |
[INFO] [stdout]  60 |           move |input| Ok(($val, input))
[INFO] [stdout]     |           ^^^^^^^^^^^^ this closure implements `FnOnce`, not `Fn`
[INFO] [stdout] ...
[INFO] [stdout]  63 |           and_then($parser, move |$out| parse_do!($($tail)*))
[INFO] [stdout]     |           --------------------------------------------------- the requirement to implement `Fn` derives from here
[INFO] [stdout] ...
[INFO] [stdout]  99 |       let parser = parse_do! {
[INFO] [stdout]     |  __________________-
[INFO] [stdout] 100 | |         match_header_version,
[INFO] [stdout] 101 | |         width <- get_num,
[INFO] [stdout] 102 | |         height <- get_num,
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |             contents: contents.into(),
[INFO] [stdout]     | |                       -------- closure is `FnOnce` because it moves the variable `contents` out of its environment
[INFO] [stdout] 111 | |         },
[INFO] [stdout] 112 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout] note: required for `{closure@src/main.rs:60:9: 60:21}` to implement `Parser<'_, PGM>`
[INFO] [stdout]    --> src/main.rs:19:18
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl<'a, Out, F> Parser<'a, Out> for F
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^     ^
[INFO] [stdout]  20 | where
[INFO] [stdout]  21 |     F: Fn(ParseInput<'a>) -> ParseResult<Out>,
[INFO] [stdout]     |        -------------------------------------- unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `and_then`
[INFO] [stdout]    --> src/main.rs:40:9
[INFO] [stdout]     |
[INFO] [stdout]  36 | fn and_then<'a, Out, Out1, F, P, P1>(parser: P, fun: F) -> impl Parser<'a, Out1>
[INFO] [stdout]     |    -------- required by a bound in this function
[INFO] [stdout] ...
[INFO] [stdout]  40 |     P1: Parser<'a, Out1>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ required by this bound in `and_then`
[INFO] [stdout]     = note: this error originates in the macro `parse_do` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0525]: expected a closure that implements the `Fn` trait, but this closure only implements `FnOnce`
[INFO] [stdout]    --> src/main.rs:60:9
[INFO] [stdout]     |
[INFO] [stdout]  60 |           move |input| Ok(($val, input))
[INFO] [stdout]     |           ^^^^^^^^^^^^ this closure implements `FnOnce`, not `Fn`
[INFO] [stdout] ...
[INFO] [stdout]  63 |           and_then($parser, move |$out| parse_do!($($tail)*))
[INFO] [stdout]     |           -------- the requirement to implement `Fn` derives from here
[INFO] [stdout] ...
[INFO] [stdout]  99 |       let parser = parse_do! {
[INFO] [stdout]     |  __________________-
[INFO] [stdout] 100 | |         match_header_version,
[INFO] [stdout] 101 | |         width <- get_num,
[INFO] [stdout] 102 | |         height <- get_num,
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |             contents: contents.into(),
[INFO] [stdout]     | |                       -------- closure is `FnOnce` because it moves the variable `contents` out of its environment
[INFO] [stdout] 111 | |         },
[INFO] [stdout] 112 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout] note: required for `{closure@src/main.rs:60:9: 60:21}` to implement `Parser<'_, PGM>`
[INFO] [stdout]    --> src/main.rs:19:18
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl<'a, Out, F> Parser<'a, Out> for F
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^     ^
[INFO] [stdout]  20 | where
[INFO] [stdout]  21 |     F: Fn(ParseInput<'a>) -> ParseResult<Out>,
[INFO] [stdout]     |        -------------------------------------- unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `and_then`
[INFO] [stdout]    --> src/main.rs:40:9
[INFO] [stdout]     |
[INFO] [stdout]  36 | fn and_then<'a, Out, Out1, F, P, P1>(parser: P, fun: F) -> impl Parser<'a, Out1>
[INFO] [stdout]     |    -------- required by a bound in this function
[INFO] [stdout] ...
[INFO] [stdout]  40 |     P1: Parser<'a, Out1>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ required by this bound in `and_then`
[INFO] [stdout]     = note: this error originates in the macro `parse_do` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0525]: expected a closure that implements the `Fn` trait, but this closure only implements `FnOnce`
[INFO] [stdout]    --> src/main.rs:60:9
[INFO] [stdout]     |
[INFO] [stdout]  60 |           move |input| Ok(($val, input))
[INFO] [stdout]     |           ^^^^^^^^^^^^ this closure implements `FnOnce`, not `Fn`
[INFO] [stdout] ...
[INFO] [stdout]  63 |           and_then($parser, move |$out| parse_do!($($tail)*))
[INFO] [stdout]     |           -------- the requirement to implement `Fn` derives from here
[INFO] [stdout] ...
[INFO] [stdout]  99 |       let parser = parse_do! {
[INFO] [stdout]     |  __________________-
[INFO] [stdout] 100 | |         match_header_version,
[INFO] [stdout] 101 | |         width <- get_num,
[INFO] [stdout] 102 | |         height <- get_num,
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |             contents: contents.into(),
[INFO] [stdout]     | |                       -------- closure is `FnOnce` because it moves the variable `contents` out of its environment
[INFO] [stdout] 111 | |         },
[INFO] [stdout] 112 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout] note: required for `{closure@src/main.rs:60:9: 60:21}` to implement `Parser<'_, PGM>`
[INFO] [stdout]    --> src/main.rs:19:18
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl<'a, Out, F> Parser<'a, Out> for F
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^     ^
[INFO] [stdout]  20 | where
[INFO] [stdout]  21 |     F: Fn(ParseInput<'a>) -> ParseResult<Out>,
[INFO] [stdout]     |        -------------------------------------- unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `and_then`
[INFO] [stdout]    --> src/main.rs:40:9
[INFO] [stdout]     |
[INFO] [stdout]  36 | fn and_then<'a, Out, Out1, F, P, P1>(parser: P, fun: F) -> impl Parser<'a, Out1>
[INFO] [stdout]     |    -------- required by a bound in this function
[INFO] [stdout] ...
[INFO] [stdout]  40 |     P1: Parser<'a, Out1>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ required by this bound in `and_then`
[INFO] [stdout]     = note: this error originates in the macro `parse_do` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0525]: expected a closure that implements the `Fn` trait, but this closure only implements `FnOnce`
[INFO] [stdout]    --> src/main.rs:60:9
[INFO] [stdout]     |
[INFO] [stdout]  60 |           move |input| Ok(($val, input))
[INFO] [stdout]     |           ^^^^^^^^^^^^ this closure implements `FnOnce`, not `Fn`
[INFO] [stdout] ...
[INFO] [stdout]  63 |           and_then($parser, move |$out| parse_do!($($tail)*))
[INFO] [stdout]     |           -------- the requirement to implement `Fn` derives from here
[INFO] [stdout] ...
[INFO] [stdout]  99 |       let parser = parse_do! {
[INFO] [stdout]     |  __________________-
[INFO] [stdout] 100 | |         match_header_version,
[INFO] [stdout] 101 | |         width <- get_num,
[INFO] [stdout] 102 | |         height <- get_num,
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |             contents: contents.into(),
[INFO] [stdout]     | |                       -------- closure is `FnOnce` because it moves the variable `contents` out of its environment
[INFO] [stdout] 111 | |         },
[INFO] [stdout] 112 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout] note: required for `{closure@src/main.rs:60:9: 60:21}` to implement `Parser<'_, PGM>`
[INFO] [stdout]    --> src/main.rs:19:18
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl<'a, Out, F> Parser<'a, Out> for F
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^     ^
[INFO] [stdout]  20 | where
[INFO] [stdout]  21 |     F: Fn(ParseInput<'a>) -> ParseResult<Out>,
[INFO] [stdout]     |        -------------------------------------- unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `and_then`
[INFO] [stdout]    --> src/main.rs:40:9
[INFO] [stdout]     |
[INFO] [stdout]  36 | fn and_then<'a, Out, Out1, F, P, P1>(parser: P, fun: F) -> impl Parser<'a, Out1>
[INFO] [stdout]     |    -------- required by a bound in this function
[INFO] [stdout] ...
[INFO] [stdout]  40 |     P1: Parser<'a, Out1>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ required by this bound in `and_then`
[INFO] [stdout]     = note: this error originates in the macro `parse_do` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0525]: expected a closure that implements the `Fn` trait, but this closure only implements `FnOnce`
[INFO] [stdout]    --> src/main.rs:60:9
[INFO] [stdout]     |
[INFO] [stdout]  60 |           move |input| Ok(($val, input))
[INFO] [stdout]     |           ^^^^^^^^^^^^ this closure implements `FnOnce`, not `Fn`
[INFO] [stdout] ...
[INFO] [stdout]  66 |           and_then($parser, move |_| parse_do!($($tail)*))
[INFO] [stdout]     |           -------- the requirement to implement `Fn` derives from here
[INFO] [stdout] ...
[INFO] [stdout]  99 |       let parser = parse_do! {
[INFO] [stdout]     |  __________________-
[INFO] [stdout] 100 | |         match_header_version,
[INFO] [stdout] 101 | |         width <- get_num,
[INFO] [stdout] 102 | |         height <- get_num,
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |             contents: contents.into(),
[INFO] [stdout]     | |                       -------- closure is `FnOnce` because it moves the variable `contents` out of its environment
[INFO] [stdout] 111 | |         },
[INFO] [stdout] 112 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout] note: required for `{closure@src/main.rs:60:9: 60:21}` to implement `Parser<'_, PGM>`
[INFO] [stdout]    --> src/main.rs:19:18
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl<'a, Out, F> Parser<'a, Out> for F
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^     ^
[INFO] [stdout]  20 | where
[INFO] [stdout]  21 |     F: Fn(ParseInput<'a>) -> ParseResult<Out>,
[INFO] [stdout]     |        -------------------------------------- unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `and_then`
[INFO] [stdout]    --> src/main.rs:40:9
[INFO] [stdout]     |
[INFO] [stdout]  36 | fn and_then<'a, Out, Out1, F, P, P1>(parser: P, fun: F) -> impl Parser<'a, Out1>
[INFO] [stdout]     |    -------- required by a bound in this function
[INFO] [stdout] ...
[INFO] [stdout]  40 |     P1: Parser<'a, Out1>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ required by this bound in `and_then`
[INFO] [stdout]     = note: this error originates in the macro `parse_do` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0525`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rwh-ch10-rust` (bin "rwh-ch10-rust") due to 5 previous errors; 1 warning emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0525]: expected a closure that implements the `Fn` trait, but this closure only implements `FnOnce`
[INFO] [stdout]    --> src/main.rs:60:9
[INFO] [stdout]     |
[INFO] [stdout]  60 |           move |input| Ok(($val, input))
[INFO] [stdout]     |           ^^^^^^^^^^^^ this closure implements `FnOnce`, not `Fn`
[INFO] [stdout] ...
[INFO] [stdout]  63 |           and_then($parser, move |$out| parse_do!($($tail)*))
[INFO] [stdout]     |           --------------------------------------------------- the requirement to implement `Fn` derives from here
[INFO] [stdout] ...
[INFO] [stdout]  99 |       let parser = parse_do! {
[INFO] [stdout]     |  __________________-
[INFO] [stdout] 100 | |         match_header_version,
[INFO] [stdout] 101 | |         width <- get_num,
[INFO] [stdout] 102 | |         height <- get_num,
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |             contents: contents.into(),
[INFO] [stdout]     | |                       -------- closure is `FnOnce` because it moves the variable `contents` out of its environment
[INFO] [stdout] 111 | |         },
[INFO] [stdout] 112 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout] note: required for `{closure@src/main.rs:60:9: 60:21}` to implement `Parser<'_, PGM>`
[INFO] [stdout]    --> src/main.rs:19:18
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl<'a, Out, F> Parser<'a, Out> for F
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^     ^
[INFO] [stdout]  20 | where
[INFO] [stdout]  21 |     F: Fn(ParseInput<'a>) -> ParseResult<Out>,
[INFO] [stdout]     |        -------------------------------------- unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `and_then`
[INFO] [stdout]    --> src/main.rs:40:9
[INFO] [stdout]     |
[INFO] [stdout]  36 | fn and_then<'a, Out, Out1, F, P, P1>(parser: P, fun: F) -> impl Parser<'a, Out1>
[INFO] [stdout]     |    -------- required by a bound in this function
[INFO] [stdout] ...
[INFO] [stdout]  40 |     P1: Parser<'a, Out1>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ required by this bound in `and_then`
[INFO] [stdout]     = note: this error originates in the macro `parse_do` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0525]: expected a closure that implements the `Fn` trait, but this closure only implements `FnOnce`
[INFO] [stdout]    --> src/main.rs:60:9
[INFO] [stdout]     |
[INFO] [stdout]  60 |           move |input| Ok(($val, input))
[INFO] [stdout]     |           ^^^^^^^^^^^^ this closure implements `FnOnce`, not `Fn`
[INFO] [stdout] ...
[INFO] [stdout]  63 |           and_then($parser, move |$out| parse_do!($($tail)*))
[INFO] [stdout]     |           -------- the requirement to implement `Fn` derives from here
[INFO] [stdout] ...
[INFO] [stdout]  99 |       let parser = parse_do! {
[INFO] [stdout]     |  __________________-
[INFO] [stdout] 100 | |         match_header_version,
[INFO] [stdout] 101 | |         width <- get_num,
[INFO] [stdout] 102 | |         height <- get_num,
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |             contents: contents.into(),
[INFO] [stdout]     | |                       -------- closure is `FnOnce` because it moves the variable `contents` out of its environment
[INFO] [stdout] 111 | |         },
[INFO] [stdout] 112 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout] note: required for `{closure@src/main.rs:60:9: 60:21}` to implement `Parser<'_, PGM>`
[INFO] [stdout]    --> src/main.rs:19:18
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl<'a, Out, F> Parser<'a, Out> for F
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^     ^
[INFO] [stdout]  20 | where
[INFO] [stdout]  21 |     F: Fn(ParseInput<'a>) -> ParseResult<Out>,
[INFO] [stdout]     |        -------------------------------------- unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `and_then`
[INFO] [stdout]    --> src/main.rs:40:9
[INFO] [stdout]     |
[INFO] [stdout]  36 | fn and_then<'a, Out, Out1, F, P, P1>(parser: P, fun: F) -> impl Parser<'a, Out1>
[INFO] [stdout]     |    -------- required by a bound in this function
[INFO] [stdout] ...
[INFO] [stdout]  40 |     P1: Parser<'a, Out1>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ required by this bound in `and_then`
[INFO] [stdout]     = note: this error originates in the macro `parse_do` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0525]: expected a closure that implements the `Fn` trait, but this closure only implements `FnOnce`
[INFO] [stdout]    --> src/main.rs:60:9
[INFO] [stdout]     |
[INFO] [stdout]  60 |           move |input| Ok(($val, input))
[INFO] [stdout]     |           ^^^^^^^^^^^^ this closure implements `FnOnce`, not `Fn`
[INFO] [stdout] ...
[INFO] [stdout]  63 |           and_then($parser, move |$out| parse_do!($($tail)*))
[INFO] [stdout]     |           -------- the requirement to implement `Fn` derives from here
[INFO] [stdout] ...
[INFO] [stdout]  99 |       let parser = parse_do! {
[INFO] [stdout]     |  __________________-
[INFO] [stdout] 100 | |         match_header_version,
[INFO] [stdout] 101 | |         width <- get_num,
[INFO] [stdout] 102 | |         height <- get_num,
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |             contents: contents.into(),
[INFO] [stdout]     | |                       -------- closure is `FnOnce` because it moves the variable `contents` out of its environment
[INFO] [stdout] 111 | |         },
[INFO] [stdout] 112 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout] note: required for `{closure@src/main.rs:60:9: 60:21}` to implement `Parser<'_, PGM>`
[INFO] [stdout]    --> src/main.rs:19:18
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl<'a, Out, F> Parser<'a, Out> for F
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^     ^
[INFO] [stdout]  20 | where
[INFO] [stdout]  21 |     F: Fn(ParseInput<'a>) -> ParseResult<Out>,
[INFO] [stdout]     |        -------------------------------------- unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `and_then`
[INFO] [stdout]    --> src/main.rs:40:9
[INFO] [stdout]     |
[INFO] [stdout]  36 | fn and_then<'a, Out, Out1, F, P, P1>(parser: P, fun: F) -> impl Parser<'a, Out1>
[INFO] [stdout]     |    -------- required by a bound in this function
[INFO] [stdout] ...
[INFO] [stdout]  40 |     P1: Parser<'a, Out1>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ required by this bound in `and_then`
[INFO] [stdout]     = note: this error originates in the macro `parse_do` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0525]: expected a closure that implements the `Fn` trait, but this closure only implements `FnOnce`
[INFO] [stdout]    --> src/main.rs:60:9
[INFO] [stdout]     |
[INFO] [stdout]  60 |           move |input| Ok(($val, input))
[INFO] [stdout]     |           ^^^^^^^^^^^^ this closure implements `FnOnce`, not `Fn`
[INFO] [stdout] ...
[INFO] [stdout]  63 |           and_then($parser, move |$out| parse_do!($($tail)*))
[INFO] [stdout]     |           -------- the requirement to implement `Fn` derives from here
[INFO] [stdout] ...
[INFO] [stdout]  99 |       let parser = parse_do! {
[INFO] [stdout]     |  __________________-
[INFO] [stdout] 100 | |         match_header_version,
[INFO] [stdout] 101 | |         width <- get_num,
[INFO] [stdout] 102 | |         height <- get_num,
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |             contents: contents.into(),
[INFO] [stdout]     | |                       -------- closure is `FnOnce` because it moves the variable `contents` out of its environment
[INFO] [stdout] 111 | |         },
[INFO] [stdout] 112 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout] note: required for `{closure@src/main.rs:60:9: 60:21}` to implement `Parser<'_, PGM>`
[INFO] [stdout]    --> src/main.rs:19:18
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl<'a, Out, F> Parser<'a, Out> for F
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^     ^
[INFO] [stdout]  20 | where
[INFO] [stdout]  21 |     F: Fn(ParseInput<'a>) -> ParseResult<Out>,
[INFO] [stdout]     |        -------------------------------------- unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `and_then`
[INFO] [stdout]    --> src/main.rs:40:9
[INFO] [stdout]     |
[INFO] [stdout]  36 | fn and_then<'a, Out, Out1, F, P, P1>(parser: P, fun: F) -> impl Parser<'a, Out1>
[INFO] [stdout]     |    -------- required by a bound in this function
[INFO] [stdout] ...
[INFO] [stdout]  40 |     P1: Parser<'a, Out1>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ required by this bound in `and_then`
[INFO] [stdout]     = note: this error originates in the macro `parse_do` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0525]: expected a closure that implements the `Fn` trait, but this closure only implements `FnOnce`
[INFO] [stdout]    --> src/main.rs:60:9
[INFO] [stdout]     |
[INFO] [stdout]  60 |           move |input| Ok(($val, input))
[INFO] [stdout]     |           ^^^^^^^^^^^^ this closure implements `FnOnce`, not `Fn`
[INFO] [stdout] ...
[INFO] [stdout]  66 |           and_then($parser, move |_| parse_do!($($tail)*))
[INFO] [stdout]     |           -------- the requirement to implement `Fn` derives from here
[INFO] [stdout] ...
[INFO] [stdout]  99 |       let parser = parse_do! {
[INFO] [stdout]     |  __________________-
[INFO] [stdout] 100 | |         match_header_version,
[INFO] [stdout] 101 | |         width <- get_num,
[INFO] [stdout] 102 | |         height <- get_num,
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |             contents: contents.into(),
[INFO] [stdout]     | |                       -------- closure is `FnOnce` because it moves the variable `contents` out of its environment
[INFO] [stdout] 111 | |         },
[INFO] [stdout] 112 | |     };
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout] note: required for `{closure@src/main.rs:60:9: 60:21}` to implement `Parser<'_, PGM>`
[INFO] [stdout]    --> src/main.rs:19:18
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl<'a, Out, F> Parser<'a, Out> for F
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^     ^
[INFO] [stdout]  20 | where
[INFO] [stdout]  21 |     F: Fn(ParseInput<'a>) -> ParseResult<Out>,
[INFO] [stdout]     |        -------------------------------------- unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `and_then`
[INFO] [stdout]    --> src/main.rs:40:9
[INFO] [stdout]     |
[INFO] [stdout]  36 | fn and_then<'a, Out, Out1, F, P, P1>(parser: P, fun: F) -> impl Parser<'a, Out1>
[INFO] [stdout]     |    -------- required by a bound in this function
[INFO] [stdout] ...
[INFO] [stdout]  40 |     P1: Parser<'a, Out1>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ required by this bound in `and_then`
[INFO] [stdout]     = note: this error originates in the macro `parse_do` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0525`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rwh-ch10-rust` (bin "rwh-ch10-rust" test) due to 5 previous errors; 1 warning emitted
[INFO] running `Command { std: "docker" "inspect" "062eeff1d9e86dead32a5b170e1c670bf4f203a2418acae024c445d51fa9973e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "062eeff1d9e86dead32a5b170e1c670bf4f203a2418acae024c445d51fa9973e", kill_on_drop: false }`
[INFO] [stdout] 062eeff1d9e86dead32a5b170e1c670bf4f203a2418acae024c445d51fa9973e
