[INFO] fetching crate pineapplepizza 0.1.2...
[INFO] testing pineapplepizza-0.1.2 against 1.91.0 for beta-1.92-2
[INFO] extracting crate pineapplepizza 0.1.2 into /workspace/builds/worker-7-tc1/source
[INFO] started tweaking crates.io crate pineapplepizza 0.1.2
[INFO] finished tweaking crates.io crate pineapplepizza 0.1.2
[INFO] tweaked toml for crates.io crate pineapplepizza 0.1.2 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate pineapplepizza 0.1.2 on toolchain 1.91.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.91.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.91.0" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 14 packages to latest compatible versions
[INFO] [stderr]       Adding nom v4.2.3 (available: v8.0.0)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.91.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+1.91.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b1c6b3b3139f89635e7b606bd056ad4d57e320a3363d80d33ce8b7d1a6903d80
[INFO] running `Command { std: "docker" "start" "-a" "b1c6b3b3139f89635e7b606bd056ad4d57e320a3363d80d33ce8b7d1a6903d80", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b1c6b3b3139f89635e7b606bd056ad4d57e320a3363d80d33ce8b7d1a6903d80", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b1c6b3b3139f89635e7b606bd056ad4d57e320a3363d80d33ce8b7d1a6903d80", kill_on_drop: false }`
[INFO] [stdout] b1c6b3b3139f89635e7b606bd056ad4d57e320a3363d80d33ce8b7d1a6903d80
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+1.91.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7a58b1cd7e8812b38c093181bfbceb76f014acd45320fbc6c44557ff1311658d
[INFO] running `Command { std: "docker" "start" "-a" "7a58b1cd7e8812b38c093181bfbceb76f014acd45320fbc6c44557ff1311658d", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling version_check v0.1.5
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling nom v4.2.3
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling syn v2.0.108
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling pineapplepizza v0.1.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::option`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::option;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nom::ErrorKind::Custom`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use nom::ErrorKind::Custom;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SerializeMap` and `SerializeSeq`
[INFO] [stdout]   --> src/main.rs:21:41
[INFO] [stdout]    |
[INFO] [stdout] 21 | use serde::ser::{Serialize, Serializer, SerializeSeq, SerializeMap};
[INFO] [stdout]    |                                         ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/main.rs:114:15
[INFO] [stdout]     |
[INFO] [stdout] 114 |     let sep = (if sepb {"- "} else {"* "});
[INFO] [stdout]     |               ^                          ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 114 -     let sep = (if sepb {"- "} else {"* "});
[INFO] [stdout] 114 +     let sep = if sepb {"- "} else {"* "};
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary braces around method argument
[INFO] [stdout]    --> src/main.rs:181:28
[INFO] [stdout]     |
[INFO] [stdout] 181 |   input.split_at_position1({|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))} }, ErrorKind::Custom(2))
[INFO] [stdout]     |                            ^                                                                                  ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_braces)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these braces
[INFO] [stdout]     |
[INFO] [stdout] 181 -   input.split_at_position1({|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))} }, ErrorKind::Custom(2))
[INFO] [stdout] 181 +   input.split_at_position1(|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))}, ErrorKind::Custom(2))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/main.rs:181:63
[INFO] [stdout]     |
[INFO] [stdout] 181 |   input.split_at_position1({|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))} }, ErrorKind::Custom(2))
[INFO] [stdout]     |                                                               ^                                             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 181 -   input.split_at_position1({|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))} }, ErrorKind::Custom(2))
[INFO] [stdout] 181 +   input.split_at_position1({|item| { let ch = item.as_char(); ((ch == '\n') || (ch == '\\')) || (ch == '/')} }, ErrorKind::Custom(2))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/main.rs:185:5
[INFO] [stdout]     |
[INFO] [stdout] 185 |   if(level == 0) {
[INFO] [stdout]     |     ^          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 185 -   if(level == 0) {
[INFO] [stdout] 185 +   if level == 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/main.rs:231:6
[INFO] [stdout]     |
[INFO] [stdout] 231 |   if (args.len() < 3) {
[INFO] [stdout]     |      ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 231 -   if (args.len() < 3) {
[INFO] [stdout] 231 +   if args.len() < 3 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/main.rs:238:19
[INFO] [stdout]     |
[INFO] [stdout] 238 |   let print_out = (args.len() == 3);
[INFO] [stdout]     |                   ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 238 -   let print_out = (args.len() == 3);
[INFO] [stdout] 238 +   let print_out = args.len() == 3;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/main.rs:244:52
[INFO] [stdout]     |
[INFO] [stdout] 244 | ...                   why.description()),
[INFO] [stdout]     |                           ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/main.rs:251:54
[INFO] [stdout]     |
[INFO] [stdout] 251 | ...                   why.description()),
[INFO] [stdout]     |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num`
[INFO] [stdout]    --> src/main.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |         num:  call!(nom::digit) >> // Eventually, validate using this
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: `num` is captured in macro and introduced a unused variable
[INFO] [stdout]    --> src/main.rs:128:5
[INFO] [stdout]     |
[INFO] [stdout] 128 | /     do_parse!(input,
[INFO] [stdout] 129 | |       it: many1!(alt!(do_parse!(
[INFO] [stdout] 130 | |         num:  call!(nom::digit) >> // Eventually, validate using this
[INFO] [stdout] 131 | |               tag!(". ")  >>
[INFO] [stdout] ...   |
[INFO] [stdout] 135 | |       ) | do_parse!(opt!(call!(nom::space)) >> alt!(linecomment2 | spancomment) >> ((None)))/**/)) >> tag!("\n") >> (it.into_iter().flatt...
[INFO] [stdout] 136 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]     = note: this warning originates in the macro `do_parse` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num`
[INFO] [stdout]    --> src/main.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |         num:  call!(nom::digit) >> // Eventually, validate using this
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: `num` is captured in macro and introduced a unused variable
[INFO] [stdout]    --> src/main.rs:128:5
[INFO] [stdout]     |
[INFO] [stdout] 128 | /     do_parse!(input,
[INFO] [stdout] 129 | |       it: many1!(alt!(do_parse!(
[INFO] [stdout] 130 | |         num:  call!(nom::digit) >> // Eventually, validate using this
[INFO] [stdout] 131 | |               tag!(". ")  >>
[INFO] [stdout] ...   |
[INFO] [stdout] 135 | |       ) | do_parse!(opt!(call!(nom::space)) >> alt!(linecomment2 | spancomment) >> ((None)))/**/)) >> tag!("\n") >> (it.into_iter().flatt...
[INFO] [stdout] 136 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     = note: this warning originates in the macro `do_parse` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]    --> src/main.rs:173:17
[INFO] [stdout]     |
[INFO] [stdout] 173 |          ))) >> end: complete!(alt!(tag!("\n") | complete!(linecomment))) >> (txt.into_iter().collect())))
[INFO] [stdout]     |                 ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: `end` is captured in macro and introduced a unused variable
[INFO] [stdout]    --> src/main.rs:162:1
[INFO] [stdout]     |
[INFO] [stdout] 162 | / named!(take_till_eol_with_comments<&str, String>,
[INFO] [stdout] 163 | |        complete!(do_parse!(txt: complete!(many1!(alt_complete!(
[INFO] [stdout] 164 | |            spancomment |
[INFO] [stdout] 165 | |            escaped_transform!(call!(accept_stuff), '\\',
[INFO] [stdout] ...   |
[INFO] [stdout] 173 | |          ))) >> end: complete!(alt!(tag!("\n") | complete!(linecomment))) >> (txt.into_iter().collect())))
[INFO] [stdout] 174 | | );
[INFO] [stdout]     | |_^
[INFO] [stdout]     = note: this warning originates in the macro `do_parse` which comes from the expansion of the macro `named` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `len`
[INFO] [stdout]    --> src/main.rs:188:362
[INFO] [stdout]     |
[INFO] [stdout] 188 | ...t::<Vec<&str>>().len()), |(txt, len)| txt));
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]   --> src/main.rs:99:14
[INFO] [stdout]    |
[INFO] [stdout] 99 |   for txt in node.text.clone() {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]    |
[INFO] [stdout] 99 -   for txt in node.text.clone() {
[INFO] [stdout] 99 +   while let Some(txt) = node.text.clone() {
[INFO] [stdout]    |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]    |
[INFO] [stdout] 99 -   for txt in node.text.clone() {
[INFO] [stdout] 99 +   if let Some(txt) = node.text.clone() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:150:11
[INFO] [stdout]     |
[INFO] [stdout] 150 | named!(ul<&str, Vec<StructuredListItem>>,
[INFO] [stdout]     |           ^^^^      ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |           |
[INFO] [stdout]     |           the lifetime is elided here
[INFO] [stdout]     |           the same 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] 150 | named!(ul<&str, Vec<StructuredListItem<'_>>>,
[INFO] [stdout]     |                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:156:11
[INFO] [stdout]     |
[INFO] [stdout] 156 | named!(ol<&str, Vec<StructuredOrderedListItem>>,
[INFO] [stdout]     |           ^^^^      ^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |           |
[INFO] [stdout]     |           the lifetime is elided here
[INFO] [stdout]     |           the same lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 156 | named!(ol<&str, Vec<StructuredOrderedListItem<'_>>>,
[INFO] [stdout]     |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:184:65
[INFO] [stdout]     |
[INFO] [stdout] 184 | fn h_wrapper<'a>(input: &'a str, level: u8) -> IResult<&'a str, StructuredCollection> {
[INFO] [stdout]     |                          --                             --      ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                          |                              |
[INFO] [stdout]     |                          the lifetime is named here     the same lifetime is named here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]     |
[INFO] [stdout] 184 | fn h_wrapper<'a>(input: &'a str, level: u8) -> IResult<&'a str, StructuredCollection<'a>> {
[INFO] [stdout]     |                                                                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:225:17
[INFO] [stdout]     |
[INFO] [stdout] 225 | named!(document<&str, StructuredCollection>,
[INFO] [stdout]     |                 ^^^^  ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |                 the same lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 225 | named!(document<&str, StructuredCollection<'_>>,
[INFO] [stdout]     |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/main.rs:257:27
[INFO] [stdout]     |
[INFO] [stdout] 257 |     bad         => panic!(format!("{:?}", bad))
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 257 -     bad         => panic!(format!("{:?}", bad))
[INFO] [stdout] 257 +     bad         => panic!("{:?}", bad)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.83s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v4.2.3
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "7a58b1cd7e8812b38c093181bfbceb76f014acd45320fbc6c44557ff1311658d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7a58b1cd7e8812b38c093181bfbceb76f014acd45320fbc6c44557ff1311658d", kill_on_drop: false }`
[INFO] [stdout] 7a58b1cd7e8812b38c093181bfbceb76f014acd45320fbc6c44557ff1311658d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+1.91.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] eb532278412a5295d34e50efb41ec4a4cf82f600ea3d9154e1340150ddc88116
[INFO] running `Command { std: "docker" "start" "-a" "eb532278412a5295d34e50efb41ec4a4cf82f600ea3d9154e1340150ddc88116", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling pineapplepizza v0.1.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::option`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::option;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nom::ErrorKind::Custom`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use nom::ErrorKind::Custom;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SerializeMap` and `SerializeSeq`
[INFO] [stdout]   --> src/main.rs:21:41
[INFO] [stdout]    |
[INFO] [stdout] 21 | use serde::ser::{Serialize, Serializer, SerializeSeq, SerializeMap};
[INFO] [stdout]    |                                         ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/main.rs:114:15
[INFO] [stdout]     |
[INFO] [stdout] 114 |     let sep = (if sepb {"- "} else {"* "});
[INFO] [stdout]     |               ^                          ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 114 -     let sep = (if sepb {"- "} else {"* "});
[INFO] [stdout] 114 +     let sep = if sepb {"- "} else {"* "};
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary braces around method argument
[INFO] [stdout]    --> src/main.rs:181:28
[INFO] [stdout]     |
[INFO] [stdout] 181 |   input.split_at_position1({|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))} }, ErrorKind::Custom(2))
[INFO] [stdout]     |                            ^                                                                                  ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_braces)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these braces
[INFO] [stdout]     |
[INFO] [stdout] 181 -   input.split_at_position1({|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))} }, ErrorKind::Custom(2))
[INFO] [stdout] 181 +   input.split_at_position1(|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))}, ErrorKind::Custom(2))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/main.rs:181:63
[INFO] [stdout]     |
[INFO] [stdout] 181 |   input.split_at_position1({|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))} }, ErrorKind::Custom(2))
[INFO] [stdout]     |                                                               ^                                             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 181 -   input.split_at_position1({|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))} }, ErrorKind::Custom(2))
[INFO] [stdout] 181 +   input.split_at_position1({|item| { let ch = item.as_char(); ((ch == '\n') || (ch == '\\')) || (ch == '/')} }, ErrorKind::Custom(2))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/main.rs:185:5
[INFO] [stdout]     |
[INFO] [stdout] 185 |   if(level == 0) {
[INFO] [stdout]     |     ^          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 185 -   if(level == 0) {
[INFO] [stdout] 185 +   if level == 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/main.rs:231:6
[INFO] [stdout]     |
[INFO] [stdout] 231 |   if (args.len() < 3) {
[INFO] [stdout]     |      ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 231 -   if (args.len() < 3) {
[INFO] [stdout] 231 +   if args.len() < 3 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/main.rs:238:19
[INFO] [stdout]     |
[INFO] [stdout] 238 |   let print_out = (args.len() == 3);
[INFO] [stdout]     |                   ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 238 -   let print_out = (args.len() == 3);
[INFO] [stdout] 238 +   let print_out = args.len() == 3;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/main.rs:244:52
[INFO] [stdout]     |
[INFO] [stdout] 244 | ...                   why.description()),
[INFO] [stdout]     |                           ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/main.rs:251:54
[INFO] [stdout]     |
[INFO] [stdout] 251 | ...                   why.description()),
[INFO] [stdout]     |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/main.rs:304:54
[INFO] [stdout]     |
[INFO] [stdout] 304 | ...                   why.description()),
[INFO] [stdout]     |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/main.rs:312:54
[INFO] [stdout]     |
[INFO] [stdout] 312 | ...                   why.description()),
[INFO] [stdout]     |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/main.rs:318:34
[INFO] [stdout]     |
[INFO] [stdout] 318 |     Err(why) => panic!("{}", why.description()),
[INFO] [stdout]     |                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/main.rs:346:54
[INFO] [stdout]     |
[INFO] [stdout] 346 | ...                   why.description()),
[INFO] [stdout]     |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/main.rs:352:56
[INFO] [stdout]     |
[INFO] [stdout] 352 | ...                   why.description()),
[INFO] [stdout]     |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num`
[INFO] [stdout]    --> src/main.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |         num:  call!(nom::digit) >> // Eventually, validate using this
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: `num` is captured in macro and introduced a unused variable
[INFO] [stdout]    --> src/main.rs:128:5
[INFO] [stdout]     |
[INFO] [stdout] 128 | /     do_parse!(input,
[INFO] [stdout] 129 | |       it: many1!(alt!(do_parse!(
[INFO] [stdout] 130 | |         num:  call!(nom::digit) >> // Eventually, validate using this
[INFO] [stdout] 131 | |               tag!(". ")  >>
[INFO] [stdout] ...   |
[INFO] [stdout] 135 | |       ) | do_parse!(opt!(call!(nom::space)) >> alt!(linecomment2 | spancomment) >> ((None)))/**/)) >> tag!("\n") >> (it.into_iter().flatt...
[INFO] [stdout] 136 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]     = note: this warning originates in the macro `do_parse` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num`
[INFO] [stdout]    --> src/main.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |         num:  call!(nom::digit) >> // Eventually, validate using this
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: `num` is captured in macro and introduced a unused variable
[INFO] [stdout]    --> src/main.rs:128:5
[INFO] [stdout]     |
[INFO] [stdout] 128 | /     do_parse!(input,
[INFO] [stdout] 129 | |       it: many1!(alt!(do_parse!(
[INFO] [stdout] 130 | |         num:  call!(nom::digit) >> // Eventually, validate using this
[INFO] [stdout] 131 | |               tag!(". ")  >>
[INFO] [stdout] ...   |
[INFO] [stdout] 135 | |       ) | do_parse!(opt!(call!(nom::space)) >> alt!(linecomment2 | spancomment) >> ((None)))/**/)) >> tag!("\n") >> (it.into_iter().flatt...
[INFO] [stdout] 136 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     = note: this warning originates in the macro `do_parse` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]    --> src/main.rs:173:17
[INFO] [stdout]     |
[INFO] [stdout] 173 |          ))) >> end: complete!(alt!(tag!("\n") | complete!(linecomment))) >> (txt.into_iter().collect())))
[INFO] [stdout]     |                 ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: `end` is captured in macro and introduced a unused variable
[INFO] [stdout]    --> src/main.rs:162:1
[INFO] [stdout]     |
[INFO] [stdout] 162 | / named!(take_till_eol_with_comments<&str, String>,
[INFO] [stdout] 163 | |        complete!(do_parse!(txt: complete!(many1!(alt_complete!(
[INFO] [stdout] 164 | |            spancomment |
[INFO] [stdout] 165 | |            escaped_transform!(call!(accept_stuff), '\\',
[INFO] [stdout] ...   |
[INFO] [stdout] 173 | |          ))) >> end: complete!(alt!(tag!("\n") | complete!(linecomment))) >> (txt.into_iter().collect())))
[INFO] [stdout] 174 | | );
[INFO] [stdout]     | |_^
[INFO] [stdout]     = note: this warning originates in the macro `do_parse` which comes from the expansion of the macro `named` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `len`
[INFO] [stdout]    --> src/main.rs:188:362
[INFO] [stdout]     |
[INFO] [stdout] 188 | ...t::<Vec<&str>>().len()), |(txt, len)| txt));
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/main.rs:343:13
[INFO] [stdout]     |
[INFO] [stdout] 343 |     let mut s = String::new();
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:343:9
[INFO] [stdout]     |
[INFO] [stdout] 343 |     let mut s = String::new();
[INFO] [stdout]     |         ----^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]   --> src/main.rs:99:14
[INFO] [stdout]    |
[INFO] [stdout] 99 |   for txt in node.text.clone() {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]    |
[INFO] [stdout] 99 -   for txt in node.text.clone() {
[INFO] [stdout] 99 +   while let Some(txt) = node.text.clone() {
[INFO] [stdout]    |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]    |
[INFO] [stdout] 99 -   for txt in node.text.clone() {
[INFO] [stdout] 99 +   if let Some(txt) = node.text.clone() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:150:11
[INFO] [stdout]     |
[INFO] [stdout] 150 | named!(ul<&str, Vec<StructuredListItem>>,
[INFO] [stdout]     |           ^^^^      ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |           |
[INFO] [stdout]     |           the lifetime is elided here
[INFO] [stdout]     |           the same 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] 150 | named!(ul<&str, Vec<StructuredListItem<'_>>>,
[INFO] [stdout]     |                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:156:11
[INFO] [stdout]     |
[INFO] [stdout] 156 | named!(ol<&str, Vec<StructuredOrderedListItem>>,
[INFO] [stdout]     |           ^^^^      ^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |           |
[INFO] [stdout]     |           the lifetime is elided here
[INFO] [stdout]     |           the same lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 156 | named!(ol<&str, Vec<StructuredOrderedListItem<'_>>>,
[INFO] [stdout]     |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:184:65
[INFO] [stdout]     |
[INFO] [stdout] 184 | fn h_wrapper<'a>(input: &'a str, level: u8) -> IResult<&'a str, StructuredCollection> {
[INFO] [stdout]     |                          --                             --      ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                          |                              |
[INFO] [stdout]     |                          the lifetime is named here     the same lifetime is named here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]     |
[INFO] [stdout] 184 | fn h_wrapper<'a>(input: &'a str, level: u8) -> IResult<&'a str, StructuredCollection<'a>> {
[INFO] [stdout]     |                                                                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:225:17
[INFO] [stdout]     |
[INFO] [stdout] 225 | named!(document<&str, StructuredCollection>,
[INFO] [stdout]     |                 ^^^^  ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |                 the same lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 225 | named!(document<&str, StructuredCollection<'_>>,
[INFO] [stdout]     |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/main.rs:257:27
[INFO] [stdout]     |
[INFO] [stdout] 257 |     bad         => panic!(format!("{:?}", bad))
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 257 -     bad         => panic!(format!("{:?}", bad))
[INFO] [stdout] 257 +     bad         => panic!("{:?}", bad)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/main.rs:358:29
[INFO] [stdout]     |
[INFO] [stdout] 358 |       bad         => panic!(format!("failed parsing {}: {:?}", path.display(), bad))
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 358 -       bad         => panic!(format!("failed parsing {}: {:?}", path.display(), bad))
[INFO] [stdout] 358 +       bad         => panic!("failed parsing {}: {:?}", path.display(), bad)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.06s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v4.2.3
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "eb532278412a5295d34e50efb41ec4a4cf82f600ea3d9154e1340150ddc88116", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "eb532278412a5295d34e50efb41ec4a4cf82f600ea3d9154e1340150ddc88116", kill_on_drop: false }`
[INFO] [stdout] eb532278412a5295d34e50efb41ec4a4cf82f600ea3d9154e1340150ddc88116
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+1.91.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] a83f2df26375be6fa1cea1a72af305779c3926ebe6bea8e9bc47b76ab6db5576
[INFO] running `Command { std: "docker" "start" "-a" "a83f2df26375be6fa1cea1a72af305779c3926ebe6bea8e9bc47b76ab6db5576", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: unused import: `std::option`
[INFO] [stderr]   --> src/main.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use std::option;
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `nom::ErrorKind::Custom`
[INFO] [stderr]   --> src/main.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | use nom::ErrorKind::Custom;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `SerializeMap` and `SerializeSeq`
[INFO] [stderr]   --> src/main.rs:21:41
[INFO] [stderr]    |
[INFO] [stderr] 21 | use serde::ser::{Serialize, Serializer, SerializeSeq, SerializeMap};
[INFO] [stderr]    |                                         ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]    --> src/main.rs:114:15
[INFO] [stderr]     |
[INFO] [stderr] 114 |     let sep = (if sepb {"- "} else {"* "});
[INFO] [stderr]     |               ^                          ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 114 -     let sep = (if sepb {"- "} else {"* "});
[INFO] [stderr] 114 +     let sep = if sepb {"- "} else {"* "};
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary braces around method argument
[INFO] [stderr]    --> src/main.rs:181:28
[INFO] [stderr]     |
[INFO] [stderr] 181 |   input.split_at_position1({|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))} }, ErrorKind::Custom(2))
[INFO] [stderr]     |                            ^                                                                                  ^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_braces)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these braces
[INFO] [stderr]     |
[INFO] [stderr] 181 -   input.split_at_position1({|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))} }, ErrorKind::Custom(2))
[INFO] [stderr] 181 +   input.split_at_position1(|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))}, ErrorKind::Custom(2))
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/main.rs:181:63
[INFO] [stderr]     |
[INFO] [stderr] 181 |   input.split_at_position1({|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))} }, ErrorKind::Custom(2))
[INFO] [stderr]     |                                                               ^                                             ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 181 -   input.split_at_position1({|item| { let ch = item.as_char(); (((ch == '\n') || (ch == '\\')) || (ch == '/'))} }, ErrorKind::Custom(2))
[INFO] [stderr] 181 +   input.split_at_position1({|item| { let ch = item.as_char(); ((ch == '\n') || (ch == '\\')) || (ch == '/')} }, ErrorKind::Custom(2))
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/main.rs:185:5
[INFO] [stderr]     |
[INFO] [stderr] 185 |   if(level == 0) {
[INFO] [stderr]     |     ^          ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 185 -   if(level == 0) {
[INFO] [stderr] 185 +   if level == 0 {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/main.rs:231:6
[INFO] [stderr]     |
[INFO] [stderr] 231 |   if (args.len() < 3) {
[INFO] [stderr]     |      ^              ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 231 -   if (args.len() < 3) {
[INFO] [stderr] 231 +   if args.len() < 3 {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]    --> src/main.rs:238:19
[INFO] [stderr]     |
[INFO] [stderr] 238 |   let print_out = (args.len() == 3);
[INFO] [stderr]     |                   ^               ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 238 -   let print_out = (args.len() == 3);
[INFO] [stderr] 238 +   let print_out = args.len() == 3;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stderr]    --> src/main.rs:244:52
[INFO] [stderr]     |
[INFO] [stderr] 244 | ...                   why.description()),
[INFO] [stderr]     |                           ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stderr]    --> src/main.rs:251:54
[INFO] [stderr]     |
[INFO] [stderr] 251 | ...                   why.description()),
[INFO] [stderr]     |                           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stderr]    --> src/main.rs:304:54
[INFO] [stderr]     |
[INFO] [stderr] 304 | ...                   why.description()),
[INFO] [stderr]     |                           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stderr]    --> src/main.rs:312:54
[INFO] [stderr]     |
[INFO] [stderr] 312 | ...                   why.description()),
[INFO] [stderr]     |                           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stderr]    --> src/main.rs:318:34
[INFO] [stderr]     |
[INFO] [stderr] 318 |     Err(why) => panic!("{}", why.description()),
[INFO] [stderr]     |                                  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stderr]    --> src/main.rs:346:54
[INFO] [stderr]     |
[INFO] [stderr] 346 | ...                   why.description()),
[INFO] [stderr]     |                           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stderr]    --> src/main.rs:352:56
[INFO] [stderr]     |
[INFO] [stderr] 352 | ...                   why.description()),
[INFO] [stderr]     |                           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `num`
[INFO] [stderr]    --> src/main.rs:130:9
[INFO] [stderr]     |
[INFO] [stderr] 130 |         num:  call!(nom::digit) >> // Eventually, validate using this
[INFO] [stderr]     |         ^^^
[INFO] [stderr]     |
[INFO] [stderr] help: `num` is captured in macro and introduced a unused variable
[INFO] [stderr]    --> src/main.rs:128:5
[INFO] [stderr]     |
[INFO] [stderr] 128 | /     do_parse!(input,
[INFO] [stderr] 129 | |       it: many1!(alt!(do_parse!(
[INFO] [stderr] 130 | |         num:  call!(nom::digit) >> // Eventually, validate using this
[INFO] [stderr] 131 | |               tag!(". ")  >>
[INFO] [stderr] ...   |
[INFO] [stderr] 135 | |       ) | do_parse!(opt!(call!(nom::space)) >> alt!(linecomment2 | spancomment) >> ((None)))/**/)) >> tag!("\n") >> (it.into_iter().flatt...
[INFO] [stderr] 136 | |     )
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr]     = note: this warning originates in the macro `do_parse` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `num`
[INFO] [stderr]    --> src/main.rs:130:9
[INFO] [stderr]     |
[INFO] [stderr] 130 |         num:  call!(nom::digit) >> // Eventually, validate using this
[INFO] [stderr]     |         ^^^
[INFO] [stderr]     |
[INFO] [stderr] help: `num` is captured in macro and introduced a unused variable
[INFO] [stderr]    --> src/main.rs:128:5
[INFO] [stderr]     |
[INFO] [stderr] 128 | /     do_parse!(input,
[INFO] [stderr] 129 | |       it: many1!(alt!(do_parse!(
[INFO] [stderr] 130 | |         num:  call!(nom::digit) >> // Eventually, validate using this
[INFO] [stderr] 131 | |               tag!(". ")  >>
[INFO] [stderr] ...   |
[INFO] [stderr] 135 | |       ) | do_parse!(opt!(call!(nom::space)) >> alt!(linecomment2 | spancomment) >> ((None)))/**/)) >> tag!("\n") >> (it.into_iter().flatt...
[INFO] [stderr] 136 | |     )
[INFO] [stderr]     | |_____^
[INFO] [stderr]     = note: this warning originates in the macro `do_parse` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `end`
[INFO] [stderr]    --> src/main.rs:173:17
[INFO] [stderr]     |
[INFO] [stderr] 173 |          ))) >> end: complete!(alt!(tag!("\n") | complete!(linecomment))) >> (txt.into_iter().collect())))
[INFO] [stderr]     |                 ^^^
[INFO] [stderr]     |
[INFO] [stderr] help: `end` is captured in macro and introduced a unused variable
[INFO] [stderr]    --> src/main.rs:162:1
[INFO] [stderr]     |
[INFO] [stderr] 162 | / named!(take_till_eol_with_comments<&str, String>,
[INFO] [stderr] 163 | |        complete!(do_parse!(txt: complete!(many1!(alt_complete!(
[INFO] [stderr] 164 | |            spancomment |
[INFO] [stderr] 165 | |            escaped_transform!(call!(accept_stuff), '\\',
[INFO] [stderr] ...   |
[INFO] [stderr] 173 | |          ))) >> end: complete!(alt!(tag!("\n") | complete!(linecomment))) >> (txt.into_iter().collect())))
[INFO] [stderr] 174 | | );
[INFO] [stderr]     | |_^
[INFO] [stderr]     = note: this warning originates in the macro `do_parse` which comes from the expansion of the macro `named` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `len`
[INFO] [stderr]    --> src/main.rs:188:362
[INFO] [stderr]     |
[INFO] [stderr] 188 | ...t::<Vec<&str>>().len()), |(txt, len)| txt));
[INFO] [stderr]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_len`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `s`
[INFO] [stderr]    --> src/main.rs:343:13
[INFO] [stderr]     |
[INFO] [stderr] 343 |     let mut s = String::new();
[INFO] [stderr]     |             ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/main.rs:343:9
[INFO] [stderr]     |
[INFO] [stderr] 343 |     let mut s = String::new();
[INFO] [stderr]     |         ----^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stderr]   --> src/main.rs:99:14
[INFO] [stderr]    |
[INFO] [stderr] 99 |   for txt in node.text.clone() {
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stderr] help: to check pattern in a loop use `while let`
[INFO] [stderr]    |
[INFO] [stderr] 99 -   for txt in node.text.clone() {
[INFO] [stderr] 99 +   while let Some(txt) = node.text.clone() {
[INFO] [stderr]    |
[INFO] [stderr] help: consider using `if let` to clear intent
[INFO] [stderr]    |
[INFO] [stderr] 99 -   for txt in node.text.clone() {
[INFO] [stderr] 99 +   if let Some(txt) = node.text.clone() {
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/main.rs:150:11
[INFO] [stderr]     |
[INFO] [stderr] 150 | named!(ul<&str, Vec<StructuredListItem>>,
[INFO] [stderr]     |           ^^^^      ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |           |
[INFO] [stderr]     |           the lifetime is elided here
[INFO] [stderr]     |           the same lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 150 | named!(ul<&str, Vec<StructuredListItem<'_>>>,
[INFO] [stderr]     |                                       ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/main.rs:156:11
[INFO] [stderr]     |
[INFO] [stderr] 156 | named!(ol<&str, Vec<StructuredOrderedListItem>>,
[INFO] [stderr]     |           ^^^^      ^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |           |
[INFO] [stderr]     |           the lifetime is elided here
[INFO] [stderr]     |           the same lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 156 | named!(ol<&str, Vec<StructuredOrderedListItem<'_>>>,
[INFO] [stderr]     |                                              ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stderr]    --> src/main.rs:184:65
[INFO] [stderr]     |
[INFO] [stderr] 184 | fn h_wrapper<'a>(input: &'a str, level: u8) -> IResult<&'a str, StructuredCollection> {
[INFO] [stderr]     |                          --                             --      ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |                          |                              |
[INFO] [stderr]     |                          the lifetime is named here     the same lifetime is named here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: consistently use `'a`
[INFO] [stderr]     |
[INFO] [stderr] 184 | fn h_wrapper<'a>(input: &'a str, level: u8) -> IResult<&'a str, StructuredCollection<'a>> {
[INFO] [stderr]     |                                                                                     ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/main.rs:225:17
[INFO] [stderr]     |
[INFO] [stderr] 225 | named!(document<&str, StructuredCollection>,
[INFO] [stderr]     |                 ^^^^  ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 the lifetime is elided here
[INFO] [stderr]     |                 the same lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 225 | named!(document<&str, StructuredCollection<'_>>,
[INFO] [stderr]     |                                           ++++
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/main.rs:257:27
[INFO] [stderr]     |
[INFO] [stderr] 257 |     bad         => panic!(format!("{:?}", bad))
[INFO] [stderr]     |                           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 257 -     bad         => panic!(format!("{:?}", bad))
[INFO] [stderr] 257 +     bad         => panic!("{:?}", bad)
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/main.rs:358:29
[INFO] [stderr]     |
[INFO] [stderr] 358 |       bad         => panic!(format!("failed parsing {}: {:?}", path.display(), bad))
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 358 -       bad         => panic!(format!("failed parsing {}: {:?}", path.display(), bad))
[INFO] [stderr] 358 +       bad         => panic!("failed parsing {}: {:?}", path.display(), bad)
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: `pineapplepizza` (bin "pineapplepizza" test) generated 29 warnings (run `cargo fix --bin "pineapplepizza" --tests` to apply 16 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.09s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v4.2.3
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/pineapplepizza-553ad67b15b96499)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test parse_list_items ... ok
[INFO] [stdout] test parse_text_comments ... ok
[INFO] [stdout] test parse_file_test ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "a83f2df26375be6fa1cea1a72af305779c3926ebe6bea8e9bc47b76ab6db5576", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a83f2df26375be6fa1cea1a72af305779c3926ebe6bea8e9bc47b76ab6db5576", kill_on_drop: false }`
[INFO] [stdout] a83f2df26375be6fa1cea1a72af305779c3926ebe6bea8e9bc47b76ab6db5576
