[INFO] cloning repository https://github.com/rkanati/lark
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/rkanati/lark" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frkanati%2Flark", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frkanati%2Flark'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 22a69d8707bb137a447907895b3330dd4b509a1b
[INFO] testing rkanati/lark against 1.90.0 for beta-1.91-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frkanati%2Flark" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/rkanati/lark
[INFO] finished tweaking git repo https://github.com/rkanati/lark
[INFO] tweaked toml for git repo https://github.com/rkanati/lark written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/rkanati/lark on toolchain 1.90.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/rkanati/lark 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" "+1.90.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5b2d27dc270c9141b55ddeb2e8f308f6d64f231bbfc58ba85ab4e02525b1b742
[INFO] running `Command { std: "docker" "start" "-a" "5b2d27dc270c9141b55ddeb2e8f308f6d64f231bbfc58ba85ab4e02525b1b742", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5b2d27dc270c9141b55ddeb2e8f308f6d64f231bbfc58ba85ab4e02525b1b742", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5b2d27dc270c9141b55ddeb2e8f308f6d64f231bbfc58ba85ab4e02525b1b742", kill_on_drop: false }`
[INFO] [stdout] 5b2d27dc270c9141b55ddeb2e8f308f6d64f231bbfc58ba85ab4e02525b1b742
[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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+1.90.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9828158d1e2f1a6daaa4f0d12ebd87abb67fc050573e43e1f4c5bce7f15a9845
[INFO] running `Command { std: "docker" "start" "-a" "9828158d1e2f1a6daaa4f0d12ebd87abb67fc050573e43e1f4c5bce7f15a9845", kill_on_drop: false }`
[INFO] [stderr]    Compiling lark v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `TK`
[INFO] [stdout]    --> src/syn.rs:101:40
[INFO] [stdout]     |
[INFO] [stdout] 101 |             let tokens = tokens.expect(TK::Ident, "let")?;
[INFO] [stdout]     |                                        ^^ use of undeclared type `TK`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum through its public re-export
[INFO] [stdout]     |
[INFO] [stdout]  76 +     use crate::TK;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `TK`
[INFO] [stdout]    --> src/syn.rs:103:40
[INFO] [stdout]     |
[INFO] [stdout] 103 |             let tokens = tokens.expect(TK::Punct, "=")?;
[INFO] [stdout]     |                                        ^^ use of undeclared type `TK`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum through its public re-export
[INFO] [stdout]     |
[INFO] [stdout]  76 +     use crate::TK;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TokenKind as TK` and `Token`
[INFO] [stdout]  --> src/main.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 |         lexer::{Token, TokenKind as TK, lex},
[INFO] [stdout]   |                 ^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary associated type bound for dyn-incompatible associated type
[INFO] [stdout]    --> src/parse/combinators/mod.rs:121:49
[INFO] [stdout]     |
[INFO] [stdout] 121 |     alternatives: &'static [&'static dyn Parser<Output = Output>],
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^ help: remove this bound
[INFO] [stdout]     |
[INFO] [stdout]     = note: this associated type has a `where Self: Sized` bound, and while the associated type can be specified, it cannot be used because trait objects are never `Sized`
[INFO] [stdout]     = note: `#[warn(unused_associated_type_bounds)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary associated type bound for dyn-incompatible associated type
[INFO] [stdout]    --> src/parse/combinators/mod.rs:125:60
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub fn new(alternatives: &'static [&'static dyn Parser<Output = O>]) -> FirstOf<O> {
[INFO] [stdout]     |                                                            ^^^^^^^^^^ help: remove this bound
[INFO] [stdout]     |
[INFO] [stdout]     = note: this associated type has a `where Self: Sized` bound, and while the associated type can be specified, it cannot be used because trait objects are never `Sized`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `parse::Parser` is not dyn compatible
[INFO] [stdout]    --> src/parse/combinators/mod.rs:121:38
[INFO] [stdout]     |
[INFO] [stdout] 121 |     alternatives: &'static [&'static dyn Parser<Output = Output>],
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `parse::Parser` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/parse/mod.rs:11:20
[INFO] [stdout]     |
[INFO] [stdout]  11 | pub trait Parser : Sized {
[INFO] [stdout]     |           ------   ^^^^^ ...because it requires `Self: Sized`
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this trait is not dyn compatible...
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `parse::Parser` is not dyn compatible
[INFO] [stdout]    --> src/parse/combinators/mod.rs:125:49
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub fn new(alternatives: &'static [&'static dyn Parser<Output = O>]) -> FirstOf<O> {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^ `parse::Parser` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/parse/mod.rs:11:20
[INFO] [stdout]     |
[INFO] [stdout]  11 | pub trait Parser : Sized {
[INFO] [stdout]     |           ------   ^^^^^ ...because it requires `Self: Sized`
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this trait is not dyn compatible...
[INFO] [stdout] help: you might have meant to use `Self` to refer to the implementing type
[INFO] [stdout]     |
[INFO] [stdout] 125 -     pub fn new(alternatives: &'static [&'static dyn Parser<Output = O>]) -> FirstOf<O> {
[INFO] [stdout] 125 +     pub fn new(alternatives: &'static [&'static Self]) -> FirstOf<O> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `parse::Parser` is not dyn compatible
[INFO] [stdout]    --> src/parse/combinators/mod.rs:126:19
[INFO] [stdout]     |
[INFO] [stdout] 126 |         FirstOf { alternatives }
[INFO] [stdout]     |                   ^^^^^^^^^^^^ `parse::Parser` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/parse/mod.rs:11:20
[INFO] [stdout]     |
[INFO] [stdout]  11 | pub trait Parser : Sized {
[INFO] [stdout]     |           ------   ^^^^^ ...because it requires `Self: Sized`
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this trait is not dyn compatible...
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `parse::Parser` is not dyn compatible
[INFO] [stdout]    --> src/parse/combinators/mod.rs:133:28
[INFO] [stdout]     |
[INFO] [stdout] 133 |         for alternative in self.alternatives.iter() {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^ `parse::Parser` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/parse/mod.rs:11:20
[INFO] [stdout]     |
[INFO] [stdout]  11 | pub trait Parser : Sized {
[INFO] [stdout]     |           ------   ^^^^^ ...because it requires `Self: Sized`
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this trait is not dyn compatible...
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `expect` found for type parameter `Iter` in the current scope
[INFO] [stdout]    --> src/syn.rs:101:33
[INFO] [stdout]     |
[INFO] [stdout] 100 |         fn parse<Iter> (tokens: Iter) -> ParseResult<Iter, Self> {
[INFO] [stdout]     |                  ---- method `expect` not found for this type parameter
[INFO] [stdout] 101 |             let tokens = tokens.expect(TK::Ident, "let")?;
[INFO] [stdout]     |                                 ^^^^^^ method cannot be called on `Iter` due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the type parameter is bounded by the trait
[INFO] [stdout] help: the following trait defines an item `expect`, perhaps you need to restrict type parameter `Iter` with it:
[INFO] [stdout]     |
[INFO] [stdout] 100 |         fn parse<Iter: TokenIteratorExt</* 'a */>> (tokens: Iter) -> ParseResult<Iter, Self> {
[INFO] [stdout]     |                      ++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `parse` found for struct `syn::Ident` in the current scope
[INFO] [stdout]    --> src/syn.rs:102:41
[INFO] [stdout]     |
[INFO] [stdout]  41 | pub struct Ident<'a> (Token<'a>);
[INFO] [stdout]     | -------------------- function or associated item `parse` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 102 |             let (name, tokens) = Ident::parse(tokens)?;
[INFO] [stdout]     |                                         ^^^^^ function or associated item not found in `syn::Ident<'_>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following traits define an item `parse`, perhaps you need to implement one of them:
[INFO] [stdout]             candidate #1: `parse::Parse`
[INFO] [stdout]             candidate #2: `parse::Parser`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `parse` found for enum `syn::Expr` in the current scope
[INFO] [stdout]    --> src/syn.rs:104:41
[INFO] [stdout]     |
[INFO] [stdout]  25 | pub enum Expr<'a> {
[INFO] [stdout]     | ----------------- variant or associated item `parse` not found for this enum
[INFO] [stdout] ...
[INFO] [stdout] 104 |             let (value, tokens) = Expr::parse(tokens)?;
[INFO] [stdout]     |                                         ^^^^^ variant or associated item not found in `syn::Expr<'_>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following traits define an item `parse`, perhaps you need to implement one of them:
[INFO] [stdout]             candidate #1: `parse::Parse`
[INFO] [stdout]             candidate #2: `parse::Parser`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `parse` found for struct `syn::Ident` in the current scope
[INFO] [stdout]    --> src/syn.rs:111:41
[INFO] [stdout]     |
[INFO] [stdout]  41 | pub struct Ident<'a> (Token<'a>);
[INFO] [stdout]     | -------------------- function or associated item `parse` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 111 |             let (name, tokens) = Ident::parse(tokens)?;
[INFO] [stdout]     |                                         ^^^^^ function or associated item not found in `syn::Ident<'_>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following traits define an item `parse`, perhaps you need to implement one of them:
[INFO] [stdout]             candidate #1: `parse::Parse`
[INFO] [stdout]             candidate #2: `parse::Parser`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `parser` found for struct `syn::Argument` in the current scope
[INFO] [stdout]    --> src/syn.rs:112:49
[INFO] [stdout]     |
[INFO] [stdout]  43 | pub struct Argument<'a> (Token<'a> );
[INFO] [stdout]     | ----------------------- function or associated item `parser` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 112 |             let (arguments, tokens) = Argument::parser()
[INFO] [stdout]     |                                                 ^^^^^^ function or associated item not found in `syn::Argument<'_>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `parse::Parse` defines an item `parser`, perhaps you need to implement it
[INFO] [stdout]    --> src/parse/mod.rs:41:1
[INFO] [stdout]     |
[INFO] [stdout]  41 | pub trait Parse : Sized {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `punct` in this scope
[INFO] [stdout]    --> src/syn.rs:113:23
[INFO] [stdout]     |
[INFO] [stdout] 113 |                 .list(punct(','))
[INFO] [stdout]     |                       ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `parse` found for struct `syn::Block` in the current scope
[INFO] [stdout]    --> src/syn.rs:115:41
[INFO] [stdout]     |
[INFO] [stdout]  39 | pub struct Block<'a> (Vec<Statement<'a>>);
[INFO] [stdout]     | -------------------- function or associated item `parse` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 115 |             let (body, tokens) = Block::parse(tokens)?;
[INFO] [stdout]     |                                         ^^^^^ function or associated item not found in `syn::Block<'_>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following traits define an item `parse`, perhaps you need to implement one of them:
[INFO] [stdout]             candidate #1: `parse::Parse`
[INFO] [stdout]             candidate #2: `parse::Parser`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `parse` found for struct `syn::File` in the current scope
[INFO] [stdout]   --> src/main.rs:16:26
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let syn = syn::File::parse(tokens.iter().copied()).unwrap();
[INFO] [stdout]    |                          ^^^^^ function or associated item not found in `syn::File<'_>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/syn.rs:67:1
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct File<'a> (Vec<TopLevel<'a>>);
[INFO] [stdout]    | ------------------- function or associated item `parse` not found for this struct
[INFO] [stdout]    |
[INFO] [stdout] note: if you're trying to build a new `syn::File<'_>`, consider using `syn::File::<'a>::new` which returns `syn::File<'_>`
[INFO] [stdout]   --> src/syn.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub fn new(toplevels: Vec<TopLevel>) -> File {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: there is an associated function `parser` with a similar name
[INFO] [stdout]   --> src/parse/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn parser() -> TrivialParser<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: trait `Parse` which provides `parse` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  2 + use crate::parse::Parse;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]   --> src/lexer/lexing.rs:52:25
[INFO] [stdout]    |
[INFO] [stdout] 52 |         while let Some((head, tail)) = self.get().filter(|(head, _)| pred(*head)) {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.func` which is behind a shared reference
[INFO] [stdout]   --> src/parse/combinators/mod.rs:22:37
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn parse<Iter> (&self, tokens: Iter) -> ParseResult<Iter, Self::Output> {
[INFO] [stdout]    |                     ----- move occurs because `self.func` has type `F`, which does not implement the `Copy` trait
[INFO] [stdout] 21 |         self.inner.parse(tokens)
[INFO] [stdout] 22 |             .map(|(value, tokens)| ((self.func)(value), tokens))
[INFO] [stdout]    |                                     ^^^^^^^^^^^-------
[INFO] [stdout]    |                                     |
[INFO] [stdout]    |                                     `self.func` moved due to this call
[INFO] [stdout]    |                                     `self.func` is moved here
[INFO] [stdout]    |
[INFO] [stdout] note: this value implements `FnOnce`, which causes it to be moved when called
[INFO] [stdout]   --> src/parse/combinators/mod.rs:22:37
[INFO] [stdout]    |
[INFO] [stdout] 22 |             .map(|(value, tokens)| ((self.func)(value), tokens))
[INFO] [stdout]    |                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `tokens`
[INFO] [stdout]   --> src/parse/combinators/mod.rs:46:22
[INFO] [stdout]    |
[INFO] [stdout] 44 |     fn parse<Iter> (&self, tokens: Iter) -> ParseResult<Iter, Self::Output> {
[INFO] [stdout]    |                            ------ move occurs because `tokens` has type `Iter`, which does not implement the `Copy` trait
[INFO] [stdout] 45 |         self.left.parse(tokens)
[INFO] [stdout]    |                         ------ value moved here
[INFO] [stdout] 46 |             .or_else(|_| self.right.parse(tokens))
[INFO] [stdout]    |                      ^^^                  ------ use occurs due to use in closure
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      value used here after move
[INFO] [stdout]    |
[INFO] [stdout] note: consider changing this parameter type in method `parse` to borrow instead if owning the value isn't necessary
[INFO] [stdout]   --> src/parse/mod.rs:13:36
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn parse<Iter> (&self, tokens: Iter) -> ParseResult<Iter, Self::Output>;
[INFO] [stdout]    |        ----- in this method        ^^^^ this parameter takes ownership of the value
[INFO] [stdout] help: if `Iter` implemented `Clone`, you could clone the value
[INFO] [stdout]   --> src/parse/combinators/mod.rs:44:14
[INFO] [stdout]    |
[INFO] [stdout] 44 |     fn parse<Iter> (&self, tokens: Iter) -> ParseResult<Iter, Self::Output> {
[INFO] [stdout]    |              ^^^^ consider constraining this type parameter with `Clone`
[INFO] [stdout] 45 |         self.left.parse(tokens)
[INFO] [stdout]    |                         ------ you could clone this value
[INFO] [stdout] help: consider restricting type parameter `Iter` with trait `Copy`
[INFO] [stdout]    |
[INFO] [stdout] 44 |     fn parse<Iter: Copy> (&self, tokens: Iter) -> ParseResult<Iter, Self::Output> {
[INFO] [stdout]    |                  ++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0384]: cannot assign to immutable argument `tokens`
[INFO] [stdout]    --> src/parse/combinators/mod.rs:106:13
[INFO] [stdout]     |
[INFO] [stdout] 106 |             tokens = match self.separator.parse(rest) {
[INFO] [stdout]     |             ^^^^^^ cannot assign to immutable argument
[INFO] [stdout]     |
[INFO] [stdout] help: consider making this binding mutable
[INFO] [stdout]     |
[INFO] [stdout]  96 |     fn parse<Iter> (&self, mut tokens: Iter) -> ParseResult<Iter, Self::Output> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `tokens`
[INFO] [stdout]    --> src/parse/combinators/mod.rs:112:23
[INFO] [stdout]     |
[INFO] [stdout]  96 |     fn parse<Iter> (&self, tokens: Iter) -> ParseResult<Iter, Self::Output> {
[INFO] [stdout]     |                            ------ move occurs because `tokens` has type `Iter`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout]  99 |         loop {
[INFO] [stdout]     |         ---- inside of this loop
[INFO] [stdout] 100 |             let (element, rest) = match self.element.parse(tokens) {
[INFO] [stdout]     |                                                            ------ value moved here
[INFO] [stdout] ...
[INFO] [stdout] 112 |         Ok((elements, tokens))
[INFO] [stdout]     |                       ^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] note: consider changing this parameter type in method `parse` to borrow instead if owning the value isn't necessary
[INFO] [stdout]    --> src/parse/mod.rs:13:36
[INFO] [stdout]     |
[INFO] [stdout]  13 |     fn parse<Iter> (&self, tokens: Iter) -> ParseResult<Iter, Self::Output>;
[INFO] [stdout]     |        ----- in this method        ^^^^ this parameter takes ownership of the value
[INFO] [stdout] help: if `Iter` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/parse/combinators/mod.rs:96:14
[INFO] [stdout]     |
[INFO] [stdout]  96 |     fn parse<Iter> (&self, tokens: Iter) -> ParseResult<Iter, Self::Output> {
[INFO] [stdout]     |              ^^^^ consider constraining this type parameter with `Clone`
[INFO] [stdout] ...
[INFO] [stdout] 100 |             let (element, rest) = match self.element.parse(tokens) {
[INFO] [stdout]     |                                                            ------ you could clone this value
[INFO] [stdout] help: consider moving the expression out of the loop so it is only moved once
[INFO] [stdout]     |
[INFO] [stdout]  99 ~         let mut value = self.element.parse(tokens);
[INFO] [stdout] 100 ~         loop {
[INFO] [stdout] 101 ~             let (element, rest) = match value {
[INFO] [stdout]     |
[INFO] [stdout] help: consider restricting type parameter `Iter` with trait `Copy`
[INFO] [stdout]     |
[INFO] [stdout]  96 |     fn parse<Iter: Copy> (&self, tokens: Iter) -> ParseResult<Iter, Self::Output> {
[INFO] [stdout]     |                  ++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `tokens`
[INFO] [stdout]   --> src/parse/mod.rs:69:18
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn parse<Iter> (mut tokens: Iter) -> ParseResult<Iter, Self> {
[INFO] [stdout]    |                     ---------- move occurs because `tokens` has type `Iter`, which does not implement the `Copy` trait
[INFO] [stdout] 59 |         let mut vec = Vec::new();
[INFO] [stdout] 60 |         loop {
[INFO] [stdout]    |         ---- inside of this loop
[INFO] [stdout] 61 |             match T::parse(tokens) {
[INFO] [stdout]    |                            ------ value moved here
[INFO] [stdout] ...
[INFO] [stdout] 69 |         Ok((vec, tokens))
[INFO] [stdout]    |                  ^^^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] note: consider changing this parameter type in method `parse` to borrow instead if owning the value isn't necessary
[INFO] [stdout]   --> src/parse/mod.rs:42:29
[INFO] [stdout]    |
[INFO] [stdout] 42 |     fn parse<Iter> (tokens: Iter) -> ParseResult<Iter, Self>;
[INFO] [stdout]    |        ----- in this method ^^^^ this parameter takes ownership of the value
[INFO] [stdout] help: if `Iter` implemented `Clone`, you could clone the value
[INFO] [stdout]   --> src/parse/mod.rs:58:14
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn parse<Iter> (mut tokens: Iter) -> ParseResult<Iter, Self> {
[INFO] [stdout]    |              ^^^^ consider constraining this type parameter with `Clone`
[INFO] [stdout] ...
[INFO] [stdout] 61 |             match T::parse(tokens) {
[INFO] [stdout]    |                            ------ you could clone this value
[INFO] [stdout] help: consider moving the expression out of the loop so it is only moved once
[INFO] [stdout]    |
[INFO] [stdout] 60 ~         let mut value = T::parse(tokens);
[INFO] [stdout] 61 ~         loop {
[INFO] [stdout] 62 ~             match value {
[INFO] [stdout]    |
[INFO] [stdout] help: consider restricting type parameter `Iter` with trait `Copy`
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn parse<Iter: Copy> (mut tokens: Iter) -> ParseResult<Iter, Self> {
[INFO] [stdout]    |                  ++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0038, E0382, E0384, E0425, E0433, E0507, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `lark` (bin "lark") due to 19 previous errors; 4 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "9828158d1e2f1a6daaa4f0d12ebd87abb67fc050573e43e1f4c5bce7f15a9845", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9828158d1e2f1a6daaa4f0d12ebd87abb67fc050573e43e1f4c5bce7f15a9845", kill_on_drop: false }`
[INFO] [stdout] 9828158d1e2f1a6daaa4f0d12ebd87abb67fc050573e43e1f4c5bce7f15a9845
