[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#46424fb5054f211ec836c5c03159f92e46bb35ac for pr-139042
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBietola%2Frwh-ch10-rust" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/Bietola/rwh-ch10-rust on toolchain 46424fb5054f211ec836c5c03159f92e46bb35ac
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[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-5-tc1/source/Cargo.toml
[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" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded indoc v0.3.6
[INFO] [stderr]   Downloaded unindent v0.1.6
[INFO] [stderr]   Downloaded indoc-impl v0.3.6
[INFO] [stderr]   Downloaded syn v1.0.35
[INFO] [stderr]   Downloaded newtype v0.2.1
[INFO] [stderr]   Downloaded derive-newtype v0.2.3
[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:4b26683ee3c49f365255c425c23003cbf4366de097804722c29c5bbbee3624d2" "/opt/rustwide/cargo-home/bin/cargo" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] dd8fa6bf4870aa4809cdb2534eab990cb42fb8ead8c5e123867349894c83dde4
[INFO] running `Command { std: "docker" "start" "-a" "dd8fa6bf4870aa4809cdb2534eab990cb42fb8ead8c5e123867349894c83dde4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "dd8fa6bf4870aa4809cdb2534eab990cb42fb8ead8c5e123867349894c83dde4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dd8fa6bf4870aa4809cdb2534eab990cb42fb8ead8c5e123867349894c83dde4", kill_on_drop: false }`
[INFO] [stdout] dd8fa6bf4870aa4809cdb2534eab990cb42fb8ead8c5e123867349894c83dde4
[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:4b26683ee3c49f365255c425c23003cbf4366de097804722c29c5bbbee3624d2" "/opt/rustwide/cargo-home/bin/cargo" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] eb06bdbe9198dff5c2c5f26383176c9504db8bb971b5893adc9e179174f1b45f
[INFO] running `Command { std: "docker" "start" "-a" "eb06bdbe9198dff5c2c5f26383176c9504db8bb971b5893adc9e179174f1b45f", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.19
[INFO] [stderr]    Compiling proc-macro2 v0.4.30
[INFO] [stderr]    Compiling unicode-xid v0.2.1
[INFO] [stderr]    Compiling syn v1.0.35
[INFO] [stderr]    Compiling byteorder v1.3.4
[INFO] [stderr]    Compiling syn v0.15.44
[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 quote v0.6.13
[INFO] [stderr]    Compiling derive-newtype v0.2.3
[INFO] [stderr]    Compiling indoc-impl v0.3.6
[INFO] [stderr]     Checking newtype v0.2.1
[INFO] [stderr]     Checking indoc v0.3.6
[INFO] [stderr]     Checking rwh-ch10-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: elided lifetime has a name
[INFO] [stdout]   --> src/main.rs:21:41
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<'a, Out, F> Parser<'a, Out> for F
[INFO] [stdout]    |      -- lifetime `'a` declared here
[INFO] [stdout] 20 | where
[INFO] [stdout] 21 |     F: Fn(ParseInput<'a>) -> ParseResult<Out>,
[INFO] [stdout]    |                                         ^ this elided lifetime gets resolved as `'a`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(elided_named_lifetimes)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: elided lifetime has a name
[INFO] [stdout]   --> src/main.rs:21:41
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<'a, Out, F> Parser<'a, Out> for F
[INFO] [stdout]    |      -- lifetime `'a` declared here
[INFO] [stdout] 20 | where
[INFO] [stdout] 21 |     F: Fn(ParseInput<'a>) -> ParseResult<Out>,
[INFO] [stdout]    |                                         ^ this elided lifetime gets resolved as `'a`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(elided_named_lifetimes)]` 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] 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] [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] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `rwh-ch10-rust` (bin "rwh-ch10-rust") due to 5 previous errors; 1 warning emitted
[INFO] running `Command { std: "docker" "inspect" "eb06bdbe9198dff5c2c5f26383176c9504db8bb971b5893adc9e179174f1b45f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "eb06bdbe9198dff5c2c5f26383176c9504db8bb971b5893adc9e179174f1b45f", kill_on_drop: false }`
[INFO] [stdout] eb06bdbe9198dff5c2c5f26383176c9504db8bb971b5893adc9e179174f1b45f
