[INFO] fetching crate gj 0.2.0...
[INFO] testing gj-0.2.0 against master#c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 for pr-146098-7
[INFO] extracting crate gj 0.2.0 into /workspace/builds/worker-1-tc1/source
[INFO] started tweaking crates.io crate gj 0.2.0
[INFO] finished tweaking crates.io crate gj 0.2.0
[INFO] tweaked toml for crates.io crate gj 0.2.0 written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate gj 0.2.0 on toolchain c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "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" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "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-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 90047b9ec661f5bfbacecdfaf23d2fa09223f141178489f21d1a004988de9e8e
[INFO] running `Command { std: "docker" "start" "-a" "90047b9ec661f5bfbacecdfaf23d2fa09223f141178489f21d1a004988de9e8e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "90047b9ec661f5bfbacecdfaf23d2fa09223f141178489f21d1a004988de9e8e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "90047b9ec661f5bfbacecdfaf23d2fa09223f141178489f21d1a004988de9e8e", kill_on_drop: false }`
[INFO] [stdout] 90047b9ec661f5bfbacecdfaf23d2fa09223f141178489f21d1a004988de9e8e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2f10c32abe62ce5d1b2a248245c3d06bf8ffe07301b046fd7fa350a882e26959
[INFO] running `Command { std: "docker" "start" "-a" "2f10c32abe62ce5d1b2a248245c3d06bf8ffe07301b046fd7fa350a882e26959", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling gj v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/lib.rs:220:21
[INFO] [stdout]     |
[INFO] [stdout] 220 |                     try!(event_source.wait());
[INFO] [stdout]     |                     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/private/promise_node.rs:35:21
[INFO] [stdout]    |
[INFO] [stdout] 35 |     dependency: Box<PromiseNode<DepT, E>>,
[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] 35 |     dependency: Box<dyn PromiseNode<DepT, E>>,
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:101:15
[INFO] [stdout]     |
[INFO] [stdout] 101 |     Step1(Box<PromiseNode<Promise<T, E>, E>>, Option<GuardedEventHandle>, Option<Weak<RefCell<ChainState<T, E>>>>),
[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] 101 |     Step1(Box<dyn PromiseNode<Promise<T, E>, E>>, Option<GuardedEventHandle>, Option<Weak<RefCell<ChainState<T, E>>>>),
[INFO] [stdout]     |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:102:15
[INFO] [stdout]     |
[INFO] [stdout] 102 |     Step2(Box<PromiseNode<T, E>>, Option<Weak<RefCell<ChainState<T, E>>>>),
[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] 102 |     Step2(Box<dyn PromiseNode<T, E>>, Option<Weak<RefCell<ChainState<T, E>>>>),
[INFO] [stdout]     |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:273:17
[INFO] [stdout]     |
[INFO] [stdout] 273 |     Waiting(Box<PromiseNode<T, E>>, EventDropper),
[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] 273 |     Waiting(Box<dyn PromiseNode<T, E>>, EventDropper),
[INFO] [stdout]     |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:377:23
[INFO] [stdout]     |
[INFO] [stdout] 377 |     left: Option<(Box<PromiseNode<T, E>>, EventDropper)>,
[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] 377 |     left: Option<(Box<dyn PromiseNode<T, E>>, EventDropper)>,
[INFO] [stdout]     |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:378:24
[INFO] [stdout]     |
[INFO] [stdout] 378 |     right: Option<(Box<PromiseNode<T, E>>, EventDropper)>,
[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] 378 |     right: Option<(Box<dyn PromiseNode<T, E>>, EventDropper)>,
[INFO] [stdout]     |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:438:17
[INFO] [stdout]     |
[INFO] [stdout] 438 |     Waiting(Box<PromiseNode<T, E>>),
[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] 438 |     Waiting(Box<dyn PromiseNode<T, E>>),
[INFO] [stdout]     |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:121:27
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub event: Option<Box<Event>>,
[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] 121 |     pub event: Option<Box<dyn Event>>,
[INFO] [stdout]     |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:281:28
[INFO] [stdout]     |
[INFO] [stdout] 281 |     reaper: Rc<RefCell<Box<TaskReaper<T, E>>>>,
[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] 281 |     reaper: Rc<RefCell<Box<dyn TaskReaper<T, E>>>>,
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:308:35
[INFO] [stdout]     |
[INFO] [stdout] 308 |     weak_reaper: Weak<RefCell<Box<TaskReaper<T, E>>>>,
[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] 308 |     weak_reaper: Weak<RefCell<Box<dyn TaskReaper<T, E>>>>,
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:310:22
[INFO] [stdout]     |
[INFO] [stdout] 310 |     node: Option<Box<PromiseNode<T, E>>>,
[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] 310 |     node: Option<Box<dyn PromiseNode<T, E>>>,
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:80:15
[INFO] [stdout]    |
[INFO] [stdout] 80 |     node: Box<PromiseNode<T, E>>,
[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] 80 |     node: Box<dyn PromiseNode<T, E>>,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/private/promise_node.rs:42:32
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn new(dependency: Box<PromiseNode<DepT, E>>, func: Func) -> Transform<T, E, E1, DepT, Func> {
[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] 42 |     pub fn new(dependency: Box<dyn PromiseNode<DepT, E>>, func: Func) -> Transform<T, E, E1, DepT, Func> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:176:31
[INFO] [stdout]     |
[INFO] [stdout] 176 |     pub fn new(mut inner: Box<PromiseNode<Promise<T, E>, E>>) -> Chain<T, E> {
[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] 176 |     pub fn new(mut inner: Box<dyn PromiseNode<Promise<T, E>, E>>) -> Chain<T, E> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:386:30
[INFO] [stdout]     |
[INFO] [stdout] 386 |     pub fn new(mut left: Box<PromiseNode<T, E>>, mut right: Box<PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[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] 386 |     pub fn new(mut left: Box<dyn PromiseNode<T, E>>, mut right: Box<PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[INFO] [stdout]     |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:386:65
[INFO] [stdout]     |
[INFO] [stdout] 386 |     pub fn new(mut left: Box<PromiseNode<T, E>>, mut right: Box<PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[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] 386 |     pub fn new(mut left: Box<PromiseNode<T, E>>, mut right: Box<dyn PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[INFO] [stdout]     |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:453:31
[INFO] [stdout]     |
[INFO] [stdout] 453 |     pub fn new(mut inner: Box<PromiseNode<T, E>>) -> ForkHub<T, E> {
[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] 453 |     pub fn new(mut inner: Box<dyn PromiseNode<T, E>>) -> ForkHub<T, E> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:286:28
[INFO] [stdout]     |
[INFO] [stdout] 286 |     pub fn new(reaper: Box<TaskReaper<T, E>>) -> TaskSetImpl<T, E> {
[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] 286 |     pub fn new(reaper: Box<dyn TaskReaper<T, E>>) -> TaskSetImpl<T, E> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:293:39
[INFO] [stdout]     |
[INFO] [stdout] 293 |       pub fn add(&self, mut node: Box<PromiseNode<T, E>>) {
[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] 293 |       pub fn add(&self, mut node: Box<dyn PromiseNode<T, E>>) {
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/lib.rs:204:74
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub fn wait<E1>(mut self, wait_scope: &WaitScope, event_source: &mut EventPort<E1>) -> Result<T, E>
[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] 204 |     pub fn wait<E1>(mut self, wait_scope: &WaitScope, event_source: &mut dyn EventPort<E1>) -> Result<T, E>
[INFO] [stdout]     |                                                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/lib.rs:467:28
[INFO] [stdout]     |
[INFO] [stdout] 467 |     pub fn new(reaper: Box<TaskReaper<T, E>>) -> TaskSet<T, E> {
[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] 467 |     pub fn new(reaper: Box<dyn TaskReaper<T, E>>) -> TaskSet<T, E> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/private/mod.rs:97:34
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub fn set(&self, event: Box<Event>) {
[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] 97 |     pub fn set(&self, event: Box<dyn Event>) {
[INFO] [stdout]    |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:459:73
[INFO] [stdout]     |
[INFO] [stdout] 459 |         let event = Box::new(ForkEvent { state: state.clone() }) as Box<Event>;
[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] 459 |         let event = Box::new(ForkEvent { state: state.clone() }) as Box<dyn Event>;
[INFO] [stdout]     |                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Event`
[INFO] [stdout]   --> src/lib.rs:54:29
[INFO] [stdout]    |
[INFO] [stdout] 54 | use private::{promise_node, Event, BoolEvent, PromiseAndFulfillerHub, PromiseAndFulfillerWrapper,
[INFO] [stdout]    |                             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/lib.rs:207:9
[INFO] [stdout]     |
[INFO] [stdout] 207 |         drop(wait_scope);
[INFO] [stdout]     |         ^^^^^----------^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              argument has type `&WaitScope`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 207 -         drop(wait_scope);
[INFO] [stdout] 207 +         let _ = wait_scope;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/private/promise_node.rs:157:29
[INFO] [stdout]     |
[INFO] [stdout] 157 | / ...                   ::std::mem::replace(&mut *strong_self_ptr.borrow_mut(),
[INFO] [stdout] 158 | | ...                                       ChainState::Step2(inner, None));
[INFO] [stdout]     | |_________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 157 |                             let _ = ::std::mem::replace(&mut *strong_self_ptr.borrow_mut(),
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.44s
[INFO] running `Command { std: "docker" "inspect" "2f10c32abe62ce5d1b2a248245c3d06bf8ffe07301b046fd7fa350a882e26959", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2f10c32abe62ce5d1b2a248245c3d06bf8ffe07301b046fd7fa350a882e26959", kill_on_drop: false }`
[INFO] [stdout] 2f10c32abe62ce5d1b2a248245c3d06bf8ffe07301b046fd7fa350a882e26959
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 799ac7932bc2544e92e55c53d571baa98af5e6dc6bd205b631530a177341727b
[INFO] running `Command { std: "docker" "start" "-a" "799ac7932bc2544e92e55c53d571baa98af5e6dc6bd205b631530a177341727b", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/lib.rs:220:21
[INFO] [stdout]     |
[INFO] [stdout] 220 |                     try!(event_source.wait());
[INFO] [stdout]     |                     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/private/promise_node.rs:35:21
[INFO] [stdout]    |
[INFO] [stdout] 35 |     dependency: Box<PromiseNode<DepT, E>>,
[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] 35 |     dependency: Box<dyn PromiseNode<DepT, E>>,
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:101:15
[INFO] [stdout]     |
[INFO] [stdout] 101 |     Step1(Box<PromiseNode<Promise<T, E>, E>>, Option<GuardedEventHandle>, Option<Weak<RefCell<ChainState<T, E>>>>),
[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] 101 |     Step1(Box<dyn PromiseNode<Promise<T, E>, E>>, Option<GuardedEventHandle>, Option<Weak<RefCell<ChainState<T, E>>>>),
[INFO] [stdout]     |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:102:15
[INFO] [stdout]     |
[INFO] [stdout] 102 |     Step2(Box<PromiseNode<T, E>>, Option<Weak<RefCell<ChainState<T, E>>>>),
[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] 102 |     Step2(Box<dyn PromiseNode<T, E>>, Option<Weak<RefCell<ChainState<T, E>>>>),
[INFO] [stdout]     |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:273:17
[INFO] [stdout]     |
[INFO] [stdout] 273 |     Waiting(Box<PromiseNode<T, E>>, EventDropper),
[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] 273 |     Waiting(Box<dyn PromiseNode<T, E>>, EventDropper),
[INFO] [stdout]     |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:377:23
[INFO] [stdout]     |
[INFO] [stdout] 377 |     left: Option<(Box<PromiseNode<T, E>>, EventDropper)>,
[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] 377 |     left: Option<(Box<dyn PromiseNode<T, E>>, EventDropper)>,
[INFO] [stdout]     |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:378:24
[INFO] [stdout]     |
[INFO] [stdout] 378 |     right: Option<(Box<PromiseNode<T, E>>, EventDropper)>,
[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] 378 |     right: Option<(Box<dyn PromiseNode<T, E>>, EventDropper)>,
[INFO] [stdout]     |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:438:17
[INFO] [stdout]     |
[INFO] [stdout] 438 |     Waiting(Box<PromiseNode<T, E>>),
[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] 438 |     Waiting(Box<dyn PromiseNode<T, E>>),
[INFO] [stdout]     |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:121:27
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub event: Option<Box<Event>>,
[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] 121 |     pub event: Option<Box<dyn Event>>,
[INFO] [stdout]     |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:281:28
[INFO] [stdout]     |
[INFO] [stdout] 281 |     reaper: Rc<RefCell<Box<TaskReaper<T, E>>>>,
[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] 281 |     reaper: Rc<RefCell<Box<dyn TaskReaper<T, E>>>>,
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:308:35
[INFO] [stdout]     |
[INFO] [stdout] 308 |     weak_reaper: Weak<RefCell<Box<TaskReaper<T, E>>>>,
[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] 308 |     weak_reaper: Weak<RefCell<Box<dyn TaskReaper<T, E>>>>,
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:310:22
[INFO] [stdout]     |
[INFO] [stdout] 310 |     node: Option<Box<PromiseNode<T, E>>>,
[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] 310 |     node: Option<Box<dyn PromiseNode<T, E>>>,
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:80:15
[INFO] [stdout]    |
[INFO] [stdout] 80 |     node: Box<PromiseNode<T, E>>,
[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] 80 |     node: Box<dyn PromiseNode<T, E>>,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/private/promise_node.rs:42:32
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn new(dependency: Box<PromiseNode<DepT, E>>, func: Func) -> Transform<T, E, E1, DepT, Func> {
[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] 42 |     pub fn new(dependency: Box<dyn PromiseNode<DepT, E>>, func: Func) -> Transform<T, E, E1, DepT, Func> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:176:31
[INFO] [stdout]     |
[INFO] [stdout] 176 |     pub fn new(mut inner: Box<PromiseNode<Promise<T, E>, E>>) -> Chain<T, E> {
[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] 176 |     pub fn new(mut inner: Box<dyn PromiseNode<Promise<T, E>, E>>) -> Chain<T, E> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:386:30
[INFO] [stdout]     |
[INFO] [stdout] 386 |     pub fn new(mut left: Box<PromiseNode<T, E>>, mut right: Box<PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[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] 386 |     pub fn new(mut left: Box<dyn PromiseNode<T, E>>, mut right: Box<PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[INFO] [stdout]     |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:386:65
[INFO] [stdout]     |
[INFO] [stdout] 386 |     pub fn new(mut left: Box<PromiseNode<T, E>>, mut right: Box<PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[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] 386 |     pub fn new(mut left: Box<PromiseNode<T, E>>, mut right: Box<dyn PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[INFO] [stdout]     |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:453:31
[INFO] [stdout]     |
[INFO] [stdout] 453 |     pub fn new(mut inner: Box<PromiseNode<T, E>>) -> ForkHub<T, E> {
[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] 453 |     pub fn new(mut inner: Box<dyn PromiseNode<T, E>>) -> ForkHub<T, E> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:286:28
[INFO] [stdout]     |
[INFO] [stdout] 286 |     pub fn new(reaper: Box<TaskReaper<T, E>>) -> TaskSetImpl<T, E> {
[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] 286 |     pub fn new(reaper: Box<dyn TaskReaper<T, E>>) -> TaskSetImpl<T, E> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:293:39
[INFO] [stdout]     |
[INFO] [stdout] 293 |       pub fn add(&self, mut node: Box<PromiseNode<T, E>>) {
[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] 293 |       pub fn add(&self, mut node: Box<dyn PromiseNode<T, E>>) {
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/lib.rs:204:74
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub fn wait<E1>(mut self, wait_scope: &WaitScope, event_source: &mut EventPort<E1>) -> Result<T, E>
[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] 204 |     pub fn wait<E1>(mut self, wait_scope: &WaitScope, event_source: &mut dyn EventPort<E1>) -> Result<T, E>
[INFO] [stdout]     |                                                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/lib.rs:467:28
[INFO] [stdout]     |
[INFO] [stdout] 467 |     pub fn new(reaper: Box<TaskReaper<T, E>>) -> TaskSet<T, E> {
[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] 467 |     pub fn new(reaper: Box<dyn TaskReaper<T, E>>) -> TaskSet<T, E> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/private/mod.rs:97:34
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub fn set(&self, event: Box<Event>) {
[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] 97 |     pub fn set(&self, event: Box<dyn Event>) {
[INFO] [stdout]    |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:459:73
[INFO] [stdout]     |
[INFO] [stdout] 459 |         let event = Box::new(ForkEvent { state: state.clone() }) as Box<Event>;
[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] 459 |         let event = Box::new(ForkEvent { state: state.clone() }) as Box<dyn Event>;
[INFO] [stdout]     |                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Event`
[INFO] [stdout]   --> src/lib.rs:54:29
[INFO] [stdout]    |
[INFO] [stdout] 54 | use private::{promise_node, Event, BoolEvent, PromiseAndFulfillerHub, PromiseAndFulfillerWrapper,
[INFO] [stdout]    |                             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/lib.rs:207:9
[INFO] [stdout]     |
[INFO] [stdout] 207 |         drop(wait_scope);
[INFO] [stdout]     |         ^^^^^----------^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              argument has type `&WaitScope`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 207 -         drop(wait_scope);
[INFO] [stdout] 207 +         let _ = wait_scope;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/private/promise_node.rs:157:29
[INFO] [stdout]     |
[INFO] [stdout] 157 | / ...                   ::std::mem::replace(&mut *strong_self_ptr.borrow_mut(),
[INFO] [stdout] 158 | | ...                                       ChainState::Step2(inner, None));
[INFO] [stdout]     | |_________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 157 |                             let _ = ::std::mem::replace(&mut *strong_self_ptr.borrow_mut(),
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling gj v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> tests/promises.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         try!(promise.wait(wait_scope, &mut ClosedEventPort(())));
[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]   --> tests/promises.rs:54:21
[INFO] [stdout]    |
[INFO] [stdout] 54 |         let value = try!(promise.wait(wait_scope, &mut ClosedEventPort(())));
[INFO] [stdout]    |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> tests/promises.rs:125:21
[INFO] [stdout]     |
[INFO] [stdout] 125 |         let value = try!(promise3.wait(wait_scope, &mut ClosedEventPort(())));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> tests/promises.rs:135:49
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let promise2: Promise<&'static str, Box<::std::error::Error>> =
[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] 135 |         let promise2: Promise<&'static str, Box<dyn (::std::error::Error)>> =
[INFO] [stdout]     |                                                 +++++                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/lib.rs:220:21
[INFO] [stdout]     |
[INFO] [stdout] 220 |                     try!(event_source.wait());
[INFO] [stdout]     |                     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/private/promise_node.rs:35:21
[INFO] [stdout]    |
[INFO] [stdout] 35 |     dependency: Box<PromiseNode<DepT, E>>,
[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] 35 |     dependency: Box<dyn PromiseNode<DepT, E>>,
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:101:15
[INFO] [stdout]     |
[INFO] [stdout] 101 |     Step1(Box<PromiseNode<Promise<T, E>, E>>, Option<GuardedEventHandle>, Option<Weak<RefCell<ChainState<T, E>>>>),
[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] 101 |     Step1(Box<dyn PromiseNode<Promise<T, E>, E>>, Option<GuardedEventHandle>, Option<Weak<RefCell<ChainState<T, E>>>>),
[INFO] [stdout]     |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:102:15
[INFO] [stdout]     |
[INFO] [stdout] 102 |     Step2(Box<PromiseNode<T, E>>, Option<Weak<RefCell<ChainState<T, E>>>>),
[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] 102 |     Step2(Box<dyn PromiseNode<T, E>>, Option<Weak<RefCell<ChainState<T, E>>>>),
[INFO] [stdout]     |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:273:17
[INFO] [stdout]     |
[INFO] [stdout] 273 |     Waiting(Box<PromiseNode<T, E>>, EventDropper),
[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] 273 |     Waiting(Box<dyn PromiseNode<T, E>>, EventDropper),
[INFO] [stdout]     |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:377:23
[INFO] [stdout]     |
[INFO] [stdout] 377 |     left: Option<(Box<PromiseNode<T, E>>, EventDropper)>,
[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] 377 |     left: Option<(Box<dyn PromiseNode<T, E>>, EventDropper)>,
[INFO] [stdout]     |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:378:24
[INFO] [stdout]     |
[INFO] [stdout] 378 |     right: Option<(Box<PromiseNode<T, E>>, EventDropper)>,
[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] 378 |     right: Option<(Box<dyn PromiseNode<T, E>>, EventDropper)>,
[INFO] [stdout]     |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:438:17
[INFO] [stdout]     |
[INFO] [stdout] 438 |     Waiting(Box<PromiseNode<T, E>>),
[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] 438 |     Waiting(Box<dyn PromiseNode<T, E>>),
[INFO] [stdout]     |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:121:27
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub event: Option<Box<Event>>,
[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] 121 |     pub event: Option<Box<dyn Event>>,
[INFO] [stdout]     |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:281:28
[INFO] [stdout]     |
[INFO] [stdout] 281 |     reaper: Rc<RefCell<Box<TaskReaper<T, E>>>>,
[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] 281 |     reaper: Rc<RefCell<Box<dyn TaskReaper<T, E>>>>,
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:308:35
[INFO] [stdout]     |
[INFO] [stdout] 308 |     weak_reaper: Weak<RefCell<Box<TaskReaper<T, E>>>>,
[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] 308 |     weak_reaper: Weak<RefCell<Box<dyn TaskReaper<T, E>>>>,
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:310:22
[INFO] [stdout]     |
[INFO] [stdout] 310 |     node: Option<Box<PromiseNode<T, E>>>,
[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] 310 |     node: Option<Box<dyn PromiseNode<T, E>>>,
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:80:15
[INFO] [stdout]    |
[INFO] [stdout] 80 |     node: Box<PromiseNode<T, E>>,
[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] 80 |     node: Box<dyn PromiseNode<T, E>>,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/private/promise_node.rs:42:32
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn new(dependency: Box<PromiseNode<DepT, E>>, func: Func) -> Transform<T, E, E1, DepT, Func> {
[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] 42 |     pub fn new(dependency: Box<dyn PromiseNode<DepT, E>>, func: Func) -> Transform<T, E, E1, DepT, Func> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:176:31
[INFO] [stdout]     |
[INFO] [stdout] 176 |     pub fn new(mut inner: Box<PromiseNode<Promise<T, E>, E>>) -> Chain<T, E> {
[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] 176 |     pub fn new(mut inner: Box<dyn PromiseNode<Promise<T, E>, E>>) -> Chain<T, E> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:386:30
[INFO] [stdout]     |
[INFO] [stdout] 386 |     pub fn new(mut left: Box<PromiseNode<T, E>>, mut right: Box<PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[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] 386 |     pub fn new(mut left: Box<dyn PromiseNode<T, E>>, mut right: Box<PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[INFO] [stdout]     |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:386:65
[INFO] [stdout]     |
[INFO] [stdout] 386 |     pub fn new(mut left: Box<PromiseNode<T, E>>, mut right: Box<PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[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] 386 |     pub fn new(mut left: Box<PromiseNode<T, E>>, mut right: Box<dyn PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[INFO] [stdout]     |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:453:31
[INFO] [stdout]     |
[INFO] [stdout] 453 |     pub fn new(mut inner: Box<PromiseNode<T, E>>) -> ForkHub<T, E> {
[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] 453 |     pub fn new(mut inner: Box<dyn PromiseNode<T, E>>) -> ForkHub<T, E> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:286:28
[INFO] [stdout]     |
[INFO] [stdout] 286 |     pub fn new(reaper: Box<TaskReaper<T, E>>) -> TaskSetImpl<T, E> {
[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] 286 |     pub fn new(reaper: Box<dyn TaskReaper<T, E>>) -> TaskSetImpl<T, E> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/mod.rs:293:39
[INFO] [stdout]     |
[INFO] [stdout] 293 |       pub fn add(&self, mut node: Box<PromiseNode<T, E>>) {
[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] 293 |       pub fn add(&self, mut node: Box<dyn PromiseNode<T, E>>) {
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/lib.rs:204:74
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub fn wait<E1>(mut self, wait_scope: &WaitScope, event_source: &mut EventPort<E1>) -> Result<T, E>
[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] 204 |     pub fn wait<E1>(mut self, wait_scope: &WaitScope, event_source: &mut dyn EventPort<E1>) -> Result<T, E>
[INFO] [stdout]     |                                                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/lib.rs:467:28
[INFO] [stdout]     |
[INFO] [stdout] 467 |     pub fn new(reaper: Box<TaskReaper<T, E>>) -> TaskSet<T, E> {
[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] 467 |     pub fn new(reaper: Box<dyn TaskReaper<T, E>>) -> TaskSet<T, E> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/private/mod.rs:97:34
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub fn set(&self, event: Box<Event>) {
[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] 97 |     pub fn set(&self, event: Box<dyn Event>) {
[INFO] [stdout]    |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/private/promise_node.rs:459:73
[INFO] [stdout]     |
[INFO] [stdout] 459 |         let event = Box::new(ForkEvent { state: state.clone() }) as Box<Event>;
[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] 459 |         let event = Box::new(ForkEvent { state: state.clone() }) as Box<dyn Event>;
[INFO] [stdout]     |                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Event`
[INFO] [stdout]   --> src/lib.rs:54:29
[INFO] [stdout]    |
[INFO] [stdout] 54 | use private::{promise_node, Event, BoolEvent, PromiseAndFulfillerHub, PromiseAndFulfillerWrapper,
[INFO] [stdout]    |                             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/lib.rs:207:9
[INFO] [stdout]     |
[INFO] [stdout] 207 |         drop(wait_scope);
[INFO] [stdout]     |         ^^^^^----------^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              argument has type `&WaitScope`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 207 -         drop(wait_scope);
[INFO] [stdout] 207 +         let _ = wait_scope;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> src/private/promise_node.rs:157:29
[INFO] [stdout]     |
[INFO] [stdout] 157 | / ...                   ::std::mem::replace(&mut *strong_self_ptr.borrow_mut(),
[INFO] [stdout] 158 | | ...                                       ChainState::Step2(inner, None));
[INFO] [stdout]     | |_________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 157 |                             let _ = ::std::mem::replace(&mut *strong_self_ptr.borrow_mut(),
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.44s
[INFO] running `Command { std: "docker" "inspect" "799ac7932bc2544e92e55c53d571baa98af5e6dc6bd205b631530a177341727b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "799ac7932bc2544e92e55c53d571baa98af5e6dc6bd205b631530a177341727b", kill_on_drop: false }`
[INFO] [stdout] 799ac7932bc2544e92e55c53d571baa98af5e6dc6bd205b631530a177341727b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 74233e423dff15e9986a8f22391c5185b6ed63f12b89f7184d5261e06994fb21
[INFO] running `Command { std: "docker" "start" "-a" "74233e423dff15e9986a8f22391c5185b6ed63f12b89f7184d5261e06994fb21", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/lib.rs:220:21
[INFO] [stderr]     |
[INFO] [stderr] 220 |                     try!(event_source.wait());
[INFO] [stderr]     |                     ^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/private/promise_node.rs:35:21
[INFO] [stderr]    |
[INFO] [stderr] 35 |     dependency: Box<PromiseNode<DepT, E>>,
[INFO] [stderr]    |                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 35 |     dependency: Box<dyn PromiseNode<DepT, E>>,
[INFO] [stderr]    |                     +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/promise_node.rs:101:15
[INFO] [stderr]     |
[INFO] [stderr] 101 |     Step1(Box<PromiseNode<Promise<T, E>, E>>, Option<GuardedEventHandle>, Option<Weak<RefCell<ChainState<T, E>>>>),
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 101 |     Step1(Box<dyn PromiseNode<Promise<T, E>, E>>, Option<GuardedEventHandle>, Option<Weak<RefCell<ChainState<T, E>>>>),
[INFO] [stderr]     |               +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/promise_node.rs:102:15
[INFO] [stderr]     |
[INFO] [stderr] 102 |     Step2(Box<PromiseNode<T, E>>, Option<Weak<RefCell<ChainState<T, E>>>>),
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 102 |     Step2(Box<dyn PromiseNode<T, E>>, Option<Weak<RefCell<ChainState<T, E>>>>),
[INFO] [stderr]     |               +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/promise_node.rs:273:17
[INFO] [stderr]     |
[INFO] [stderr] 273 |     Waiting(Box<PromiseNode<T, E>>, EventDropper),
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 273 |     Waiting(Box<dyn PromiseNode<T, E>>, EventDropper),
[INFO] [stderr]     |                 +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/promise_node.rs:377:23
[INFO] [stderr]     |
[INFO] [stderr] 377 |     left: Option<(Box<PromiseNode<T, E>>, EventDropper)>,
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 377 |     left: Option<(Box<dyn PromiseNode<T, E>>, EventDropper)>,
[INFO] [stderr]     |                       +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/promise_node.rs:378:24
[INFO] [stderr]     |
[INFO] [stderr] 378 |     right: Option<(Box<PromiseNode<T, E>>, EventDropper)>,
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 378 |     right: Option<(Box<dyn PromiseNode<T, E>>, EventDropper)>,
[INFO] [stderr]     |                        +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/promise_node.rs:438:17
[INFO] [stderr]     |
[INFO] [stderr] 438 |     Waiting(Box<PromiseNode<T, E>>),
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 438 |     Waiting(Box<dyn PromiseNode<T, E>>),
[INFO] [stderr]     |                 +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/mod.rs:121:27
[INFO] [stderr]     |
[INFO] [stderr] 121 |     pub event: Option<Box<Event>>,
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 121 |     pub event: Option<Box<dyn Event>>,
[INFO] [stderr]     |                           +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/mod.rs:281:28
[INFO] [stderr]     |
[INFO] [stderr] 281 |     reaper: Rc<RefCell<Box<TaskReaper<T, E>>>>,
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 281 |     reaper: Rc<RefCell<Box<dyn TaskReaper<T, E>>>>,
[INFO] [stderr]     |                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/mod.rs:308:35
[INFO] [stderr]     |
[INFO] [stderr] 308 |     weak_reaper: Weak<RefCell<Box<TaskReaper<T, E>>>>,
[INFO] [stderr]     |                                   ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 308 |     weak_reaper: Weak<RefCell<Box<dyn TaskReaper<T, E>>>>,
[INFO] [stderr]     |                                   +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/mod.rs:310:22
[INFO] [stderr]     |
[INFO] [stderr] 310 |     node: Option<Box<PromiseNode<T, E>>>,
[INFO] [stderr]     |                      ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 310 |     node: Option<Box<dyn PromiseNode<T, E>>>,
[INFO] [stderr]     |                      +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/lib.rs:80:15
[INFO] [stderr]    |
[INFO] [stderr] 80 |     node: Box<PromiseNode<T, E>>,
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 80 |     node: Box<dyn PromiseNode<T, E>>,
[INFO] [stderr]    |               +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/private/promise_node.rs:42:32
[INFO] [stderr]    |
[INFO] [stderr] 42 |     pub fn new(dependency: Box<PromiseNode<DepT, E>>, func: Func) -> Transform<T, E, E1, DepT, Func> {
[INFO] [stderr]    |                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 42 |     pub fn new(dependency: Box<dyn PromiseNode<DepT, E>>, func: Func) -> Transform<T, E, E1, DepT, Func> {
[INFO] [stderr]    |                                +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/promise_node.rs:176:31
[INFO] [stderr]     |
[INFO] [stderr] 176 |     pub fn new(mut inner: Box<PromiseNode<Promise<T, E>, E>>) -> Chain<T, E> {
[INFO] [stderr]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 176 |     pub fn new(mut inner: Box<dyn PromiseNode<Promise<T, E>, E>>) -> Chain<T, E> {
[INFO] [stderr]     |                               +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/promise_node.rs:386:30
[INFO] [stderr]     |
[INFO] [stderr] 386 |     pub fn new(mut left: Box<PromiseNode<T, E>>, mut right: Box<PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[INFO] [stderr]     |                              ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 386 |     pub fn new(mut left: Box<dyn PromiseNode<T, E>>, mut right: Box<PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[INFO] [stderr]     |                              +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/promise_node.rs:386:65
[INFO] [stderr]     |
[INFO] [stderr] 386 |     pub fn new(mut left: Box<PromiseNode<T, E>>, mut right: Box<PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[INFO] [stderr]     |                                                                 ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 386 |     pub fn new(mut left: Box<PromiseNode<T, E>>, mut right: Box<dyn PromiseNode<T, E>>) -> ExclusiveJoin<T, E> {
[INFO] [stderr]     |                                                                 +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/promise_node.rs:453:31
[INFO] [stderr]     |
[INFO] [stderr] 453 |     pub fn new(mut inner: Box<PromiseNode<T, E>>) -> ForkHub<T, E> {
[INFO] [stderr]     |                               ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 453 |     pub fn new(mut inner: Box<dyn PromiseNode<T, E>>) -> ForkHub<T, E> {
[INFO] [stderr]     |                               +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/mod.rs:286:28
[INFO] [stderr]     |
[INFO] [stderr] 286 |     pub fn new(reaper: Box<TaskReaper<T, E>>) -> TaskSetImpl<T, E> {
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 286 |     pub fn new(reaper: Box<dyn TaskReaper<T, E>>) -> TaskSetImpl<T, E> {
[INFO] [stderr]     |                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/mod.rs:293:39
[INFO] [stderr]     |
[INFO] [stderr] 293 |       pub fn add(&self, mut node: Box<PromiseNode<T, E>>) {
[INFO] [stderr]     |                                       ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 293 |       pub fn add(&self, mut node: Box<dyn PromiseNode<T, E>>) {
[INFO] [stderr]     |                                       +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/lib.rs:204:74
[INFO] [stderr]     |
[INFO] [stderr] 204 |     pub fn wait<E1>(mut self, wait_scope: &WaitScope, event_source: &mut EventPort<E1>) -> Result<T, E>
[INFO] [stderr]     |                                                                          ^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 204 |     pub fn wait<E1>(mut self, wait_scope: &WaitScope, event_source: &mut dyn EventPort<E1>) -> Result<T, E>
[INFO] [stderr]     |                                                                          +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/lib.rs:467:28
[INFO] [stderr]     |
[INFO] [stderr] 467 |     pub fn new(reaper: Box<TaskReaper<T, E>>) -> TaskSet<T, E> {
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 467 |     pub fn new(reaper: Box<dyn TaskReaper<T, E>>) -> TaskSet<T, E> {
[INFO] [stderr]     |                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/private/mod.rs:97:34
[INFO] [stderr]    |
[INFO] [stderr] 97 |     pub fn set(&self, event: Box<Event>) {
[INFO] [stderr]    |                                  ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 97 |     pub fn set(&self, event: Box<dyn Event>) {
[INFO] [stderr]    |                                  +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/private/promise_node.rs:459:73
[INFO] [stderr]     |
[INFO] [stderr] 459 |         let event = Box::new(ForkEvent { state: state.clone() }) as Box<Event>;
[INFO] [stderr]     |                                                                         ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 459 |         let event = Box::new(ForkEvent { state: state.clone() }) as Box<dyn Event>;
[INFO] [stderr]     |                                                                         +++
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Event`
[INFO] [stderr]   --> src/lib.rs:54:29
[INFO] [stderr]    |
[INFO] [stderr] 54 | use private::{promise_node, Event, BoolEvent, PromiseAndFulfillerHub, PromiseAndFulfillerWrapper,
[INFO] [stderr]    |                             ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stderr]    --> src/lib.rs:207:9
[INFO] [stderr]     |
[INFO] [stderr] 207 |         drop(wait_scope);
[INFO] [stderr]     |         ^^^^^----------^
[INFO] [stderr]     |              |
[INFO] [stderr]     |              argument has type `&WaitScope`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the expression or result
[INFO] [stderr]     |
[INFO] [stderr] 207 -         drop(wait_scope);
[INFO] [stderr] 207 +         let _ = wait_scope;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> src/private/promise_node.rs:157:29
[INFO] [stderr]     |
[INFO] [stderr] 157 | / ...                   ::std::mem::replace(&mut *strong_self_ptr.borrow_mut(),
[INFO] [stderr] 158 | | ...                                       ChainState::Step2(inner, None));
[INFO] [stderr]     | |_________________________________________________________________________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 157 |                             let _ = ::std::mem::replace(&mut *strong_self_ptr.borrow_mut(),
[INFO] [stderr]     |                             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `gj` (lib) generated 27 warnings (run `cargo fix --lib -p gj` to apply 23 suggestions)
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]   --> tests/promises.rs:40:9
[INFO] [stderr]    |
[INFO] [stderr] 40 |         try!(promise.wait(wait_scope, &mut ClosedEventPort(())));
[INFO] [stderr]    |         ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]   --> tests/promises.rs:54:21
[INFO] [stderr]    |
[INFO] [stderr] 54 |         let value = try!(promise.wait(wait_scope, &mut ClosedEventPort(())));
[INFO] [stderr]    |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> tests/promises.rs:125:21
[INFO] [stderr]     |
[INFO] [stderr] 125 |         let value = try!(promise3.wait(wait_scope, &mut ClosedEventPort(())));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> tests/promises.rs:135:49
[INFO] [stderr]     |
[INFO] [stderr] 135 |         let promise2: Promise<&'static str, Box<::std::error::Error>> =
[INFO] [stderr]     |                                                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr]     = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 135 |         let promise2: Promise<&'static str, Box<dyn (::std::error::Error)>> =
[INFO] [stderr]     |                                                 +++++                   +
[INFO] [stderr] 
[INFO] [stderr] warning: `gj` (test "promises") generated 4 warnings (run `cargo fix --test "promises" -p gj` to apply 1 suggestion)
[INFO] [stderr] warning: `gj` (lib test) generated 27 warnings (27 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.04s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/gj-b40ad35794799c37)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/promises.rs (/opt/rustwide/target/debug/deps/promises-24514b9cceff32ce)
[INFO] [stdout] 
[INFO] [stdout] running 29 tests
[INFO] [stdout] test array_join_drop_then_fulfill ... ok
[INFO] [stdout] test array_join_empty ... ok
[INFO] [stdout] test array_join_ordering ... ok
[INFO] [stdout] test array_join_simple ... ok
[INFO] [stdout] test chain ... ok
[INFO] [stdout] test drop_fulfiller ... ok
[INFO] [stdout] test drop_depth_first_insertion_point ... ok
[INFO] [stdout] test drop_tail ... ok
[INFO] [stdout] test drop_task_set ... ok
[INFO] [stdout] test eagerly_evaluate ... ok
[INFO] [stdout] test eval_void ... ok
[INFO] [stdout] test fork_branch_after_resolve ... ok
[INFO] [stdout] test fork_simple ... ok
[INFO] [stdout] test fulfiller ... ok
[INFO] [stdout] test hold_fulfiller ... ok
[INFO] [stdout] test eval_int ... ok
[INFO] [stdout] test ordering ... ok
[INFO] [stdout] test knotty ... ok
[INFO] [stdout] test task_set_drop_self ... ok
[INFO] [stdout] test task_set ... ok
[INFO] [stdout] test drop_task_set_leak ... ok
[INFO] [stdout] test separate_fulfiller_chained ... ok
[INFO] [stdout] test reject_fulfiller ... ok
[INFO] [stdout] test task_set_recursion ... ok
[INFO] [stdout] test exclusive_join ... ok
[INFO] [stdout] test fork_cancel ... ok
[INFO] [stdout] test deep_chain2 ... ok
[INFO] [stdout] test chain_error ... ok
[INFO] [stdout] test simple_recursion ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.32s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests gj
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/lib.rs - (line 29) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.42s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "74233e423dff15e9986a8f22391c5185b6ed63f12b89f7184d5261e06994fb21", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "74233e423dff15e9986a8f22391c5185b6ed63f12b89f7184d5261e06994fb21", kill_on_drop: false }`
[INFO] [stdout] 74233e423dff15e9986a8f22391c5185b6ed63f12b89f7184d5261e06994fb21
