[INFO] fetching crate pineapplepizza 0.1.2...
[INFO] testing pineapplepizza-0.1.2 against beta-2025-10-28 for beta-1.92-2
[INFO] extracting crate pineapplepizza 0.1.2 into /workspace/builds/worker-7-tc2/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-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate pineapplepizza 0.1.2 on toolchain beta-2025-10-28
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-10-28" "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" "+beta-2025-10-28" "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" "+beta-2025-10-28" "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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b29cbdd0e4f6141c69255974bea68e52a1d1b0036045be03fb3a16a846e7d8f9
[INFO] running `Command { std: "docker" "start" "-a" "b29cbdd0e4f6141c69255974bea68e52a1d1b0036045be03fb3a16a846e7d8f9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b29cbdd0e4f6141c69255974bea68e52a1d1b0036045be03fb3a16a846e7d8f9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b29cbdd0e4f6141c69255974bea68e52a1d1b0036045be03fb3a16a846e7d8f9", kill_on_drop: false }`
[INFO] [stdout] b29cbdd0e4f6141c69255974bea68e52a1d1b0036045be03fb3a16a846e7d8f9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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=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" "+beta-2025-10-28" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e21076c9da0824012a3a8f9d0955cc2f50bf5ba171528c79ab6e19bea077a835
[INFO] running `Command { std: "docker" "start" "-a" "e21076c9da0824012a3a8f9d0955cc2f50bf5ba171528c79ab6e19bea077a835", 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: `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]     = note: `#[warn(unused_variables)]` (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] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.96s
[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" "e21076c9da0824012a3a8f9d0955cc2f50bf5ba171528c79ab6e19bea077a835", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e21076c9da0824012a3a8f9d0955cc2f50bf5ba171528c79ab6e19bea077a835", kill_on_drop: false }`
[INFO] [stdout] e21076c9da0824012a3a8f9d0955cc2f50bf5ba171528c79ab6e19bea077a835
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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=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" "+beta-2025-10-28" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 39db4be135d4dd7c4f9a3376f54db03984859fe82a62965798566dbc0c3240b7
[INFO] running `Command { std: "docker" "start" "-a" "39db4be135d4dd7c4f9a3376f54db03984859fe82a62965798566dbc0c3240b7", 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: `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]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[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: unused variable: `s`
[INFO] [stdout]    --> src/main.rs:343:9
[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: 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 0.95s
[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" "39db4be135d4dd7c4f9a3376f54db03984859fe82a62965798566dbc0c3240b7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "39db4be135d4dd7c4f9a3376f54db03984859fe82a62965798566dbc0c3240b7", kill_on_drop: false }`
[INFO] [stdout] 39db4be135d4dd7c4f9a3376f54db03984859fe82a62965798566dbc0c3240b7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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=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" "+beta-2025-10-28" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 66937c060160f42193224645e86e133ac6ebd597f2ba1e6b2b88db2a6fa1cb27
[INFO] running `Command { std: "docker" "start" "-a" "66937c060160f42193224645e86e133ac6ebd597f2ba1e6b2b88db2a6fa1cb27", 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: `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]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[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: unused variable: `s`
[INFO] [stderr]    --> src/main.rs:343:9
[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: 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 26 warnings (run `cargo fix --bin "pineapplepizza" -p pineapplepizza --tests` to apply 18 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.03s
[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-cffeacd48ace18c4)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test parse_list_items ... ok
[INFO] [stdout] test parse_file_test ... ok
[INFO] [stdout] test parse_text_comments ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "66937c060160f42193224645e86e133ac6ebd597f2ba1e6b2b88db2a6fa1cb27", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "66937c060160f42193224645e86e133ac6ebd597f2ba1e6b2b88db2a6fa1cb27", kill_on_drop: false }`
[INFO] [stdout] 66937c060160f42193224645e86e133ac6ebd597f2ba1e6b2b88db2a6fa1cb27
