[INFO] cloning repository https://github.com/CalebCouch/simple_database
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/CalebCouch/simple_database" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCalebCouch%2Fsimple_database", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCalebCouch%2Fsimple_database'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] b46f48eef5d6f0be83b5ae588450e0e4f3043924
[INFO] documenting CalebCouch/simple_database against beta-2025-10-28 for beta-1.92-rustdoc-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCalebCouch%2Fsimple_database" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/CalebCouch/simple_database
[INFO] finished tweaking git repo https://github.com/CalebCouch/simple_database
[INFO] tweaked toml for git repo https://github.com/CalebCouch/simple_database written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/CalebCouch/simple_database on toolchain beta-2025-10-28
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-10-28" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/CalebCouch/simple_database 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" "+beta-2025-10-28" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] f33db7f07fefa869466d2b44d46ac89f87a62d0e74a3c000003d380690be4687
[INFO] running `Command { std: "docker" "start" "-a" "f33db7f07fefa869466d2b44d46ac89f87a62d0e74a3c000003d380690be4687", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f33db7f07fefa869466d2b44d46ac89f87a62d0e74a3c000003d380690be4687", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f33db7f07fefa869466d2b44d46ac89f87a62d0e74a3c000003d380690be4687", kill_on_drop: false }`
[INFO] [stdout] f33db7f07fefa869466d2b44d46ac89f87a62d0e74a3c000003d380690be4687
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "doc" "--frozen" "--no-deps" "--document-private-items" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 967a713cf4b881b9061e9bec561d63d88dcc7633b79fc2dcb8b5d3b0480c64c2
[INFO] running `Command { std: "docker" "start" "-a" "967a713cf4b881b9061e9bec561d63d88dcc7633b79fc2dcb8b5d3b0480c64c2", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.87
[INFO] [stderr]    Compiling libc v0.2.159
[INFO] [stderr]    Compiling serde v1.0.210
[INFO] [stderr]    Compiling thiserror v1.0.64
[INFO] [stderr]    Compiling serde_json v1.0.128
[INFO] [stderr]     Checking iana-time-zone v0.1.61
[INFO] [stderr]     Checking dyn-clone v1.0.17
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling quote v1.0.37
[INFO] [stderr]    Compiling syn v2.0.79
[INFO] [stderr]     Checking chrono v0.4.38
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]    Compiling serde_derive v1.0.210
[INFO] [stderr]    Compiling thiserror-impl v1.0.64
[INFO] [stderr]     Checking uuid v1.10.0
[INFO] [stderr]  Documenting simple-database v1.2.2 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `tokio`
[INFO] [stdout]  --> src/memory_store.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio::sync::Mutex;
[INFO] [stdout]   |     ^^^^^ use of unresolved module or unlinked crate `tokio`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `async_trait`
[INFO] [stdout]   --> src/traits.rs:12:3
[INFO] [stdout]    |
[INFO] [stdout] 12 | #[async_trait::async_trait]
[INFO] [stdout]    |   ^^^^^^^^^^^ use of unresolved module or unlinked crate `async_trait`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `async_trait`
[INFO] [stdout]   --> src/memory_store.rs:28:3
[INFO] [stdout]    |
[INFO] [stdout] 28 | #[async_trait::async_trait]
[INFO] [stdout]    |   ^^^^^^^^^^^ use of unresolved module or unlinked crate `async_trait`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:319:16
[INFO] [stdout]     |
[INFO] [stdout] 319 |     store: Box<dyn KeyValueStore>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout]  14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout]  15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout]  16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout]  17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout]  18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout]  19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout]  20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout]  21 |
[INFO] [stdout]  22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout]  23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout]  24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/state.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 |     store: Box<dyn KeyValueStore>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:357:30
[INFO] [stdout]     |
[INFO] [stdout] 357 |     async fn add(partition: &dyn KeyValueStore, key: &[u8], value: Vec<u8>) -> Result<(), Error> {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout]  14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout]  15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout]  16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout]  17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout]  18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout]  19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout]  20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout]  21 |
[INFO] [stdout]  22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout]  23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout]  24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] help: you might have meant to use `Self` to refer to the implementing type
[INFO] [stdout]     |
[INFO] [stdout] 357 -     async fn add(partition: &dyn KeyValueStore, key: &[u8], value: Vec<u8>) -> Result<(), Error> {
[INFO] [stdout] 357 +     async fn add(partition: &Self, key: &[u8], value: Vec<u8>) -> Result<(), Error> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:368:33
[INFO] [stdout]     |
[INFO] [stdout] 368 |     async fn remove(partition: &dyn KeyValueStore, key: &[u8], value: &[u8]) -> Result<(), Error> {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout]  14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout]  15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout]  16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout]  17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout]  18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout]  19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout]  20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout]  21 |
[INFO] [stdout]  22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout]  23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout]  24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] help: you might have meant to use `Self` to refer to the implementing type
[INFO] [stdout]     |
[INFO] [stdout] 368 -     async fn remove(partition: &dyn KeyValueStore, key: &[u8], value: &[u8]) -> Result<(), Error> {
[INFO] [stdout] 368 +     async fn remove(partition: &Self, key: &[u8], value: &[u8]) -> Result<(), Error> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `traits::KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `traits::KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `traits::KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0038, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stderr] error: could not document `simple-database`
[INFO] running `Command { std: "docker" "inspect" "967a713cf4b881b9061e9bec561d63d88dcc7633b79fc2dcb8b5d3b0480c64c2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "967a713cf4b881b9061e9bec561d63d88dcc7633b79fc2dcb8b5d3b0480c64c2", kill_on_drop: false }`
[INFO] [stdout] 967a713cf4b881b9061e9bec561d63d88dcc7633b79fc2dcb8b5d3b0480c64c2
