[INFO] fetching crate perf-focus 1.1.0...
[INFO] testing perf-focus-1.1.0 against 1.95.0 for beta-1.96-2
[INFO] extracting crate perf-focus 1.1.0 into /workspace/builds/worker-4-tc1/source
[INFO] started tweaking crates.io crate perf-focus 1.1.0
[INFO] finished tweaking crates.io crate perf-focus 1.1.0
[INFO] tweaked toml for crates.io crate perf-focus 1.1.0 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate perf-focus 1.1.0 on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 17 packages to latest compatible versions
[INFO] [stderr]       Adding itertools v0.7.11 (available: v0.14.0)
[INFO] [stderr]       Adding petgraph v0.4.13 (available: v0.8.3)
[INFO] [stderr]       Adding regex v0.1.80 (available: v1.12.3)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded thread_local v0.2.7
[INFO] [stderr]   Downloaded thread-id v2.0.0
[INFO] [stderr]   Downloaded rusty-peg v0.4.0
[INFO] [stderr]   Downloaded fixedbitset v0.1.9
[INFO] [stderr]   Downloaded utf8-ranges v0.1.3
[INFO] [stderr]   Downloaded memchr v0.1.11
[INFO] [stderr]   Downloaded ordermap v0.3.5
[INFO] [stderr]   Downloaded regex-syntax v0.3.9
[INFO] [stderr]   Downloaded itertools v0.7.11
[INFO] [stderr]   Downloaded petgraph v0.4.13
[INFO] [stderr]   Downloaded regex v0.1.80
[INFO] [stderr]   Downloaded aho-corasick v0.5.3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 4ac3d04bac9e8bf94537dd2a97f396e6aeba52a3549ae41c40d2df71f49f1e61
[INFO] running `Command { std: "docker" "start" "-a" "4ac3d04bac9e8bf94537dd2a97f396e6aeba52a3549ae41c40d2df71f49f1e61", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4ac3d04bac9e8bf94537dd2a97f396e6aeba52a3549ae41c40d2df71f49f1e61", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4ac3d04bac9e8bf94537dd2a97f396e6aeba52a3549ae41c40d2df71f49f1e61", kill_on_drop: false }`
[INFO] [stdout] 4ac3d04bac9e8bf94537dd2a97f396e6aeba52a3549ae41c40d2df71f49f1e61
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8375d15d6829cbc2eb184fc5e2e8d6b1d142c527ac6b88df11d2b71a32dd49db
[INFO] running `Command { std: "docker" "start" "-a" "8375d15d6829cbc2eb184fc5e2e8d6b1d142c527ac6b88df11d2b71a32dd49db", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling winapi-build v0.1.1
[INFO] [stderr]    Compiling winapi v0.2.8
[INFO] [stderr]    Compiling utf8-ranges v0.1.3
[INFO] [stderr]    Compiling regex-syntax v0.3.9
[INFO] [stderr]    Compiling ordermap v0.3.5
[INFO] [stderr]    Compiling fixedbitset v0.1.9
[INFO] [stderr]    Compiling itertools v0.7.11
[INFO] [stderr]    Compiling memchr v0.1.11
[INFO] [stderr]    Compiling kernel32-sys v0.2.2
[INFO] [stderr]    Compiling aho-corasick v0.5.3
[INFO] [stderr]    Compiling thread-id v2.0.0
[INFO] [stderr]    Compiling thread_local v0.2.7
[INFO] [stderr]    Compiling petgraph v0.4.13
[INFO] [stderr]    Compiling regex v0.1.80
[INFO] [stderr]    Compiling rusty-peg v0.4.0
[INFO] [stderr]    Compiling perf-focus v1.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/graph/mod.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 |         try!(write!(out, "digraph G {{\n"));
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/graph/mod.rs:110:9
[INFO] [stdout]     |
[INFO] [stdout] 110 |         try!(write!(out, "  node [ shape=box ];"));
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/graph/mod.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |         try!(write!(out, "}}\n"));
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/graph/mod.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |             try!(write!(out, "  n{} -> n{} [label=\"{}%\"];\n",
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/graph/mod.rs:125:17
[INFO] [stdout]     |
[INFO] [stdout] 125 |                 try!(write!(out, "  n{} [label=\"{} ({}%)\"];\n",
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/main.rs:418:35
[INFO] [stdout]     |
[INFO] [stdout] 418 |     let mut file = BufWriter::new(try!(File::create(graph_file)));
[INFO] [stdout]     |                                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/matcher/mod.rs:71:17
[INFO] [stdout]    |
[INFO] [stdout] 71 |     object: Box<MatcherTrait>,
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 71 |     object: Box<dyn MatcherTrait>,
[INFO] [stdout]    |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/trace/mod.rs:35:35
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn each_trace_impl<F>(stdin: &mut BufRead, mut callback: F) -> io::Result<()>
[INFO] [stdout]    |                                   ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn each_trace_impl<F>(stdin: &mut dyn BufRead, mut callback: F) -> io::Result<()>
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:155:35
[INFO] [stdout]     |
[INFO] [stdout] 155 |     fn clone_object(&self) -> Box<MatcherTrait>;
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 155 |     fn clone_object(&self) -> Box<dyn MatcherTrait>;
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:196:35
[INFO] [stdout]     |
[INFO] [stdout] 196 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 196 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:233:35
[INFO] [stdout]     |
[INFO] [stdout] 233 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 233 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:263:35
[INFO] [stdout]     |
[INFO] [stdout] 263 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 263 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:296:35
[INFO] [stdout]     |
[INFO] [stdout] 296 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 296 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:332:35
[INFO] [stdout]     |
[INFO] [stdout] 332 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 332 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:369:35
[INFO] [stdout]     |
[INFO] [stdout] 369 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 369 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:412:35
[INFO] [stdout]     |
[INFO] [stdout] 412 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 412 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:452:35
[INFO] [stdout]     |
[INFO] [stdout] 452 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 452 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/graph/mod.rs:108:34
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub fn dump(&self, out: &mut Write) -> Result<()> {
[INFO] [stdout]     |                                  ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub fn dump(&self, out: &mut dyn Write) -> Result<()> {
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: a method with this name may be added to the standard library in the future
[INFO] [stdout]   --> src/trace/mod.rs:64:26
[INFO] [stdout]    |
[INFO] [stdout] 64 |                         .intersperse(" ")
[INFO] [stdout]    |                          ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
[INFO] [stdout]    = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>
[INFO] [stdout]    = help: call with fully qualified syntax `itertools::Itertools::intersperse(...)` to keep using the current method
[INFO] [stdout]    = note: `#[warn(unstable_name_collisions)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `for_each_leaf` is never used
[INFO] [stdout]   --> src/tree/mod.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl Tree {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn for_each_leaf<F>(&self, mut f: F)
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `for_each_leaf` is never used
[INFO] [stdout]    --> src/tree/mod.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout]  99 | impl TreeNode {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 197 |     fn for_each_leaf<F>(&self, f: &mut F)
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/matcher/mod.rs:56:25
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn parse_matcher(s: &str) -> Result<Matcher, rusty_peg::Error> {
[INFO] [stdout]    |                         ^^^^                     ^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn parse_matcher(s: &str) -> Result<Matcher, rusty_peg::Error<'_>> {
[INFO] [stdout]    |                                                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.00s
[INFO] running `Command { std: "docker" "inspect" "8375d15d6829cbc2eb184fc5e2e8d6b1d142c527ac6b88df11d2b71a32dd49db", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8375d15d6829cbc2eb184fc5e2e8d6b1d142c527ac6b88df11d2b71a32dd49db", kill_on_drop: false }`
[INFO] [stdout] 8375d15d6829cbc2eb184fc5e2e8d6b1d142c527ac6b88df11d2b71a32dd49db
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 88027b60f95924cc40dde0a63ddec3b3d5b194df8e869ee6f3ee7296bf1e75d2
[INFO] running `Command { std: "docker" "start" "-a" "88027b60f95924cc40dde0a63ddec3b3d5b194df8e869ee6f3ee7296bf1e75d2", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling perf-focus v1.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/graph/mod.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 |         try!(write!(out, "digraph G {{\n"));
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/graph/mod.rs:110:9
[INFO] [stdout]     |
[INFO] [stdout] 110 |         try!(write!(out, "  node [ shape=box ];"));
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/graph/mod.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |         try!(write!(out, "}}\n"));
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/graph/mod.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |             try!(write!(out, "  n{} -> n{} [label=\"{}%\"];\n",
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/graph/mod.rs:125:17
[INFO] [stdout]     |
[INFO] [stdout] 125 |                 try!(write!(out, "  n{} [label=\"{} ({}%)\"];\n",
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/matcher/parser.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / rusty_peg! {
[INFO] [stdout]  7 | |     parser Parser<'input> {
[INFO] [stdout]  8 | |         MATCHER: Matcher = (
[INFO] [stdout]  9 | |             MATCHER_COMMA_MATCHER /
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `rusty_peg_declare_map_nonterminal` which comes from the expansion of the macro `rusty_peg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/main.rs:418:35
[INFO] [stdout]     |
[INFO] [stdout] 418 |     let mut file = BufWriter::new(try!(File::create(graph_file)));
[INFO] [stdout]     |                                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/matcher/mod.rs:71:17
[INFO] [stdout]    |
[INFO] [stdout] 71 |     object: Box<MatcherTrait>,
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 71 |     object: Box<dyn MatcherTrait>,
[INFO] [stdout]    |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/trace/mod.rs:35:35
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn each_trace_impl<F>(stdin: &mut BufRead, mut callback: F) -> io::Result<()>
[INFO] [stdout]    |                                   ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn each_trace_impl<F>(stdin: &mut dyn BufRead, mut callback: F) -> io::Result<()>
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:155:35
[INFO] [stdout]     |
[INFO] [stdout] 155 |     fn clone_object(&self) -> Box<MatcherTrait>;
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 155 |     fn clone_object(&self) -> Box<dyn MatcherTrait>;
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:196:35
[INFO] [stdout]     |
[INFO] [stdout] 196 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 196 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:233:35
[INFO] [stdout]     |
[INFO] [stdout] 233 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 233 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:263:35
[INFO] [stdout]     |
[INFO] [stdout] 263 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 263 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:296:35
[INFO] [stdout]     |
[INFO] [stdout] 296 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 296 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:332:35
[INFO] [stdout]     |
[INFO] [stdout] 332 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 332 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:369:35
[INFO] [stdout]     |
[INFO] [stdout] 369 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 369 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:412:35
[INFO] [stdout]     |
[INFO] [stdout] 412 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 412 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/matcher/mod.rs:452:35
[INFO] [stdout]     |
[INFO] [stdout] 452 |     fn clone_object(&self) -> Box<MatcherTrait> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 452 |     fn clone_object(&self) -> Box<dyn MatcherTrait> {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/graph/mod.rs:108:34
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub fn dump(&self, out: &mut Write) -> Result<()> {
[INFO] [stdout]     |                                  ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub fn dump(&self, out: &mut dyn Write) -> Result<()> {
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `matcher::Matcher: matcher::MatcherTrait` is not satisfied
[INFO] [stdout]   --> src/matcher/test.rs:6:26
[INFO] [stdout]    |
[INFO] [stdout]  6 |     let m = Matcher::new(RegexMatcher::new("b"));
[INFO] [stdout]    |             ------------ ^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]    |             |
[INFO] [stdout]    |             required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `matcher::MatcherTrait` is not implemented for `matcher::Matcher`
[INFO] [stdout]   --> src/matcher/mod.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Matcher {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: the following other types implement trait `matcher::MatcherTrait`:
[INFO] [stdout]              EmptyMatcher
[INFO] [stdout]              matcher::NotMatcher
[INFO] [stdout]              matcher::OrMatcher
[INFO] [stdout]              matcher::ParenMatcher
[INFO] [stdout]              matcher::RegexMatcher
[INFO] [stdout]              matcher::SkipMatcher
[INFO] [stdout]              matcher::ThenMatcher
[INFO] [stdout]              matcher::WildcardMatcher
[INFO] [stdout] note: required by a bound in `matcher::Matcher::new`
[INFO] [stdout]   --> src/matcher/mod.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn new<M: MatcherTrait + 'static>(m: M) -> Matcher {
[INFO] [stdout]    |               ^^^^^^^^^^^^ required by this bound in `Matcher::new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `prefix` on type `SearchResult`
[INFO] [stdout]  --> src/matcher/test.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 |     assert_eq!(r.prefix, &[format!("a")]);
[INFO] [stdout]   |                  ^^^^^^ unknown field
[INFO] [stdout]   |
[INFO] [stdout]   = note: available fields are: `first_matching_frame`, `first_callee_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `suffix` on type `SearchResult`
[INFO] [stdout]  --> src/matcher/test.rs:9:18
[INFO] [stdout]   |
[INFO] [stdout] 9 |     assert_eq!(r.suffix, &[format!("c")]);
[INFO] [stdout]   |                  ^^^^^^ unknown field
[INFO] [stdout]   |
[INFO] [stdout]   = note: available fields are: `first_matching_frame`, `first_callee_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `matcher::Matcher: matcher::MatcherTrait` is not satisfied
[INFO] [stdout]   --> src/matcher/test.rs:18:30
[INFO] [stdout]    |
[INFO] [stdout] 18 |                 Matcher::new(RegexMatcher::new("b")),
[INFO] [stdout]    |                 ------------ ^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `matcher::MatcherTrait` is not implemented for `matcher::Matcher`
[INFO] [stdout]   --> src/matcher/mod.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Matcher {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: the following other types implement trait `matcher::MatcherTrait`:
[INFO] [stdout]              EmptyMatcher
[INFO] [stdout]              matcher::NotMatcher
[INFO] [stdout]              matcher::OrMatcher
[INFO] [stdout]              matcher::ParenMatcher
[INFO] [stdout]              matcher::RegexMatcher
[INFO] [stdout]              matcher::SkipMatcher
[INFO] [stdout]              matcher::ThenMatcher
[INFO] [stdout]              matcher::WildcardMatcher
[INFO] [stdout] note: required by a bound in `matcher::Matcher::new`
[INFO] [stdout]   --> src/matcher/mod.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn new<M: MatcherTrait + 'static>(m: M) -> Matcher {
[INFO] [stdout]    |               ^^^^^^^^^^^^ required by this bound in `Matcher::new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `matcher::Matcher: matcher::MatcherTrait` is not satisfied
[INFO] [stdout]   --> src/matcher/test.rs:19:30
[INFO] [stdout]    |
[INFO] [stdout] 19 |                 Matcher::new(RegexMatcher::new("c"))));
[INFO] [stdout]    |                 ------------ ^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `matcher::MatcherTrait` is not implemented for `matcher::Matcher`
[INFO] [stdout]   --> src/matcher/mod.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Matcher {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: the following other types implement trait `matcher::MatcherTrait`:
[INFO] [stdout]              EmptyMatcher
[INFO] [stdout]              matcher::NotMatcher
[INFO] [stdout]              matcher::OrMatcher
[INFO] [stdout]              matcher::ParenMatcher
[INFO] [stdout]              matcher::RegexMatcher
[INFO] [stdout]              matcher::SkipMatcher
[INFO] [stdout]              matcher::ThenMatcher
[INFO] [stdout]              matcher::WildcardMatcher
[INFO] [stdout] note: required by a bound in `matcher::Matcher::new`
[INFO] [stdout]   --> src/matcher/mod.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn new<M: MatcherTrait + 'static>(m: M) -> Matcher {
[INFO] [stdout]    |               ^^^^^^^^^^^^ required by this bound in `Matcher::new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `matcher::Matcher: matcher::MatcherTrait` is not satisfied
[INFO] [stdout]   --> src/matcher/test.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 16 |           Matcher::new(
[INFO] [stdout]    |           ------------ required by a bound introduced by this call
[INFO] [stdout] 17 | /             ThenMatcher::new(
[INFO] [stdout] 18 | |                 Matcher::new(RegexMatcher::new("b")),
[INFO] [stdout] 19 | |                 Matcher::new(RegexMatcher::new("c"))));
[INFO] [stdout]    | |_____________________________________________________^ unsatisfied trait bound
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `matcher::MatcherTrait` is not implemented for `matcher::Matcher`
[INFO] [stdout]   --> src/matcher/mod.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Matcher {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: the following other types implement trait `matcher::MatcherTrait`:
[INFO] [stdout]              EmptyMatcher
[INFO] [stdout]              matcher::NotMatcher
[INFO] [stdout]              matcher::OrMatcher
[INFO] [stdout]              matcher::ParenMatcher
[INFO] [stdout]              matcher::RegexMatcher
[INFO] [stdout]              matcher::SkipMatcher
[INFO] [stdout]              matcher::ThenMatcher
[INFO] [stdout]              matcher::WildcardMatcher
[INFO] [stdout] note: required by a bound in `matcher::Matcher::new`
[INFO] [stdout]   --> src/matcher/mod.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn new<M: MatcherTrait + 'static>(m: M) -> Matcher {
[INFO] [stdout]    |               ^^^^^^^^^^^^ required by this bound in `Matcher::new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `prefix` on type `SearchResult`
[INFO] [stdout]   --> src/matcher/test.rs:21:18
[INFO] [stdout]    |
[INFO] [stdout] 21 |     assert_eq!(r.prefix, &[format!("a")]);
[INFO] [stdout]    |                  ^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `first_matching_frame`, `first_callee_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `suffix` on type `SearchResult`
[INFO] [stdout]   --> src/matcher/test.rs:22:15
[INFO] [stdout]    |
[INFO] [stdout] 22 |     assert!(r.suffix.is_empty());
[INFO] [stdout]    |               ^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `first_matching_frame`, `first_callee_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `matcher::Matcher: matcher::MatcherTrait` is not satisfied
[INFO] [stdout]   --> src/matcher/test.rs:31:30
[INFO] [stdout]    |
[INFO] [stdout] 31 |                 Matcher::new(RegexMatcher::new("a")),
[INFO] [stdout]    |                 ------------ ^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `matcher::MatcherTrait` is not implemented for `matcher::Matcher`
[INFO] [stdout]   --> src/matcher/mod.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Matcher {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: the following other types implement trait `matcher::MatcherTrait`:
[INFO] [stdout]              EmptyMatcher
[INFO] [stdout]              matcher::NotMatcher
[INFO] [stdout]              matcher::OrMatcher
[INFO] [stdout]              matcher::ParenMatcher
[INFO] [stdout]              matcher::RegexMatcher
[INFO] [stdout]              matcher::SkipMatcher
[INFO] [stdout]              matcher::ThenMatcher
[INFO] [stdout]              matcher::WildcardMatcher
[INFO] [stdout] note: required by a bound in `matcher::Matcher::new`
[INFO] [stdout]   --> src/matcher/mod.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn new<M: MatcherTrait + 'static>(m: M) -> Matcher {
[INFO] [stdout]    |               ^^^^^^^^^^^^ required by this bound in `Matcher::new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `matcher::Matcher: matcher::MatcherTrait` is not satisfied
[INFO] [stdout]   --> src/matcher/test.rs:32:30
[INFO] [stdout]    |
[INFO] [stdout] 32 |                 Matcher::new(RegexMatcher::new("c"))));
[INFO] [stdout]    |                 ------------ ^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `matcher::MatcherTrait` is not implemented for `matcher::Matcher`
[INFO] [stdout]   --> src/matcher/mod.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Matcher {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: the following other types implement trait `matcher::MatcherTrait`:
[INFO] [stdout]              EmptyMatcher
[INFO] [stdout]              matcher::NotMatcher
[INFO] [stdout]              matcher::OrMatcher
[INFO] [stdout]              matcher::ParenMatcher
[INFO] [stdout]              matcher::RegexMatcher
[INFO] [stdout]              matcher::SkipMatcher
[INFO] [stdout]              matcher::ThenMatcher
[INFO] [stdout]              matcher::WildcardMatcher
[INFO] [stdout] note: required by a bound in `matcher::Matcher::new`
[INFO] [stdout]   --> src/matcher/mod.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn new<M: MatcherTrait + 'static>(m: M) -> Matcher {
[INFO] [stdout]    |               ^^^^^^^^^^^^ required by this bound in `Matcher::new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `matcher::Matcher: matcher::MatcherTrait` is not satisfied
[INFO] [stdout]   --> src/matcher/test.rs:30:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |           Matcher::new(
[INFO] [stdout]    |           ------------ required by a bound introduced by this call
[INFO] [stdout] 30 | /             ThenMatcher::new(
[INFO] [stdout] 31 | |                 Matcher::new(RegexMatcher::new("a")),
[INFO] [stdout] 32 | |                 Matcher::new(RegexMatcher::new("c"))));
[INFO] [stdout]    | |_____________________________________________________^ unsatisfied trait bound
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `matcher::MatcherTrait` is not implemented for `matcher::Matcher`
[INFO] [stdout]   --> src/matcher/mod.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Matcher {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: the following other types implement trait `matcher::MatcherTrait`:
[INFO] [stdout]              EmptyMatcher
[INFO] [stdout]              matcher::NotMatcher
[INFO] [stdout]              matcher::OrMatcher
[INFO] [stdout]              matcher::ParenMatcher
[INFO] [stdout]              matcher::RegexMatcher
[INFO] [stdout]              matcher::SkipMatcher
[INFO] [stdout]              matcher::ThenMatcher
[INFO] [stdout]              matcher::WildcardMatcher
[INFO] [stdout] note: required by a bound in `matcher::Matcher::new`
[INFO] [stdout]   --> src/matcher/mod.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn new<M: MatcherTrait + 'static>(m: M) -> Matcher {
[INFO] [stdout]    |               ^^^^^^^^^^^^ required by this bound in `Matcher::new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `matcher::Matcher: matcher::MatcherTrait` is not satisfied
[INFO] [stdout]   --> src/matcher/test.rs:41:30
[INFO] [stdout]    |
[INFO] [stdout] 41 |                 Matcher::new(RegexMatcher::new("a")),
[INFO] [stdout]    |                 ------------ ^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `matcher::MatcherTrait` is not implemented for `matcher::Matcher`
[INFO] [stdout]   --> src/matcher/mod.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Matcher {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: the following other types implement trait `matcher::MatcherTrait`:
[INFO] [stdout]              EmptyMatcher
[INFO] [stdout]              matcher::NotMatcher
[INFO] [stdout]              matcher::OrMatcher
[INFO] [stdout]              matcher::ParenMatcher
[INFO] [stdout]              matcher::RegexMatcher
[INFO] [stdout]              matcher::SkipMatcher
[INFO] [stdout]              matcher::ThenMatcher
[INFO] [stdout]              matcher::WildcardMatcher
[INFO] [stdout] note: required by a bound in `matcher::Matcher::new`
[INFO] [stdout]   --> src/matcher/mod.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn new<M: MatcherTrait + 'static>(m: M) -> Matcher {
[INFO] [stdout]    |               ^^^^^^^^^^^^ required by this bound in `Matcher::new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `matcher::Matcher: matcher::MatcherTrait` is not satisfied
[INFO] [stdout]   --> src/matcher/test.rs:43:34
[INFO] [stdout]    |
[INFO] [stdout] 43 |                     Matcher::new(RegexMatcher::new("c"))))));
[INFO] [stdout]    |                     ------------ ^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `matcher::MatcherTrait` is not implemented for `matcher::Matcher`
[INFO] [stdout]   --> src/matcher/mod.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Matcher {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: the following other types implement trait `matcher::MatcherTrait`:
[INFO] [stdout]              EmptyMatcher
[INFO] [stdout]              matcher::NotMatcher
[INFO] [stdout]              matcher::OrMatcher
[INFO] [stdout]              matcher::ParenMatcher
[INFO] [stdout]              matcher::RegexMatcher
[INFO] [stdout]              matcher::SkipMatcher
[INFO] [stdout]              matcher::ThenMatcher
[INFO] [stdout]              matcher::WildcardMatcher
[INFO] [stdout] note: required by a bound in `matcher::Matcher::new`
[INFO] [stdout]   --> src/matcher/mod.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn new<M: MatcherTrait + 'static>(m: M) -> Matcher {
[INFO] [stdout]    |               ^^^^^^^^^^^^ required by this bound in `Matcher::new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `matcher::Matcher: matcher::MatcherTrait` is not satisfied
[INFO] [stdout]   --> src/matcher/test.rs:42:30
[INFO] [stdout]    |
[INFO] [stdout] 42 |                   Matcher::new(SkipMatcher::new(
[INFO] [stdout]    |  _________________------------_^
[INFO] [stdout]    | |                 |
[INFO] [stdout]    | |                 required by a bound introduced by this call
[INFO] [stdout] 43 | |                     Matcher::new(RegexMatcher::new("c"))))));
[INFO] [stdout]    | |_________________________________________________________^ unsatisfied trait bound
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `matcher::MatcherTrait` is not implemented for `matcher::Matcher`
[INFO] [stdout]   --> src/matcher/mod.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Matcher {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: the following other types implement trait `matcher::MatcherTrait`:
[INFO] [stdout]              EmptyMatcher
[INFO] [stdout]              matcher::NotMatcher
[INFO] [stdout]              matcher::OrMatcher
[INFO] [stdout]              matcher::ParenMatcher
[INFO] [stdout]              matcher::RegexMatcher
[INFO] [stdout]              matcher::SkipMatcher
[INFO] [stdout]              matcher::ThenMatcher
[INFO] [stdout]              matcher::WildcardMatcher
[INFO] [stdout] note: required by a bound in `matcher::Matcher::new`
[INFO] [stdout]   --> src/matcher/mod.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn new<M: MatcherTrait + 'static>(m: M) -> Matcher {
[INFO] [stdout]    |               ^^^^^^^^^^^^ required by this bound in `Matcher::new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `matcher::Matcher: matcher::MatcherTrait` is not satisfied
[INFO] [stdout]   --> src/matcher/test.rs:40:13
[INFO] [stdout]    |
[INFO] [stdout] 39 |           Matcher::new(
[INFO] [stdout]    |           ------------ required by a bound introduced by this call
[INFO] [stdout] 40 | /             ThenMatcher::new(
[INFO] [stdout] 41 | |                 Matcher::new(RegexMatcher::new("a")),
[INFO] [stdout] 42 | |                 Matcher::new(SkipMatcher::new(
[INFO] [stdout] 43 | |                     Matcher::new(RegexMatcher::new("c"))))));
[INFO] [stdout]    | |___________________________________________________________^ unsatisfied trait bound
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `matcher::MatcherTrait` is not implemented for `matcher::Matcher`
[INFO] [stdout]   --> src/matcher/mod.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Matcher {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: the following other types implement trait `matcher::MatcherTrait`:
[INFO] [stdout]              EmptyMatcher
[INFO] [stdout]              matcher::NotMatcher
[INFO] [stdout]              matcher::OrMatcher
[INFO] [stdout]              matcher::ParenMatcher
[INFO] [stdout]              matcher::RegexMatcher
[INFO] [stdout]              matcher::SkipMatcher
[INFO] [stdout]              matcher::ThenMatcher
[INFO] [stdout]              matcher::WildcardMatcher
[INFO] [stdout] note: required by a bound in `matcher::Matcher::new`
[INFO] [stdout]   --> src/matcher/mod.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn new<M: MatcherTrait + 'static>(m: M) -> Matcher {
[INFO] [stdout]    |               ^^^^^^^^^^^^ required by this bound in `Matcher::new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `prefix` on type `SearchResult`
[INFO] [stdout]   --> src/matcher/test.rs:46:24
[INFO] [stdout]    |
[INFO] [stdout] 46 |              .unwrap().prefix.len() == 0);
[INFO] [stdout]    |                        ^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `first_matching_frame`, `first_callee_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `prefix` on type `SearchResult`
[INFO] [stdout]   --> src/matcher/test.rs:49:24
[INFO] [stdout]    |
[INFO] [stdout] 49 |              .unwrap().prefix.len() == 1);
[INFO] [stdout]    |                        ^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `first_matching_frame`, `first_callee_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `prefix` on type `SearchResult`
[INFO] [stdout]   --> src/matcher/test.rs:52:24
[INFO] [stdout]    |
[INFO] [stdout] 52 |              .unwrap().prefix.len() == 1);
[INFO] [stdout]    |                        ^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `first_matching_frame`, `first_callee_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `prefix` on type `SearchResult`
[INFO] [stdout]   --> src/matcher/test.rs:60:24
[INFO] [stdout]    |
[INFO] [stdout] 60 |              .unwrap().prefix.len() == 0);
[INFO] [stdout]    |                        ^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `first_matching_frame`, `first_callee_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `prefix` on type `SearchResult`
[INFO] [stdout]   --> src/matcher/test.rs:63:24
[INFO] [stdout]    |
[INFO] [stdout] 63 |              .unwrap().prefix.len() == 1);
[INFO] [stdout]    |                        ^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `first_matching_frame`, `first_callee_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `prefix` on type `SearchResult`
[INFO] [stdout]   --> src/matcher/test.rs:66:24
[INFO] [stdout]    |
[INFO] [stdout] 66 |              .unwrap().prefix.len() == 1);
[INFO] [stdout]    |                        ^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `first_matching_frame`, `first_callee_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `prefix` on type `SearchResult`
[INFO] [stdout]   --> src/matcher/test.rs:77:24
[INFO] [stdout]    |
[INFO] [stdout] 77 |              .unwrap().prefix.len() == 0);
[INFO] [stdout]    |                        ^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `first_matching_frame`, `first_callee_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `len` found for struct `TraceArgs<'a>` in the current scope
[INFO] [stdout]  --> src/trace/test.rs:9:34
[INFO] [stdout]   |
[INFO] [stdout] 9 |         frame_counts.push(frames.len());
[INFO] [stdout]   |                                  ^^^ method not found in `TraceArgs<'_>`
[INFO] [stdout]   |
[INFO] [stdout]  ::: src/trace/mod.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct TraceArgs<'a> {
[INFO] [stdout]   | ------------------------ method `len` not found for this struct
[INFO] [stdout]   |
[INFO] [stdout]   = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]   = note: the following traits define an item `len`, perhaps you need to implement one of them:
[INFO] [stdout]           candidate #1: `ExactSizeIterator`
[INFO] [stdout]           candidate #2: `aho_corasick::autiter::Automaton`
[INFO] [stdout]           candidate #3: `regex::internal::Input`
[INFO] [stdout] help: some of the expressions' fields have a method of the same name
[INFO] [stdout]   |
[INFO] [stdout] 9 |         frame_counts.push(frames.header.len());
[INFO] [stdout]   |                                  +++++++
[INFO] [stdout] 9 |         frame_counts.push(frames.process_name.len());
[INFO] [stdout]   |                                  +++++++++++++
[INFO] [stdout] 9 |         frame_counts.push(frames.stack.len());
[INFO] [stdout]   |                                  ++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/trace/test.rs:8:16
[INFO] [stdout]    |
[INFO] [stdout]  8 |     each_trace(cursor, |frames| {
[INFO] [stdout]    |     ---------- ^^^^^^ expected `bool`, found `Cursor<&[u8]>`
[INFO] [stdout]    |     |
[INFO] [stdout]    |     arguments to this function are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `bool`
[INFO] [stdout]             found struct `std::io::Cursor<&[u8]>`
[INFO] [stdout] note: function defined here
[INFO] [stdout]   --> src/trace/mod.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn each_trace<F>(from_stdin: bool, callback: F) -> io::Result<()>
[INFO] [stdout]    |        ^^^^^^^^^^    ----------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: a method with this name may be added to the standard library in the future
[INFO] [stdout]   --> src/trace/mod.rs:64:26
[INFO] [stdout]    |
[INFO] [stdout] 64 |                         .intersperse(" ")
[INFO] [stdout]    |                          ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: once this associated item is added to the standard library, the ambiguity may cause an error or change in behavior!
[INFO] [stdout]    = note: for more information, see issue #48919 <https://github.com/rust-lang/rust/issues/48919>
[INFO] [stdout]    = help: call with fully qualified syntax `itertools::Itertools::intersperse(...)` to keep using the current method
[INFO] [stdout]    = note: `#[warn(unstable_name_collisions)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0308, E0599, E0609.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `perf-focus` (bin "perf-focus" test) due to 24 previous errors; 27 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "88027b60f95924cc40dde0a63ddec3b3d5b194df8e869ee6f3ee7296bf1e75d2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "88027b60f95924cc40dde0a63ddec3b3d5b194df8e869ee6f3ee7296bf1e75d2", kill_on_drop: false }`
[INFO] [stdout] 88027b60f95924cc40dde0a63ddec3b3d5b194df8e869ee6f3ee7296bf1e75d2
