[INFO] cloning repository https://github.com/TinkerBoard-Android/rockchip-android-external-rust-crates-pest
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/TinkerBoard-Android/rockchip-android-external-rust-crates-pest" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTinkerBoard-Android%2Frockchip-android-external-rust-crates-pest", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTinkerBoard-Android%2Frockchip-android-external-rust-crates-pest'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 704184965a31283325d1a4e246ab1c727c7e5874
[INFO] checking TinkerBoard-Android/rockchip-android-external-rust-crates-pest against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTinkerBoard-Android%2Frockchip-android-external-rust-crates-pest" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/TinkerBoard-Android/rockchip-android-external-rust-crates-pest
[INFO] finished tweaking git repo https://github.com/TinkerBoard-Android/rockchip-android-external-rust-crates-pest
[INFO] tweaked toml for git repo https://github.com/TinkerBoard-Android/rockchip-android-external-rust-crates-pest written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/TinkerBoard-Android/rockchip-android-external-rust-crates-pest on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/TinkerBoard-Android/rockchip-android-external-rust-crates-pest already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serde_json v1.0.92
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 42e2de599e3f33db8b224db060119dfc84fb0d0c82b594cf26b9e0de7d49f57a
[INFO] running `Command { std: "docker" "start" "-a" "42e2de599e3f33db8b224db060119dfc84fb0d0c82b594cf26b9e0de7d49f57a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "42e2de599e3f33db8b224db060119dfc84fb0d0c82b594cf26b9e0de7d49f57a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "42e2de599e3f33db8b224db060119dfc84fb0d0c82b594cf26b9e0de7d49f57a", kill_on_drop: false }`
[INFO] [stdout] 42e2de599e3f33db8b224db060119dfc84fb0d0c82b594cf26b9e0de7d49f57a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 971098274d45e8bccb1540b2c54131c8a4307208ff462fa7bde7e172f479a903
[INFO] running `Command { std: "docker" "start" "-a" "971098274d45e8bccb1540b2c54131c8a4307208ff462fa7bde7e172f479a903", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.51
[INFO] [stderr]    Compiling unicode-ident v1.0.6
[INFO] [stderr]    Compiling quote v1.0.23
[INFO] [stderr]    Compiling syn v1.0.107
[INFO] [stderr]    Compiling thiserror v1.0.38
[INFO] [stderr]     Checking ucd-trie v0.1.5
[INFO] [stderr]    Compiling thiserror-impl v1.0.38
[INFO] [stderr]     Checking pest v2.5.5 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:549:19
[INFO] [stdout]     |
[INFO] [stdout] 549 |         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/lib.rs:14:41
[INFO] [stdout]     |
[INFO] [stdout]  14 | #![warn(missing_docs, rust_2018_idioms, unused_qualifications)]
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 549 -         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout] 549 +         let pos = Position::new(input, 4).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:575:19
[INFO] [stdout]     |
[INFO] [stdout] 575 |         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 575 -         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout] 575 +         let pos = Position::new(input, 4).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:601:19
[INFO] [stdout]     |
[INFO] [stdout] 601 |         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 601 -         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout] 601 +         let pos = Position::new(input, 4).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:627:19
[INFO] [stdout]     |
[INFO] [stdout] 627 |         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 627 -         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout] 627 +         let pos = Position::new(input, 4).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:653:19
[INFO] [stdout]     |
[INFO] [stdout] 653 |         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 653 -         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout] 653 +         let pos = Position::new(input, 4).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:678:21
[INFO] [stdout]     |
[INFO] [stdout] 678 |         let start = position::Position::new(input, 4).unwrap();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 678 -         let start = position::Position::new(input, 4).unwrap();
[INFO] [stdout] 678 +         let start = Position::new(input, 4).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:679:19
[INFO] [stdout]     |
[INFO] [stdout] 679 |         let end = position::Position::new(input, 9).unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 679 -         let end = position::Position::new(input, 9).unwrap();
[INFO] [stdout] 679 +         let end = Position::new(input, 9).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:705:21
[INFO] [stdout]     |
[INFO] [stdout] 705 |         let start = position::Position::new(input, 1).unwrap();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 705 -         let start = position::Position::new(input, 1).unwrap();
[INFO] [stdout] 705 +         let start = Position::new(input, 1).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:706:19
[INFO] [stdout]     |
[INFO] [stdout] 706 |         let end = position::Position::new(input, 9).unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 706 -         let end = position::Position::new(input, 9).unwrap();
[INFO] [stdout] 706 +         let end = Position::new(input, 9).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:733:21
[INFO] [stdout]     |
[INFO] [stdout] 733 |         let start = position::Position::new(input, 5).unwrap();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 733 -         let start = position::Position::new(input, 5).unwrap();
[INFO] [stdout] 733 +         let start = Position::new(input, 5).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:734:19
[INFO] [stdout]     |
[INFO] [stdout] 734 |         let end = position::Position::new(input, 8).unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 734 -         let end = position::Position::new(input, 8).unwrap();
[INFO] [stdout] 734 +         let end = Position::new(input, 8).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:760:21
[INFO] [stdout]     |
[INFO] [stdout] 760 |         let start = position::Position::new(input, 0).unwrap();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 760 -         let start = position::Position::new(input, 0).unwrap();
[INFO] [stdout] 760 +         let start = Position::new(input, 0).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:761:19
[INFO] [stdout]     |
[INFO] [stdout] 761 |         let end = position::Position::new(input, 7).unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 761 -         let end = position::Position::new(input, 7).unwrap();
[INFO] [stdout] 761 +         let end = Position::new(input, 7).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:789:21
[INFO] [stdout]     |
[INFO] [stdout] 789 |         let start = position::Position::new(input, 0).unwrap();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 789 -         let start = position::Position::new(input, 0).unwrap();
[INFO] [stdout] 789 +         let start = Position::new(input, 0).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:790:19
[INFO] [stdout]     |
[INFO] [stdout] 790 |         let end = position::Position::new(input, 0).unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 790 -         let end = position::Position::new(input, 0).unwrap();
[INFO] [stdout] 790 +         let end = Position::new(input, 0).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:818:19
[INFO] [stdout]     |
[INFO] [stdout] 818 |         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 818 -         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout] 818 +         let pos = Position::new(input, 4).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:845:19
[INFO] [stdout]     |
[INFO] [stdout] 845 |         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 845 -         let pos = position::Position::new(input, 4).unwrap();
[INFO] [stdout] 845 +         let pos = Position::new(input, 4).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/error.rs:872:19
[INFO] [stdout]     |
[INFO] [stdout] 872 |         let pos = position::Position::new(input, 2).unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 872 -         let pos = position::Position::new(input, 2).unwrap();
[INFO] [stdout] 872 +         let pos = Position::new(input, 2).unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/iterators/pair.rs:181:18
[INFO] [stdout]     |
[INFO] [stdout] 181 |         unsafe { span::Span::new_unchecked(self.input, start, end) }
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 181 -         unsafe { span::Span::new_unchecked(self.input, start, end) }
[INFO] [stdout] 181 +         unsafe { Span::new_unchecked(self.input, start, end) }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/parser_state.rs:181:17
[INFO] [stdout]     |
[INFO] [stdout] 181 |                 position::Position::new(input, state.attempt_pos).unwrap(),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 181 -                 position::Position::new(input, state.attempt_pos).unwrap(),
[INFO] [stdout] 181 +                 Position::new(input, state.attempt_pos).unwrap(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/iterators/pair.rs:181:18
[INFO] [stdout]     |
[INFO] [stdout] 181 |         unsafe { span::Span::new_unchecked(self.input, start, end) }
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/lib.rs:14:41
[INFO] [stdout]     |
[INFO] [stdout]  14 | #![warn(missing_docs, rust_2018_idioms, unused_qualifications)]
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 181 -         unsafe { span::Span::new_unchecked(self.input, start, end) }
[INFO] [stdout] 181 +         unsafe { Span::new_unchecked(self.input, start, end) }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/parser_state.rs:181:17
[INFO] [stdout]     |
[INFO] [stdout] 181 |                 position::Position::new(input, state.attempt_pos).unwrap(),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 181 -                 position::Position::new(input, state.attempt_pos).unwrap(),
[INFO] [stdout] 181 +                 Position::new(input, state.attempt_pos).unwrap(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> examples/parens.rs:51:14
[INFO] [stdout]    |
[INFO] [stdout] 51 | struct Paren(Vec<Paren>);
[INFO] [stdout]    |        ----- ^^^^^^^^^^
[INFO] [stdout]    |        |
[INFO] [stdout]    |        field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout]    = note: `Paren` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> examples/parens.rs:20:33
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn parse(rule: Rule, input: &str) -> Result<Pairs<Rule>, Error<Rule>> {
[INFO] [stdout]    |                                 ^^^^            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                 |
[INFO] [stdout]    |                                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn parse(rule: Rule, input: &str) -> Result<Pairs<'_, Rule>, Error<Rule>> {
[INFO] [stdout]    |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> tests/json.rs:41:33
[INFO] [stdout]    |
[INFO] [stdout] 41 |     fn parse(rule: Rule, input: &str) -> Result<Pairs<Rule>, Error<Rule>> {
[INFO] [stdout]    |                                 ^^^^            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                 |
[INFO] [stdout]    |                                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 41 |     fn parse(rule: Rule, input: &str) -> Result<Pairs<'_, Rule>, Error<Rule>> {
[INFO] [stdout]    |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> tests/calculator.rs:35:33
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn parse(rule: Rule, input: &str) -> Result<Pairs<Rule>, Error<Rule>> {
[INFO] [stdout]    |                                 ^^^^            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                 |
[INFO] [stdout]    |                                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn parse(rule: Rule, input: &str) -> Result<Pairs<'_, Rule>, Error<Rule>> {
[INFO] [stdout]    |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.82s
[INFO] running `Command { std: "docker" "inspect" "971098274d45e8bccb1540b2c54131c8a4307208ff462fa7bde7e172f479a903", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "971098274d45e8bccb1540b2c54131c8a4307208ff462fa7bde7e172f479a903", kill_on_drop: false }`
[INFO] [stdout] 971098274d45e8bccb1540b2c54131c8a4307208ff462fa7bde7e172f479a903
