[INFO] cloning repository https://github.com/wuzhizhe7273/suibi
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/wuzhizhe7273/suibi" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwuzhizhe7273%2Fsuibi", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwuzhizhe7273%2Fsuibi'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4965b67f519b53f66b8002cace91883efba991ab
[INFO] checking wuzhizhe7273/suibi against try#012cd62c9add58ab3910e44c137d87db3ab70f61 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwuzhizhe7273%2Fsuibi" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-3-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/wuzhizhe7273/suibi
[INFO] finished tweaking git repo https://github.com/wuzhizhe7273/suibi
[INFO] tweaked toml for git repo https://github.com/wuzhizhe7273/suibi written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/wuzhizhe7273/suibi on toolchain 012cd62c9add58ab3910e44c137d87db3ab70f61
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/wuzhizhe7273/suibi already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2024 which implies `resolver = "3"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2024 resolver, specify `workspace.resolver = "3"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 28216996c7873d7565a5fc229fac03937997515fe64516a510f75fdaa2a63f8b
[INFO] running `Command { std: "docker" "start" "-a" "28216996c7873d7565a5fc229fac03937997515fe64516a510f75fdaa2a63f8b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "28216996c7873d7565a5fc229fac03937997515fe64516a510f75fdaa2a63f8b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "28216996c7873d7565a5fc229fac03937997515fe64516a510f75fdaa2a63f8b", kill_on_drop: false }`
[INFO] [stdout] 28216996c7873d7565a5fc229fac03937997515fe64516a510f75fdaa2a63f8b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 91ad6e547352c2bd00b4a534b7b9af9689a2e253b0955d12f27ffe6e0d43dd67
[INFO] running `Command { std: "docker" "start" "-a" "91ad6e547352c2bd00b4a534b7b9af9689a2e253b0955d12f27ffe6e0d43dd67", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2024 which implies `resolver = "3"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2024 resolver, specify `workspace.resolver = "3"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]     Checking futures-sink v0.3.32
[INFO] [stderr]     Checking futures-core v0.3.32
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking infra v0.1.0 (/opt/rustwide/workdir/infra)
[INFO] [stderr]     Checking adapter v0.1.0 (/opt/rustwide/workdir/adapter)
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking ulid v1.2.1
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking domain v0.1.0 (/opt/rustwide/workdir/domain)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> domain/src/aggregate/role/mod.rs:92:14
[INFO] [stdout]    |
[INFO] [stdout] 92 |     fn apply(mut state: Option<Self>, event: &Self::Event) -> Option<Self> {
[INFO] [stdout]    |              ----^^^^^
[INFO] [stdout]    |              |
[INFO] [stdout]    |              help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> domain/src/aggregate/tag/mod.rs:79:14
[INFO] [stdout]    |
[INFO] [stdout] 79 |     fn apply(mut state: Option<Self>, event: &Self::Event) -> Option<Self> {
[INFO] [stdout]    |              ----^^^^^
[INFO] [stdout]    |              |
[INFO] [stdout]    |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> domain/src/aggregate/taxonomy/mod.rs:102:14
[INFO] [stdout]     |
[INFO] [stdout] 102 |     fn apply(mut state: Option<Self>, event: &Self::Event) -> Option<Self> {
[INFO] [stdout]     |              ----^^^^^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `store`
[INFO] [stdout]   --> domain/src/common/executor.rs:27:29
[INFO] [stdout]    |
[INFO] [stdout] 27 |     async fn execute(&self, store: &S) -> anyhow::Result<Self::Ret> {
[INFO] [stdout]    |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_store`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `store`
[INFO] [stdout]   --> domain/src/common/executor.rs:46:29
[INFO] [stdout]    |
[INFO] [stdout] 46 |     async fn execute(&self, store: &S) -> anyhow::Result<Self::Ret> {
[INFO] [stdout]    |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `store`
[INFO] [stdout]   --> domain/src/common/executor.rs:64:29
[INFO] [stdout]    |
[INFO] [stdout] 64 |     async fn execute(&self, store: &S) -> anyhow::Result<Self::Ret> {
[INFO] [stdout]    |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `store`
[INFO] [stdout]   --> domain/src/common/executor.rs:83:29
[INFO] [stdout]    |
[INFO] [stdout] 83 |     async fn execute(&self, store: &S) -> anyhow::Result<Self::Ret> {
[INFO] [stdout]    |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `as_aggregate` and `version` are never used
[INFO] [stdout]   --> domain/src/common/aggregate/mod.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | / impl<A> Context<A>
[INFO] [stdout] 55 | | where
[INFO] [stdout] 56 | |     A: Aggregate,
[INFO] [stdout]    | |_________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 66 |       fn as_aggregate(&self) -> Option<&A> {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |       fn version(&self) -> u64 {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `state` and `version` are never read
[INFO] [stdout]  --> domain/src/common/aggregate/snapshot.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct SnapShot<A>
[INFO] [stdout]   |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 7 |     state: A,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 8 |     version: u64,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `id` and `loader` are never used
[INFO] [stdout]   --> domain/src/common/aggregate/snapshot.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | / impl<A> SnapShot<A>
[INFO] [stdout] 12 | | where
[INFO] [stdout] 13 | |     A: Aggregate,
[INFO] [stdout]    | |_________________- methods in this implementation
[INFO] [stdout] 14 |   {
[INFO] [stdout] 15 |       fn id(&self) -> &A::ID {
[INFO] [stdout]    |          ^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |       fn loader(self, version: u64) -> SnapShotLoader<A> {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `ctx` is never read
[INFO] [stdout]   --> domain/src/common/executor.rs:18:16
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Commiter<A>
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub(crate) ctx: Context<A>,
[INFO] [stdout]    |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `version` are never read
[INFO] [stdout]   --> domain/src/common/executor.rs:36:16
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Fetcher<A>
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub(crate) id: A::ID,
[INFO] [stdout]    |                ^^
[INFO] [stdout] 37 |     pub(crate) version: Option<u64>,
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]   --> domain/src/common/executor.rs:55:16
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct SnapshotFetcher<A>
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub(crate) id: A::ID,
[INFO] [stdout]    |                ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `snapshot` and `version` are never read
[INFO] [stdout]   --> domain/src/common/executor.rs:73:16
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct SnapShotLoader<A>
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub(crate) snapshot: Option<SnapShot<A>>,
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 74 |     pub(crate) version: u64,
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> domain/src/aggregate/role/mod.rs:92:14
[INFO] [stdout]    |
[INFO] [stdout] 92 |     fn apply(mut state: Option<Self>, event: &Self::Event) -> Option<Self> {
[INFO] [stdout]    |              ----^^^^^
[INFO] [stdout]    |              |
[INFO] [stdout]    |              help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> domain/src/common/aggregate/snapshot.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     async fn get_snapshot(&self, id: &A::ID) -> anyhow::Result<SnapShot<A>>;
[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] 30 -     async fn get_snapshot(&self, id: &A::ID) -> anyhow::Result<SnapShot<A>>;
[INFO] [stdout] 30 +     fn get_snapshot(&self, id: &A::ID) -> impl std::future::Future<Output = anyhow::Result<SnapShot<A>>> + 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]  --> domain/src/common/event/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     async fn commit<ID, E>(&self, stream: &ID, version: u64, events: Vec<E>) -> anyhow::Result<()>
[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] 8 -     async fn commit<ID, E>(&self, stream: &ID, version: u64, events: Vec<E>) -> anyhow::Result<()>
[INFO] [stdout] 8 +     fn commit<ID, E>(&self, stream: &ID, version: u64, events: Vec<E>) -> impl std::future::Future<Output = anyhow::Result<()>> + 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]   --> domain/src/common/event/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     async fn stream<ID, E>(
[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] 15 ~     fn stream<ID, E>(
[INFO] [stdout] 16 |         &self,
[INFO] [stdout] 17 |         stream: &ID,
[INFO] [stdout] 18 |         version: u64,
[INFO] [stdout] 19 ~     ) -> impl std::future::Future<Output = anyhow::Result<impl futures::Stream<Item = E> + Unpin>> + 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]   --> domain/src/common/executor.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     async fn execute(&self, store: &S) -> anyhow::Result<Self::Ret>;
[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] 11 -     async fn execute(&self, store: &S) -> anyhow::Result<Self::Ret>;
[INFO] [stdout] 11 +     fn execute(&self, store: &S) -> impl std::future::Future<Output = anyhow::Result<Self::Ret>> + 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]   --> domain/src/common/projection/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     async fn handle(&self, event: &P::Event) -> anyhow::Result<()>;
[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] 13 -     async fn handle(&self, event: &P::Event) -> anyhow::Result<()>;
[INFO] [stdout] 13 +     fn handle(&self, event: &P::Event) -> impl std::future::Future<Output = anyhow::Result<()>> + 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]   --> domain/src/common/projection/mod.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     async fn unique(&self, key: &P::UniqueKey) -> anyhow::Result<Option<P>>;
[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] 14 -     async fn unique(&self, key: &P::UniqueKey) -> anyhow::Result<Option<P>>;
[INFO] [stdout] 14 +     fn unique(&self, key: &P::UniqueKey) -> impl std::future::Future<Output = anyhow::Result<Option<P>>> + 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]   --> domain/src/common/projection/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     async fn get(&self, key: &P::SearchKey) -> anyhow::Result<Vec<P>>;
[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] 15 -     async fn get(&self, key: &P::SearchKey) -> anyhow::Result<Vec<P>>;
[INFO] [stdout] 15 +     fn get(&self, key: &P::SearchKey) -> impl std::future::Future<Output = anyhow::Result<Vec<P>>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: feature `bool_to_result` is declared but not used
[INFO] [stdout]  --> domain/src/lib.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(bool_to_result)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_features)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> domain/src/aggregate/tag/mod.rs:79:14
[INFO] [stdout]    |
[INFO] [stdout] 79 |     fn apply(mut state: Option<Self>, event: &Self::Event) -> Option<Self> {
[INFO] [stdout]    |              ----^^^^^
[INFO] [stdout]    |              |
[INFO] [stdout]    |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking app v0.1.0 (/opt/rustwide/workdir/app)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> domain/src/aggregate/taxonomy/mod.rs:102:14
[INFO] [stdout]     |
[INFO] [stdout] 102 |     fn apply(mut state: Option<Self>, event: &Self::Event) -> Option<Self> {
[INFO] [stdout]     |              ----^^^^^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow`
[INFO] [stdout]  --> app/src/usecase/iam/mod.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::{Context, anyhow};
[INFO] [stdout]   |                       ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `store`
[INFO] [stdout]   --> domain/src/common/executor.rs:27:29
[INFO] [stdout]    |
[INFO] [stdout] 27 |     async fn execute(&self, store: &S) -> anyhow::Result<Self::Ret> {
[INFO] [stdout]    |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_store`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `store`
[INFO] [stdout]   --> domain/src/common/executor.rs:46:29
[INFO] [stdout]    |
[INFO] [stdout] 46 |     async fn execute(&self, store: &S) -> anyhow::Result<Self::Ret> {
[INFO] [stdout]    |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `store`
[INFO] [stdout]   --> domain/src/common/executor.rs:64:29
[INFO] [stdout]    |
[INFO] [stdout] 64 |     async fn execute(&self, store: &S) -> anyhow::Result<Self::Ret> {
[INFO] [stdout]    |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `store`
[INFO] [stdout]   --> domain/src/common/executor.rs:83:29
[INFO] [stdout]    |
[INFO] [stdout] 83 |     async fn execute(&self, store: &S) -> anyhow::Result<Self::Ret> {
[INFO] [stdout]    |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `as_aggregate` and `version` are never used
[INFO] [stdout]   --> domain/src/common/aggregate/mod.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | / impl<A> Context<A>
[INFO] [stdout] 55 | | where
[INFO] [stdout] 56 | |     A: Aggregate,
[INFO] [stdout]    | |_________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 66 |       fn as_aggregate(&self) -> Option<&A> {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |       fn version(&self) -> u64 {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `state` and `version` are never read
[INFO] [stdout]  --> domain/src/common/aggregate/snapshot.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct SnapShot<A>
[INFO] [stdout]   |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 7 |     state: A,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 8 |     version: u64,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `id` and `loader` are never used
[INFO] [stdout]   --> domain/src/common/aggregate/snapshot.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | / impl<A> SnapShot<A>
[INFO] [stdout] 12 | | where
[INFO] [stdout] 13 | |     A: Aggregate,
[INFO] [stdout]    | |_________________- methods in this implementation
[INFO] [stdout] 14 |   {
[INFO] [stdout] 15 |       fn id(&self) -> &A::ID {
[INFO] [stdout]    |          ^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |       fn loader(self, version: u64) -> SnapShotLoader<A> {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `ctx` is never read
[INFO] [stdout]   --> domain/src/common/executor.rs:18:16
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Commiter<A>
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub(crate) ctx: Context<A>,
[INFO] [stdout]    |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `version` are never read
[INFO] [stdout]   --> domain/src/common/executor.rs:36:16
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Fetcher<A>
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub(crate) id: A::ID,
[INFO] [stdout]    |                ^^
[INFO] [stdout] 37 |     pub(crate) version: Option<u64>,
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]   --> domain/src/common/executor.rs:55:16
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct SnapshotFetcher<A>
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub(crate) id: A::ID,
[INFO] [stdout]    |                ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `snapshot` and `version` are never read
[INFO] [stdout]   --> domain/src/common/executor.rs:73:16
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct SnapShotLoader<A>
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub(crate) snapshot: Option<SnapShot<A>>,
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 74 |     pub(crate) version: u64,
[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]   --> domain/src/common/aggregate/snapshot.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     async fn get_snapshot(&self, id: &A::ID) -> anyhow::Result<SnapShot<A>>;
[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] 30 -     async fn get_snapshot(&self, id: &A::ID) -> anyhow::Result<SnapShot<A>>;
[INFO] [stdout] 30 +     fn get_snapshot(&self, id: &A::ID) -> impl std::future::Future<Output = anyhow::Result<SnapShot<A>>> + 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]  --> domain/src/common/event/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     async fn commit<ID, E>(&self, stream: &ID, version: u64, events: Vec<E>) -> anyhow::Result<()>
[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] 8 -     async fn commit<ID, E>(&self, stream: &ID, version: u64, events: Vec<E>) -> anyhow::Result<()>
[INFO] [stdout] 8 +     fn commit<ID, E>(&self, stream: &ID, version: u64, events: Vec<E>) -> impl std::future::Future<Output = anyhow::Result<()>> + 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]   --> domain/src/common/event/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     async fn stream<ID, E>(
[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] 15 ~     fn stream<ID, E>(
[INFO] [stdout] 16 |         &self,
[INFO] [stdout] 17 |         stream: &ID,
[INFO] [stdout] 18 |         version: u64,
[INFO] [stdout] 19 ~     ) -> impl std::future::Future<Output = anyhow::Result<impl futures::Stream<Item = E> + Unpin>> + 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]   --> domain/src/common/executor.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     async fn execute(&self, store: &S) -> anyhow::Result<Self::Ret>;
[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] 11 -     async fn execute(&self, store: &S) -> anyhow::Result<Self::Ret>;
[INFO] [stdout] 11 +     fn execute(&self, store: &S) -> impl std::future::Future<Output = anyhow::Result<Self::Ret>> + 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]   --> domain/src/common/projection/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     async fn handle(&self, event: &P::Event) -> anyhow::Result<()>;
[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] 13 -     async fn handle(&self, event: &P::Event) -> anyhow::Result<()>;
[INFO] [stdout] 13 +     fn handle(&self, event: &P::Event) -> impl std::future::Future<Output = anyhow::Result<()>> + 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]   --> domain/src/common/projection/mod.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     async fn unique(&self, key: &P::UniqueKey) -> anyhow::Result<Option<P>>;
[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] 14 -     async fn unique(&self, key: &P::UniqueKey) -> anyhow::Result<Option<P>>;
[INFO] [stdout] 14 +     fn unique(&self, key: &P::UniqueKey) -> impl std::future::Future<Output = anyhow::Result<Option<P>>> + 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]   --> domain/src/common/projection/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     async fn get(&self, key: &P::SearchKey) -> anyhow::Result<Vec<P>>;
[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] 15 -     async fn get(&self, key: &P::SearchKey) -> anyhow::Result<Vec<P>>;
[INFO] [stdout] 15 +     fn get(&self, key: &P::SearchKey) -> impl std::future::Future<Output = anyhow::Result<Vec<P>>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow`
[INFO] [stdout]  --> app/src/usecase/iam/mod.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::{Context, anyhow};
[INFO] [stdout]   |                       ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: feature `bool_to_result` is declared but not used
[INFO] [stdout]  --> domain/src/lib.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(bool_to_result)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_features)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserSummary` is never constructed
[INFO] [stdout]  --> app/src/dto/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct UserSummary {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateUser` is never constructed
[INFO] [stdout]  --> app/src/dto/iam.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct CreateUser {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateUser` is never constructed
[INFO] [stdout]  --> app/src/dto/iam.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct UpdateUser {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegisterInput` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct RegisterInput {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoginInput` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct LoginInput {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GrantRolesInput` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct GrantRolesInput {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RevokeRolesInput` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct RevokeRolesInput {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateRole` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct CreateRole {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateRole` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct UpdateRole {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GrantPermissionsInput` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct GrantPermissionsInput {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RevokePermissionsInput` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct RevokePermissionsInput {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreatePermission` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct CreatePermission {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdatePermission` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct UpdatePermission {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreatePost` is never constructed
[INFO] [stdout]  --> app/src/dto/post.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct CreatePost {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdatePost` is never constructed
[INFO] [stdout]  --> app/src/dto/post.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct UpdatePost {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateTag` is never constructed
[INFO] [stdout]  --> app/src/dto/tag.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct CreateTag {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateTag` is never constructed
[INFO] [stdout]  --> app/src/dto/tag.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct UpdateTag {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateTaxonomy` is never constructed
[INFO] [stdout]  --> app/src/dto/taxonomy.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct CreateTaxonomy {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateTaxonomy` is never constructed
[INFO] [stdout]   --> app/src/dto/taxonomy.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct UpdateTaxonomy {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UserQueryService` is never used
[INFO] [stdout]  --> app/src/interface/service/mod.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub trait UserQueryService {
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AuthService` is never used
[INFO] [stdout]  --> app/src/interface/service/mod.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub trait AuthService: Send + Sync {
[INFO] [stdout]   |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IAMCase` is never constructed
[INFO] [stdout]   --> app/src/usecase/iam/mod.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct IAMCase<S, A>
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> app/src/usecase/iam/mod.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | / impl<S, A> IAMCase<S, A>
[INFO] [stdout]  38 | | where
[INFO] [stdout]  39 | |     S: EventReader
[INFO] [stdout]  40 | |         + EventWriter
[INFO] [stdout] ...   |
[INFO] [stdout]  43 | |         + ProjectionStore<InlineProjection<domain::aggregate::permission::Permission>>,
[INFO] [stdout]  44 | |     A: AuthService,
[INFO] [stdout]     | |___________________- associated items in this implementation
[INFO] [stdout]  45 |   {
[INFO] [stdout]  46 |       pub fn new(store: S, auth_service: A) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |       pub async fn register(&self, input: RegisterInput) -> anyhow::Result<Ulid> {
[INFO] [stdout]     |                    ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |       pub async fn login(&self, input: LoginInput) -> anyhow::Result<Option<Ulid>> {
[INFO] [stdout]     |                    ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |       pub async fn user_create(&self, input: CreateUser) -> anyhow::Result<Ulid> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |       pub async fn user_update(&self, user_id: Ulid, input: UpdateUser) -> anyhow::Result<()> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |       pub async fn user_delete(&self, user_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |       pub async fn user_grant_roles(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |       pub async fn user_revoke_roles(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |       pub async fn role_create(&self, input: CreateRole) -> anyhow::Result<Ulid> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |       pub async fn role_update(&self, role_id: Ulid, input: UpdateRole) -> anyhow::Result<()> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |       pub async fn role_delete(&self, role_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |       pub async fn role_grant_permissions(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |       pub async fn role_revoke_permissions(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 302 |       pub async fn permission_create(&self, input: CreatePermission) -> anyhow::Result<Ulid> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |       pub async fn permission_update(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |       pub async fn permission_delete(&self, permission_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |       async fn require_user_exists(&self, user_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |       async fn require_role_exists(&self, role_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 381 |       async fn require_permission_exists(&self, permission_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |       pub async fn user_has_role(&self, user_id: Ulid, role_id: Ulid) -> anyhow::Result<bool> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 405 |       pub async fn user_has_permission(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |       pub async fn user_can_do(&self, user_id: Ulid, permission_code: &str) -> anyhow::Result<bool> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |       pub async fn user_can_do_any(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 448 |       pub async fn user_can_do_all(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |       pub async fn role_has_permission(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 470 |       async fn role_has_permission_impl(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PostCase` is never constructed
[INFO] [stdout]   --> app/src/usecase/post/mod.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct PostCase<S, U>
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `user_create_post`, `user_delete_post`, and `user_update_post` are never used
[INFO] [stdout]   --> app/src/usecase/post/mod.rs:32:18
[INFO] [stdout]    |
[INFO] [stdout] 27 | / impl<S, U> PostCase<S, U>
[INFO] [stdout] 28 | | where
[INFO] [stdout] 29 | |     S: EventReader + EventWriter + ProjectionStore<InlineProjection<Post>>,
[INFO] [stdout] 30 | |     U: UserQueryService,
[INFO] [stdout]    | |________________________- methods in this implementation
[INFO] [stdout] 31 |   {
[INFO] [stdout] 32 |       pub async fn user_create_post(&self, uid: Ulid, input: CreatePost) -> anyhow::Result<()> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |       pub async fn user_delete_post(&self, uid: Ulid, post_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |       pub async fn user_update_post(
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TagCase` is never constructed
[INFO] [stdout]   --> app/src/usecase/tag/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct TagCase<S>
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `create`, `update`, `delete`, and `require_exists` are never used
[INFO] [stdout]   --> app/src/usecase/tag/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | / impl<S> TagCase<S>
[INFO] [stdout] 23 | | where
[INFO] [stdout] 24 | |     S: EventReader + EventWriter + ProjectionStore<InlineProjection<Tag>>,
[INFO] [stdout]    | |__________________________________________________________________________- associated items in this implementation
[INFO] [stdout] 25 |   {
[INFO] [stdout] 26 |       pub fn new(store: S) -> Self {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |       pub async fn create(&self, input: CreateTag) -> anyhow::Result<Ulid> {
[INFO] [stdout]    |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |       pub async fn update(&self, tag_id: Ulid, input: UpdateTag) -> anyhow::Result<()> {
[INFO] [stdout]    |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |       pub async fn delete(&self, tag_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]    |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |       async fn require_exists(&self, tag_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaxonomyCase` is never constructed
[INFO] [stdout]   --> app/src/usecase/taxonomy/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct TaxonomyCase<S>
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `create`, `update`, `delete`, and `require_exists` are never used
[INFO] [stdout]    --> app/src/usecase/taxonomy/mod.rs:26:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | / impl<S> TaxonomyCase<S>
[INFO] [stdout]  23 | | where
[INFO] [stdout]  24 | |     S: EventReader + EventWriter + ProjectionStore<InlineProjection<Taxonomy>>,
[INFO] [stdout]     | |_______________________________________________________________________________- associated items in this implementation
[INFO] [stdout]  25 |   {
[INFO] [stdout]  26 |       pub fn new(store: S) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout]  30 |       pub async fn create(&self, input: CreateTaxonomy) -> anyhow::Result<Ulid> {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  48 |       pub async fn update(
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |       pub async fn delete(&self, taxonomy_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |       async fn require_exists(&self, taxonomy_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserSummary` is never constructed
[INFO] [stdout]  --> app/src/dto/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct UserSummary {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateUser` is never constructed
[INFO] [stdout]  --> app/src/dto/iam.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct CreateUser {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateUser` is never constructed
[INFO] [stdout]  --> app/src/dto/iam.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct UpdateUser {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegisterInput` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct RegisterInput {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoginInput` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct LoginInput {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GrantRolesInput` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct GrantRolesInput {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RevokeRolesInput` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct RevokeRolesInput {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateRole` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct CreateRole {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateRole` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct UpdateRole {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GrantPermissionsInput` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct GrantPermissionsInput {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RevokePermissionsInput` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct RevokePermissionsInput {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreatePermission` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct CreatePermission {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdatePermission` is never constructed
[INFO] [stdout]   --> app/src/dto/iam.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct UpdatePermission {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreatePost` is never constructed
[INFO] [stdout]  --> app/src/dto/post.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct CreatePost {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdatePost` is never constructed
[INFO] [stdout]  --> app/src/dto/post.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct UpdatePost {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateTag` is never constructed
[INFO] [stdout]  --> app/src/dto/tag.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct CreateTag {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateTag` is never constructed
[INFO] [stdout]  --> app/src/dto/tag.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct UpdateTag {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateTaxonomy` is never constructed
[INFO] [stdout]  --> app/src/dto/taxonomy.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct CreateTaxonomy {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateTaxonomy` is never constructed
[INFO] [stdout]   --> app/src/dto/taxonomy.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct UpdateTaxonomy {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UserQueryService` is never used
[INFO] [stdout]  --> app/src/interface/service/mod.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub trait UserQueryService {
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AuthService` is never used
[INFO] [stdout]  --> app/src/interface/service/mod.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub trait AuthService: Send + Sync {
[INFO] [stdout]   |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IAMCase` is never constructed
[INFO] [stdout]   --> app/src/usecase/iam/mod.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct IAMCase<S, A>
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> app/src/usecase/iam/mod.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | / impl<S, A> IAMCase<S, A>
[INFO] [stdout]  38 | | where
[INFO] [stdout]  39 | |     S: EventReader
[INFO] [stdout]  40 | |         + EventWriter
[INFO] [stdout] ...   |
[INFO] [stdout]  43 | |         + ProjectionStore<InlineProjection<domain::aggregate::permission::Permission>>,
[INFO] [stdout]  44 | |     A: AuthService,
[INFO] [stdout]     | |___________________- associated items in this implementation
[INFO] [stdout]  45 |   {
[INFO] [stdout]  46 |       pub fn new(store: S, auth_service: A) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |       pub async fn register(&self, input: RegisterInput) -> anyhow::Result<Ulid> {
[INFO] [stdout]     |                    ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |       pub async fn login(&self, input: LoginInput) -> anyhow::Result<Option<Ulid>> {
[INFO] [stdout]     |                    ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |       pub async fn user_create(&self, input: CreateUser) -> anyhow::Result<Ulid> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |       pub async fn user_update(&self, user_id: Ulid, input: UpdateUser) -> anyhow::Result<()> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |       pub async fn user_delete(&self, user_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |       pub async fn user_grant_roles(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |       pub async fn user_revoke_roles(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |       pub async fn role_create(&self, input: CreateRole) -> anyhow::Result<Ulid> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |       pub async fn role_update(&self, role_id: Ulid, input: UpdateRole) -> anyhow::Result<()> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |       pub async fn role_delete(&self, role_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |       pub async fn role_grant_permissions(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |       pub async fn role_revoke_permissions(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 302 |       pub async fn permission_create(&self, input: CreatePermission) -> anyhow::Result<Ulid> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |       pub async fn permission_update(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |       pub async fn permission_delete(&self, permission_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |       async fn require_user_exists(&self, user_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |       async fn require_role_exists(&self, role_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 381 |       async fn require_permission_exists(&self, permission_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |       pub async fn user_has_role(&self, user_id: Ulid, role_id: Ulid) -> anyhow::Result<bool> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 405 |       pub async fn user_has_permission(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |       pub async fn user_can_do(&self, user_id: Ulid, permission_code: &str) -> anyhow::Result<bool> {
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |       pub async fn user_can_do_any(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 448 |       pub async fn user_can_do_all(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |       pub async fn role_has_permission(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 470 |       async fn role_has_permission_impl(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PostCase` is never constructed
[INFO] [stdout]   --> app/src/usecase/post/mod.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct PostCase<S, U>
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `user_create_post`, `user_delete_post`, and `user_update_post` are never used
[INFO] [stdout]   --> app/src/usecase/post/mod.rs:32:18
[INFO] [stdout]    |
[INFO] [stdout] 27 | / impl<S, U> PostCase<S, U>
[INFO] [stdout] 28 | | where
[INFO] [stdout] 29 | |     S: EventReader + EventWriter + ProjectionStore<InlineProjection<Post>>,
[INFO] [stdout] 30 | |     U: UserQueryService,
[INFO] [stdout]    | |________________________- methods in this implementation
[INFO] [stdout] 31 |   {
[INFO] [stdout] 32 |       pub async fn user_create_post(&self, uid: Ulid, input: CreatePost) -> anyhow::Result<()> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |       pub async fn user_delete_post(&self, uid: Ulid, post_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |       pub async fn user_update_post(
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TagCase` is never constructed
[INFO] [stdout]   --> app/src/usecase/tag/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct TagCase<S>
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `create`, `update`, `delete`, and `require_exists` are never used
[INFO] [stdout]   --> app/src/usecase/tag/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | / impl<S> TagCase<S>
[INFO] [stdout] 23 | | where
[INFO] [stdout] 24 | |     S: EventReader + EventWriter + ProjectionStore<InlineProjection<Tag>>,
[INFO] [stdout]    | |__________________________________________________________________________- associated items in this implementation
[INFO] [stdout] 25 |   {
[INFO] [stdout] 26 |       pub fn new(store: S) -> Self {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |       pub async fn create(&self, input: CreateTag) -> anyhow::Result<Ulid> {
[INFO] [stdout]    |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |       pub async fn update(&self, tag_id: Ulid, input: UpdateTag) -> anyhow::Result<()> {
[INFO] [stdout]    |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |       pub async fn delete(&self, tag_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]    |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |       async fn require_exists(&self, tag_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaxonomyCase` is never constructed
[INFO] [stdout]   --> app/src/usecase/taxonomy/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct TaxonomyCase<S>
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `create`, `update`, `delete`, and `require_exists` are never used
[INFO] [stdout]    --> app/src/usecase/taxonomy/mod.rs:26:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | / impl<S> TaxonomyCase<S>
[INFO] [stdout]  23 | | where
[INFO] [stdout]  24 | |     S: EventReader + EventWriter + ProjectionStore<InlineProjection<Taxonomy>>,
[INFO] [stdout]     | |_______________________________________________________________________________- associated items in this implementation
[INFO] [stdout]  25 |   {
[INFO] [stdout]  26 |       pub fn new(store: S) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout]  30 |       pub async fn create(&self, input: CreateTaxonomy) -> anyhow::Result<Ulid> {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  48 |       pub async fn update(
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |       pub async fn delete(&self, taxonomy_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |       async fn require_exists(&self, taxonomy_id: Ulid) -> anyhow::Result<()> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.09s
[INFO] running `Command { std: "docker" "inspect" "91ad6e547352c2bd00b4a534b7b9af9689a2e253b0955d12f27ffe6e0d43dd67", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "91ad6e547352c2bd00b4a534b7b9af9689a2e253b0955d12f27ffe6e0d43dd67", kill_on_drop: false }`
[INFO] [stdout] 91ad6e547352c2bd00b4a534b7b9af9689a2e253b0955d12f27ffe6e0d43dd67
