[INFO] fetching crate brug 0.3.0-alpha0...
[INFO] testing brug-0.3.0-alpha0 against master#0d162b25edd5bf0dba9a22e83b614f1113e90474 for pr-150681
[INFO] extracting crate brug 0.3.0-alpha0 into /workspace/builds/worker-5-tc1/source
[INFO] started tweaking crates.io crate brug 0.3.0-alpha0
[INFO] finished tweaking crates.io crate brug 0.3.0-alpha0
[INFO] tweaked toml for crates.io crate brug 0.3.0-alpha0 written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate brug 0.3.0-alpha0 on toolchain 0d162b25edd5bf0dba9a22e83b614f1113e90474
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "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" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 12 packages to latest compatible versions
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded brug-macros v0.3.0-alpha0
[INFO] [stderr]   Downloaded kanal v0.1.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5b4cedede879bda857c47885141b0ea807babce172644cb896cce6eb6dedd2f7
[INFO] running `Command { std: "docker" "start" "-a" "5b4cedede879bda857c47885141b0ea807babce172644cb896cce6eb6dedd2f7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5b4cedede879bda857c47885141b0ea807babce172644cb896cce6eb6dedd2f7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5b4cedede879bda857c47885141b0ea807babce172644cb896cce6eb6dedd2f7", kill_on_drop: false }`
[INFO] [stdout] 5b4cedede879bda857c47885141b0ea807babce172644cb896cce6eb6dedd2f7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0714523dc215bb6527fc0b58303dcdfe1ccd0ab2efaa37de184e6cbdeb76b2c4
[INFO] running `Command { std: "docker" "start" "-a" "0714523dc215bb6527fc0b58303dcdfe1ccd0ab2efaa37de184e6cbdeb76b2c4", kill_on_drop: false }`
[INFO] [stderr]    Compiling brug v0.3.0-alpha0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> src/lib.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     async fn perform(&mut self, command: Command);
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout]    = note: `#[warn(async_fn_in_trait)]` on by default
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 12 -     async fn perform(&mut self, command: Command);
[INFO] [stdout] 12 +     fn perform(&mut self, command: Command) -> impl std::future::Future<Output = ()> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> src/lib.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     async fn send(self, data: T);
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 17 -     async fn send(self, data: T);
[INFO] [stdout] 17 +     fn send(self, data: T) -> impl std::future::Future<Output = ()> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> src/lib.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     async fn receive(self) -> Option<T>;
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 22 -     async fn receive(self) -> Option<T>;
[INFO] [stdout] 22 +     fn receive(self) -> impl std::future::Future<Output = Option<T>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.18s
[INFO] running `Command { std: "docker" "inspect" "0714523dc215bb6527fc0b58303dcdfe1ccd0ab2efaa37de184e6cbdeb76b2c4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0714523dc215bb6527fc0b58303dcdfe1ccd0ab2efaa37de184e6cbdeb76b2c4", kill_on_drop: false }`
[INFO] [stdout] 0714523dc215bb6527fc0b58303dcdfe1ccd0ab2efaa37de184e6cbdeb76b2c4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 59c085868102ccaf74774f4cb4529703f42061382e92e8ec04538b0e3d401eb2
[INFO] running `Command { std: "docker" "start" "-a" "59c085868102ccaf74774f4cb4529703f42061382e92e8ec04538b0e3d401eb2", kill_on_drop: false }`
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> src/lib.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     async fn perform(&mut self, command: Command);
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout]    = note: `#[warn(async_fn_in_trait)]` on by default
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 12 -     async fn perform(&mut self, command: Command);
[INFO] [stdout] 12 +     fn perform(&mut self, command: Command) -> impl std::future::Future<Output = ()> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> src/lib.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     async fn send(self, data: T);
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 17 -     async fn send(self, data: T);
[INFO] [stdout] 17 +     fn send(self, data: T) -> impl std::future::Future<Output = ()> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> src/lib.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     async fn receive(self) -> Option<T>;
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 22 -     async fn receive(self) -> Option<T>;
[INFO] [stdout] 22 +     fn receive(self) -> impl std::future::Future<Output = Option<T>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling brug v0.3.0-alpha0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> src/lib.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     async fn perform(&mut self, command: Command);
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout]    = note: `#[warn(async_fn_in_trait)]` on by default
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 12 -     async fn perform(&mut self, command: Command);
[INFO] [stdout] 12 +     fn perform(&mut self, command: Command) -> impl std::future::Future<Output = ()> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> src/lib.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     async fn send(self, data: T);
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 17 -     async fn send(self, data: T);
[INFO] [stdout] 17 +     fn send(self, data: T) -> impl std::future::Future<Output = ()> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> src/lib.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     async fn receive(self) -> Option<T>;
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 22 -     async fn receive(self) -> Option<T>;
[INFO] [stdout] 22 +     fn receive(self) -> impl std::future::Future<Output = Option<T>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.48s
[INFO] running `Command { std: "docker" "inspect" "59c085868102ccaf74774f4cb4529703f42061382e92e8ec04538b0e3d401eb2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "59c085868102ccaf74774f4cb4529703f42061382e92e8ec04538b0e3d401eb2", kill_on_drop: false }`
[INFO] [stdout] 59c085868102ccaf74774f4cb4529703f42061382e92e8ec04538b0e3d401eb2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 0dc11b1b1dc0de53aca703c9f5add420981f6d52bdec8b0635ab87d14c3333a0
[INFO] running `Command { std: "docker" "start" "-a" "0dc11b1b1dc0de53aca703c9f5add420981f6d52bdec8b0635ab87d14c3333a0", kill_on_drop: false }`
[INFO] [stderr] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stderr]   --> src/lib.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 |     async fn perform(&mut self, command: Command);
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stderr]    = note: `#[warn(async_fn_in_trait)]` on by default
[INFO] [stderr] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stderr]    |
[INFO] [stderr] 12 -     async fn perform(&mut self, command: Command);
[INFO] [stderr] 12 +     fn perform(&mut self, command: Command) -> impl std::future::Future<Output = ()> + Send;
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stderr]   --> src/lib.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 17 |     async fn send(self, data: T);
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stderr] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stderr]    |
[INFO] [stderr] 17 -     async fn send(self, data: T);
[INFO] [stderr] 17 +     fn send(self, data: T) -> impl std::future::Future<Output = ()> + Send;
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stderr]   --> src/lib.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 |     async fn receive(self) -> Option<T>;
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stderr] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stderr]    |
[INFO] [stderr] 22 -     async fn receive(self) -> Option<T>;
[INFO] [stderr] 22 +     fn receive(self) -> impl std::future::Future<Output = Option<T>> + Send;
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: `brug` (lib) generated 3 warnings
[INFO] [stderr] warning: `brug` (lib test) generated 3 warnings (3 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.06s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/brug-cd883a6e5ca6ca7a)
[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]    Doc-tests brug
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/lib.rs - (line 9) ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- src/lib.rs - (line 9) stdout ----
[INFO] [stdout] error[E0432]: unresolved import `brug::tokio`
[INFO] [stdout]   --> src/lib.rs:11:23
[INFO] [stdout]    |
[INFO] [stdout] 11 | use brug::{Performer, tokio::OneShot};
[INFO] [stdout]    |                       ^^^^^ could not find `tokio` in `brug`
[INFO] [stdout]    |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]   --> src/lib.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | #[cfg(feature = "tokio")]
[INFO] [stdout]    |       ----------------- the item is gated behind the `tokio` feature
[INFO] [stdout] 41 | pub mod tokio {
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: could not find `performer` in `brug`
[INFO] [stdout]   --> src/lib.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | #[brug::performer]
[INFO] [stdout]    |         ^^^^^^^^^ could not find `performer` in `brug`
[INFO] [stdout]    |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]   --> src/lib.rs:7:22
[INFO] [stdout]    |
[INFO] [stdout]  6 | #[cfg(feature = "macros")]
[INFO] [stdout]    |       ------------------ the item is gated behind the `macros` feature
[INFO] [stdout]  7 | pub use brug_macros::performer;
[INFO] [stdout]    |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: could not find `async_trait` in `brug`
[INFO] [stdout]   --> src/lib.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | #[::brug::async_trait]
[INFO] [stdout]    |           ^^^^^^^^^^^ could not find `async_trait` in `brug`
[INFO] [stdout]    |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]   --> src/lib.rs:4:22
[INFO] [stdout]    |
[INFO] [stdout]  3 | #[cfg(feature = "async_trait")]
[INFO] [stdout]    |       ----------------------- the item is gated behind the `async_trait` feature
[INFO] [stdout]  4 | pub use async_trait::async_trait;
[INFO] [stdout]    |                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: could not find `async_trait` in `brug`
[INFO] [stdout]   --> src/lib.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | #[::brug::async_trait]
[INFO] [stdout]    |           ^^^^^^^^^^^ could not find `async_trait` in `brug`
[INFO] [stdout]    |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]   --> src/lib.rs:4:22
[INFO] [stdout]    |
[INFO] [stdout]  3 | #[cfg(feature = "async_trait")]
[INFO] [stdout]    |       ----------------------- the item is gated behind the `async_trait` feature
[INFO] [stdout]  4 | pub use async_trait::async_trait;
[INFO] [stdout]    |                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: could not find `async_trait` in `brug`
[INFO] [stdout]   --> src/lib.rs:58:11
[INFO] [stdout]    |
[INFO] [stdout] 58 | #[::brug::async_trait]
[INFO] [stdout]    |           ^^^^^^^^^^^ could not find `async_trait` in `brug`
[INFO] [stdout]    |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]   --> src/lib.rs:4:22
[INFO] [stdout]    |
[INFO] [stdout]  3 | #[cfg(feature = "async_trait")]
[INFO] [stdout]    |       ----------------------- the item is gated behind the `async_trait` feature
[INFO] [stdout]  4 | pub use async_trait::async_trait;
[INFO] [stdout]    |                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: could not find `async_trait` in `brug`
[INFO] [stdout]   --> src/lib.rs:69:11
[INFO] [stdout]    |
[INFO] [stdout] 69 | #[::brug::async_trait]
[INFO] [stdout]    |           ^^^^^^^^^^^ could not find `async_trait` in `brug`
[INFO] [stdout]    |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]   --> src/lib.rs:4:22
[INFO] [stdout]    |
[INFO] [stdout]  3 | #[cfg(feature = "async_trait")]
[INFO] [stdout]    |       ----------------------- the item is gated behind the `async_trait` feature
[INFO] [stdout]  4 | pub use async_trait::async_trait;
[INFO] [stdout]    |                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: missing generics for enum `MyStructCommand`
[INFO] [stdout]   --> src/lib.rs:37:24
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl ::brug::Performer<MyStructCommand> for MyStruct {
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^ expected 1 generic argument
[INFO] [stdout]    |
[INFO] [stdout] note: enum defined here, with 1 generic parameter: `T`
[INFO] [stdout]   --> src/lib.rs:32:10
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub enum MyStructCommand<T: ::brug::Transport> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^ -
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl ::brug::Performer<MyStructCommand<T>> for MyStruct {
[INFO] [stdout]    |                                       +++
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/lib.rs:28:14
[INFO] [stdout]    |
[INFO] [stdout] 28 |   assert_eq!(r.receive().await.expect("command got dropped before processed"), 3);
[INFO] [stdout]    |              ^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/lib.rs:28:14
[INFO] [stdout]    |
[INFO] [stdout] 28 |   assert_eq!(r.receive().await.expect("command got dropped before processed"), 3);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: missing generics for enum `MyStructCommand`
[INFO] [stdout]   --> src/lib.rs:38:40
[INFO] [stdout]    |
[INFO] [stdout] 38 |   async fn perform(&mut self, command: MyStructCommand) {
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^ expected 1 generic argument
[INFO] [stdout]    |
[INFO] [stdout] note: enum defined here, with 1 generic parameter: `T`
[INFO] [stdout]   --> src/lib.rs:32:10
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub enum MyStructCommand<T: ::brug::Transport> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^ -
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]    |
[INFO] [stdout] 38 |   async fn perform(&mut self, command: MyStructCommand<T>) {
[INFO] [stdout]    |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `add` exists for mutable reference `&mut MyStruct`, but its trait bounds were not satisfied
[INFO] [stdout]   --> src/lib.rs:41:41
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct MyStruct;
[INFO] [stdout]    | --------------- doesn't satisfy `MyStruct: MyStructFacade<_>` or `MyStruct: MyStructFacadeMut<_>`
[INFO] [stdout] ...
[INFO] [stdout] 41 |         ::brug::Sender::send(resp, self.add(a, b)).await;
[INFO] [stdout]    |                                         ^^^ this is an associated function, not a method
[INFO] [stdout]    |
[INFO] [stdout]    = note: found the following associated functions; to be used as methods, functions must have a `self` parameter
[INFO] [stdout] note: the candidate is defined in an impl for the type `MyStruct`
[INFO] [stdout]   --> src/lib.rs:17:3
[INFO] [stdout]    |
[INFO] [stdout] 17 |   fn add(a: usize, b: usize) -> usize {
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: the following trait bounds were not satisfied:
[INFO] [stdout]       `&mut MyStruct: MyStructFacade<_>`
[INFO] [stdout]       `MyStruct: MyStructFacade<_>`
[INFO] [stdout]   --> src/lib.rs:70:31
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl<T: ::brug::Transport, F: MyStructFacade<T> + Send + Sync> MyStructFacadeMut<T> for F {
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^                --------------------     -
[INFO] [stdout]    |                               |
[INFO] [stdout]    |                               unsatisfied trait bound introduced here
[INFO] [stdout] note: the trait `MyStructFacade` must be implemented
[INFO] [stdout]   --> src/lib.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub trait MyStructFacade<T: ::brug::Transport> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following traits define an item `add`, perhaps you need to implement one of them:
[INFO] [stdout]            candidate #1: `MyStructFacade`
[INFO] [stdout]            candidate #2: `MyStructFacadeMut`
[INFO] [stdout]            candidate #3: `Add`
[INFO] [stdout] help: use associated function syntax instead
[INFO] [stdout]    |
[INFO] [stdout] 41 -         ::brug::Sender::send(resp, self.add(a, b)).await;
[INFO] [stdout] 41 +         ::brug::Sender::send(resp, MyStruct::add(a, b)).await;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `receive` found for associated type `<T as Transport>::Receiver<usize>` in the current scope
[INFO] [stdout]   --> src/lib.rs:52:14
[INFO] [stdout]    |
[INFO] [stdout] 52 |     return r.receive().await.expect("add didn't return a value");
[INFO] [stdout]    |              ^^^^^^^ method not found in `<T as Transport>::Receiver<usize>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/lib.rs:22:14
[INFO] [stdout]    |
[INFO] [stdout] 22 |     async fn receive(self) -> Option<T>;
[INFO] [stdout]    |              ------- the method is available for `<T as Transport>::Receiver<usize>` here
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `Receiver` which provides `receive` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  9 + use crate::brug::Receiver;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/lib.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 |     return r.receive().await.expect("add didn't return a value");
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `receive` found for associated type `<T as Transport>::Receiver<usize>` in the current scope
[INFO] [stdout]   --> src/lib.rs:63:14
[INFO] [stdout]    |
[INFO] [stdout] 63 |     return r.receive().await.expect("add didn't return a value");
[INFO] [stdout]    |              ^^^^^^^ method not found in `<T as Transport>::Receiver<usize>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/lib.rs:22:14
[INFO] [stdout]    |
[INFO] [stdout] 22 |     async fn receive(self) -> Option<T>;
[INFO] [stdout]    |              ------- the method is available for `<T as Transport>::Receiver<usize>` here
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `Receiver` which provides `receive` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  9 + use crate::brug::Receiver;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/lib.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 |     return r.receive().await.expect("add didn't return a value");
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0752]: `main` function is not allowed to be `async`
[INFO] [stdout]   --> src/lib.rs:22:1
[INFO] [stdout]    |
[INFO] [stdout] 22 | async fn main() {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^ `main` function is not allowed to be `async`
[INFO] [stdout] 
[INFO] [stdout] error[E0733]: recursion in an async fn requires boxing
[INFO] [stdout]   --> src/lib.rs:71:3
[INFO] [stdout]    |
[INFO] [stdout] 71 |   async fn handle(&mut self, command: MyStructCommand<T>) {
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     MyStructFacadeMut::handle(self, command).await;
[INFO] [stdout]    |     ---------------------------------------------- recursive call here
[INFO] [stdout]    |
[INFO] [stdout]    = note: a recursive `async fn` call must introduce indirection such as `Box::pin` to avoid an infinitely sized future
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 17 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0107, E0282, E0432, E0433, E0599, E0733, E0752.
[INFO] [stdout] For more information about an error, try `rustc --explain E0107`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     src/lib.rs - (line 9)
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.29s
[INFO] [stdout] 
[INFO] [stderr] error: doctest failed, to rerun pass `--doc`
[INFO] running `Command { std: "docker" "inspect" "0dc11b1b1dc0de53aca703c9f5add420981f6d52bdec8b0635ab87d14c3333a0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0dc11b1b1dc0de53aca703c9f5add420981f6d52bdec8b0635ab87d14c3333a0", kill_on_drop: false }`
[INFO] [stdout] 0dc11b1b1dc0de53aca703c9f5add420981f6d52bdec8b0635ab87d14c3333a0
