[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 master#af4a5a13a15fa0c60e06321077ef452f769b42fd for pr-122960-3 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frkanati%2Flark" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/rkanati/lark on toolchain af4a5a13a15fa0c60e06321077ef452f769b42fd [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+af4a5a13a15fa0c60e06321077ef452f769b42fd" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [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-1-tc1/source/Cargo.toml [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" "+af4a5a13a15fa0c60e06321077ef452f769b42fd" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+af4a5a13a15fa0c60e06321077ef452f769b42fd" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f2e3d1584a05d1fd30f790b0cbace173dcfe66e6fbbe68d7d0536ac0cd5a4aa1 [INFO] running `Command { std: "docker" "start" "-a" "f2e3d1584a05d1fd30f790b0cbace173dcfe66e6fbbe68d7d0536ac0cd5a4aa1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f2e3d1584a05d1fd30f790b0cbace173dcfe66e6fbbe68d7d0536ac0cd5a4aa1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f2e3d1584a05d1fd30f790b0cbace173dcfe66e6fbbe68d7d0536ac0cd5a4aa1", kill_on_drop: false }` [INFO] [stdout] f2e3d1584a05d1fd30f790b0cbace173dcfe66e6fbbe68d7d0536ac0cd5a4aa1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+af4a5a13a15fa0c60e06321077ef452f769b42fd" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 9e759b53bf68aaebca722fd440c595a497e824f62ab119525928a9404cffcf9b [INFO] running `Command { std: "docker" "start" "-a" "9e759b53bf68aaebca722fd440c595a497e824f62ab119525928a9404cffcf9b", 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: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: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: the item `Token` is imported redundantly [INFO] [stdout] --> src/syn.rs:80:21 [INFO] [stdout] | [INFO] [stdout] 77 | super::*, [INFO] [stdout] | -------- the item `Token` is already imported here [INFO] [stdout] ... [INFO] [stdout] 80 | lexer::{Token, TokenKind} [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`, `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] [INFO] [stdout] warning: the item `Token` is imported redundantly [INFO] [stdout] --> src/syn.rs:80:21 [INFO] [stdout] | [INFO] [stdout] 77 | super::*, [INFO] [stdout] | -------- the item `Token` is already imported here [INFO] [stdout] ... [INFO] [stdout] 80 | lexer::{Token, TokenKind} [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`, `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] [INFO] [stdout] warning: unnecessary associated type bound for not object safe 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. Thus, while the associated type can be specified, it cannot be used in any way, because trait objects are not `Sized`. [INFO] [stdout] = note: `#[warn(unused_associated_type_bounds)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary associated type bound for not object safe 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. Thus, while the associated type can be specified, it cannot be used in any way, because trait objects are not `Sized`. [INFO] [stdout] = note: `#[warn(unused_associated_type_bounds)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary associated type bound for not object safe 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. Thus, while the associated type can be specified, it cannot be used in any way, because trait objects are not `Sized`. [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary associated type bound for not object safe 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. Thus, while the associated type can be specified, it cannot be used in any way, because trait objects are not `Sized`. [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `parse::Parser` cannot be made into an object [INFO] [stdout] --> src/parse/combinators/mod.rs:121:38 [INFO] [stdout] | [INFO] [stdout] 121 | alternatives: &'static [&'static dyn Parser], [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `parse::Parser` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; 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 cannot be made into an object... [INFO] [stdout] = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `parse::Parser` for this new enum and using it instead: [INFO] [stdout] parse::TrivialParser [INFO] [stdout] parse::combinators::FirstOf [INFO] [stdout] parse::combinators::List [INFO] [stdout] parse::combinators::Map [INFO] [stdout] parse::combinators::OrElse [INFO] [stdout] parse::combinators::Within [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `parse::Parser` cannot be made into an object [INFO] [stdout] --> src/parse/combinators/mod.rs:121:38 [INFO] [stdout] | [INFO] [stdout] 121 | alternatives: &'static [&'static dyn Parser], [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `parse::Parser` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; 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 cannot be made into an object... [INFO] [stdout] = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `parse::Parser` for this new enum and using it instead: [INFO] [stdout] parse::TrivialParser [INFO] [stdout] parse::combinators::FirstOf [INFO] [stdout] parse::combinators::List [INFO] [stdout] parse::combinators::Map [INFO] [stdout] parse::combinators::OrElse [INFO] [stdout] parse::combinators::Within [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `parse::Parser` cannot be made into an object [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` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; 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 cannot be made into an object... [INFO] [stdout] = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `parse::Parser` for this new enum and using it instead: [INFO] [stdout] parse::TrivialParser [INFO] [stdout] parse::combinators::FirstOf [INFO] [stdout] parse::combinators::List [INFO] [stdout] parse::combinators::Map [INFO] [stdout] parse::combinators::OrElse [INFO] [stdout] parse::combinators::Within [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `parse::Parser` cannot be made into an object [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` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; 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 cannot be made into an object... [INFO] [stdout] = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `parse::Parser` for this new enum and using it instead: [INFO] [stdout] parse::TrivialParser [INFO] [stdout] parse::combinators::FirstOf [INFO] [stdout] parse::combinators::List [INFO] [stdout] parse::combinators::Map [INFO] [stdout] parse::combinators::OrElse [INFO] [stdout] parse::combinators::Within [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `parse::Parser` cannot be made into an object [INFO] [stdout] --> src/parse/combinators/mod.rs:133:28 [INFO] [stdout] | [INFO] [stdout] 133 | for alternative in self.alternatives.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ `parse::Parser` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; 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 cannot be made into an object... [INFO] [stdout] = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `parse::Parser` for this new enum and using it instead: [INFO] [stdout] parse::TrivialParser [INFO] [stdout] parse::combinators::FirstOf [INFO] [stdout] parse::combinators::List [INFO] [stdout] parse::combinators::Map [INFO] [stdout] parse::combinators::OrElse [INFO] [stdout] parse::combinators::Within [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `parse::Parser` cannot be made into an object [INFO] [stdout] --> src/parse/combinators/mod.rs:133:28 [INFO] [stdout] | [INFO] [stdout] 133 | for alternative in self.alternatives.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ `parse::Parser` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; 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 cannot be made into an object... [INFO] [stdout] = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `parse::Parser` for this new enum and using it instead: [INFO] [stdout] parse::TrivialParser [INFO] [stdout] parse::combinators::FirstOf [INFO] [stdout] parse::combinators::List [INFO] [stdout] parse::combinators::Map [INFO] [stdout] parse::combinators::OrElse [INFO] [stdout] parse::combinators::Within [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `parse` method cannot be invoked on a trait object [INFO] [stdout] --> src/parse/combinators/mod.rs:134:42 [INFO] [stdout] | [INFO] [stdout] 134 | if let Ok(tup) = alternative.parse(tokens) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] ::: src/parse/mod.rs:11:20 [INFO] [stdout] | [INFO] [stdout] 11 | pub trait Parser : Sized { [INFO] [stdout] | ----- this has a `Sized` requirement [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `parse` method cannot be invoked on a trait object [INFO] [stdout] --> src/parse/combinators/mod.rs:134:42 [INFO] [stdout] | [INFO] [stdout] 134 | if let Ok(tup) = alternative.parse(tokens) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] ::: src/parse/mod.rs:11:20 [INFO] [stdout] | [INFO] [stdout] 11 | pub trait Parser : Sized { [INFO] [stdout] | ----- this has a `Sized` requirement [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 `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 `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 `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 `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 `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 `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 `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[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 `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[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 `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 `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 `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::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 `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::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 `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 `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[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 function `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 function ^^^^ this parameter takes ownership of the value [INFO] [stdout] help: consider restricting type parameter `Iter` [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] 96 | fn parse (&self, tokens: Iter) -> ParseResult { [INFO] [stdout] | ------ help: consider making this binding mutable: `mut tokens` [INFO] [stdout] ... [INFO] [stdout] 106 | tokens = match self.separator.parse(rest) { [INFO] [stdout] | ^^^^^^ cannot assign to immutable argument [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 function `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 function ^^^^ this parameter takes ownership of the 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` [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 function `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] | ----- ^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [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` [INFO] [stdout] | [INFO] [stdout] 58 | fn parse (mut tokens: Iter) -> ParseResult { [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 function `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 function ^^^^ this parameter takes ownership of the value [INFO] [stdout] help: consider restricting type parameter `Iter` [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] 96 | fn parse (&self, tokens: Iter) -> ParseResult { [INFO] [stdout] | ------ help: consider making this binding mutable: `mut tokens` [INFO] [stdout] ... [INFO] [stdout] 106 | tokens = match self.separator.parse(rest) { [INFO] [stdout] | ^^^^^^ cannot assign to immutable argument [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 function `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 function ^^^^ this parameter takes ownership of the 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` [INFO] [stdout] | [INFO] [stdout] 96 | fn parse (&self, tokens: Iter) -> ParseResult { [INFO] [stdout] | ++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 19 previous errors; 5 warnings emitted [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] 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 function `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] | ----- ^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [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` [INFO] [stdout] | [INFO] [stdout] 58 | fn parse (mut tokens: Iter) -> ParseResult { [INFO] [stdout] | ++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `lark` (bin "lark") due to 20 previous errors; 5 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error: aborting due to 19 previous errors; 5 warnings emitted [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" test) due to 20 previous errors; 5 warnings emitted [INFO] running `Command { std: "docker" "inspect" "9e759b53bf68aaebca722fd440c595a497e824f62ab119525928a9404cffcf9b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9e759b53bf68aaebca722fd440c595a497e824f62ab119525928a9404cffcf9b", kill_on_drop: false }` [INFO] [stdout] 9e759b53bf68aaebca722fd440c595a497e824f62ab119525928a9404cffcf9b [INFO] checking rkanati/lark against try#36dbcaee1a55543dfc181be52a69d99ff46ff62f for pr-122960-3 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frkanati%2Flark" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/rkanati/lark on toolchain 36dbcaee1a55543dfc181be52a69d99ff46ff62f [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+36dbcaee1a55543dfc181be52a69d99ff46ff62f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [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-1-tc2/source/Cargo.toml [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" "+36dbcaee1a55543dfc181be52a69d99ff46ff62f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+36dbcaee1a55543dfc181be52a69d99ff46ff62f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] dc734280eb70a4c15097b46846ee0a8e9c5c1f8fdad8e7f89a4ee9060bb6067c [INFO] running `Command { std: "docker" "start" "-a" "dc734280eb70a4c15097b46846ee0a8e9c5c1f8fdad8e7f89a4ee9060bb6067c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "dc734280eb70a4c15097b46846ee0a8e9c5c1f8fdad8e7f89a4ee9060bb6067c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "dc734280eb70a4c15097b46846ee0a8e9c5c1f8fdad8e7f89a4ee9060bb6067c", kill_on_drop: false }` [INFO] [stdout] dc734280eb70a4c15097b46846ee0a8e9c5c1f8fdad8e7f89a4ee9060bb6067c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+36dbcaee1a55543dfc181be52a69d99ff46ff62f" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e26632b2adb1e7833c8a5aeecda6007a35fc6c4922083f1b96a60b010a93d71c [INFO] running `Command { std: "docker" "start" "-a" "e26632b2adb1e7833c8a5aeecda6007a35fc6c4922083f1b96a60b010a93d71c", kill_on_drop: false }` [INFO] [stderr] Copying to /tmp/fixit [INFO] [stderr] skipping non-2021 edition `2018` [INFO] running `Command { std: "docker" "inspect" "e26632b2adb1e7833c8a5aeecda6007a35fc6c4922083f1b96a60b010a93d71c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e26632b2adb1e7833c8a5aeecda6007a35fc6c4922083f1b96a60b010a93d71c", kill_on_drop: false }` [INFO] [stdout] e26632b2adb1e7833c8a5aeecda6007a35fc6c4922083f1b96a60b010a93d71c