[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] checking rkanati/lark against try#8a0378607d6b34c242e3bfa75554871be641864b for pr-143028 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frkanati%2Flark" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/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-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/rkanati/lark on toolchain 8a0378607d6b34c242e3bfa75554871be641864b [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8a0378607d6b34c242e3bfa75554871be641864b" "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" "+8a0378607d6b34c242e3bfa75554871be641864b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [ERROR] error running command: no output for 300 seconds [INFO] checking rkanati/lark against try#8a0378607d6b34c242e3bfa75554871be641864b for pr-143028 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frkanati%2Flark" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/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-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/rkanati/lark on toolchain 8a0378607d6b34c242e3bfa75554871be641864b [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8a0378607d6b34c242e3bfa75554871be641864b" "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" "+8a0378607d6b34c242e3bfa75554871be641864b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8a0378607d6b34c242e3bfa75554871be641864b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 6d61116454db4e359552ff524c9a1d5620d152cfad25379cef35ac36f30ee48c [INFO] running `Command { std: "docker" "start" "-a" "6d61116454db4e359552ff524c9a1d5620d152cfad25379cef35ac36f30ee48c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6d61116454db4e359552ff524c9a1d5620d152cfad25379cef35ac36f30ee48c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6d61116454db4e359552ff524c9a1d5620d152cfad25379cef35ac36f30ee48c", kill_on_drop: false }` [INFO] [stdout] 6d61116454db4e359552ff524c9a1d5620d152cfad25379cef35ac36f30ee48c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8a0378607d6b34c242e3bfa75554871be641864b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 7a5707460e6b20276da98e14972b67599be2d35eeed53e11253bd2c119e2baf3 [INFO] running `Command { std: "docker" "start" "-a" "7a5707460e6b20276da98e14972b67599be2d35eeed53e11253bd2c119e2baf3", kill_on_drop: false }` [INFO] [stderr] Checking 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] 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: 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], [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:121:49 [INFO] [stdout] | [INFO] [stdout] 121 | alternatives: &'static [&'static dyn Parser], [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]) -> FirstOf { [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] 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]) -> FirstOf { [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], [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 [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:121:38 [INFO] [stdout] | [INFO] [stdout] 121 | alternatives: &'static [&'static dyn Parser], [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 [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]) -> FirstOf { [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 [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]) -> FirstOf { [INFO] [stdout] 125 + pub fn new(alternatives: &'static [&'static Self]) -> FirstOf { [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:125:49 [INFO] [stdout] | [INFO] [stdout] 125 | pub fn new(alternatives: &'static [&'static dyn Parser]) -> FirstOf { [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 [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]) -> FirstOf { [INFO] [stdout] 125 + pub fn new(alternatives: &'static [&'static Self]) -> FirstOf { [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 [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: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 [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 [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 [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 (tokens: Iter) -> ParseResult { [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> (tokens: Iter) -> ParseResult { [INFO] [stdout] | ++++++++++++++++++++++++++++ [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 (tokens: Iter) -> ParseResult { [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> (tokens: Iter) -> ParseResult { [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 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 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 `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 `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>); [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::Block` in the current scope [INFO] [stdout] --> src/syn.rs:115:41 [INFO] [stdout] | [INFO] [stdout] 39 | pub struct Block<'a> (Vec>); [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>); [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) -> 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 { [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] 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>); [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) -> 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 { [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] 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] 22 | .map(|(value, tokens)| ((self.func)(value), tokens)) [INFO] [stdout] | ^^^^^^^^^^^------- [INFO] [stdout] | | [INFO] [stdout] | `self.func` moved due to this call [INFO] [stdout] | move occurs because `self.func` has type `F`, which does not implement the `Copy` trait [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[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] 22 | .map(|(value, tokens)| ((self.func)(value), tokens)) [INFO] [stdout] | ^^^^^^^^^^^------- [INFO] [stdout] | | [INFO] [stdout] | `self.func` moved due to this call [INFO] [stdout] | move occurs because `self.func` has type `F`, which does not implement the `Copy` trait [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 (&self, tokens: Iter) -> ParseResult { [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 (&self, tokens: Iter) -> ParseResult; [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 (&self, tokens: Iter) -> ParseResult { [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 (&self, tokens: Iter) -> ParseResult { [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 (&self, tokens: Iter) -> ParseResult { [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 (&self, tokens: Iter) -> ParseResult; [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 (&self, tokens: Iter) -> ParseResult { [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 (&self, tokens: Iter) -> ParseResult { [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 (&self, mut tokens: Iter) -> ParseResult { [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 (&self, mut tokens: Iter) -> ParseResult { [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 (&self, tokens: Iter) -> ParseResult { [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 (&self, tokens: Iter) -> ParseResult; [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 (&self, tokens: Iter) -> ParseResult { [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 (&self, tokens: Iter) -> ParseResult { [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 (&self, tokens: Iter) -> ParseResult { [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 (&self, tokens: Iter) -> ParseResult; [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 (&self, tokens: Iter) -> ParseResult { [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 (&self, tokens: Iter) -> ParseResult { [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 (mut tokens: Iter) -> ParseResult { [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 (tokens: Iter) -> ParseResult; [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 (mut tokens: Iter) -> ParseResult { [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 (mut tokens: Iter) -> ParseResult { [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 (mut tokens: Iter) -> ParseResult { [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 (tokens: Iter) -> ParseResult; [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 (mut tokens: Iter) -> ParseResult { [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 (mut tokens: Iter) -> ParseResult { [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] [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" test) due to 19 previous errors; 4 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: could not compile `lark` (bin "lark") due to 19 previous errors; 4 warnings emitted [INFO] running `Command { std: "docker" "inspect" "7a5707460e6b20276da98e14972b67599be2d35eeed53e11253bd2c119e2baf3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7a5707460e6b20276da98e14972b67599be2d35eeed53e11253bd2c119e2baf3", kill_on_drop: false }` [INFO] [stdout] 7a5707460e6b20276da98e14972b67599be2d35eeed53e11253bd2c119e2baf3