[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] checking CalebCouch/simple_database against master#8f21a5c92ea55c348c275a1bc4fedbdf181e0d64 for pr-143011
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCalebCouch%2Fsimple_database" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/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-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/CalebCouch/simple_database on toolchain 8f21a5c92ea55c348c275a1bc4fedbdf181e0d64
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "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" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded cc v1.1.30
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 6f813bdf4f9cc1e89717dea4cdd2cd0d4b82a96682b2e2c461edc880d935d87b
[INFO] running `Command { std: "docker" "start" "-a" "6f813bdf4f9cc1e89717dea4cdd2cd0d4b82a96682b2e2c461edc880d935d87b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6f813bdf4f9cc1e89717dea4cdd2cd0d4b82a96682b2e2c461edc880d935d87b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6f813bdf4f9cc1e89717dea4cdd2cd0d4b82a96682b2e2c461edc880d935d87b", kill_on_drop: false }`
[INFO] [stdout] 6f813bdf4f9cc1e89717dea4cdd2cd0d4b82a96682b2e2c461edc880d935d87b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ccd8f977b2469137459c986b0bda993a24890a276e387da43b2376e39abdc31c
[INFO] running `Command { std: "docker" "start" "-a" "ccd8f977b2469137459c986b0bda993a24890a276e387da43b2376e39abdc31c", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.87
[INFO] [stderr]    Compiling unicode-ident v1.0.13
[INFO] [stderr]    Compiling serde v1.0.210
[INFO] [stderr]    Compiling libc v0.2.159
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling serde_json v1.0.128
[INFO] [stderr]    Compiling thiserror v1.0.64
[INFO] [stderr]     Checking iana-time-zone v0.1.61
[INFO] [stderr]     Checking ryu v1.0.18
[INFO] [stderr]     Checking dyn-clone v1.0.17
[INFO] [stderr]     Checking hex v0.4.3
[INFO] [stderr]    Compiling quote v1.0.37
[INFO] [stderr]     Checking chrono v0.4.38
[INFO] [stderr]    Compiling syn v2.0.79
[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]     Checking 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[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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:43:57
[INFO] [stdout]    |
[INFO] [stdout] 43 |         if let Some(ns) = self.get_partition(&location).await {Ok(ns)} else {
[INFO] [stdout]    |                                                         ^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:43:64
[INFO] [stdout]    |
[INFO] [stdout] 43 |         if let Some(ns) = self.get_partition(&location).await {Ok(ns)} else {
[INFO] [stdout]    |                                                                ^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:43:64
[INFO] [stdout]    |
[INFO] [stdout] 43 |         if let Some(ns) = self.get_partition(&location).await {Ok(ns)} else {
[INFO] [stdout]    |                                                                ^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |             Ok(Box::new(Self::new(self.location.join(location)).await?))
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |             Ok(Box::new(Self::new(self.location.join(location)).await?))
[INFO] [stdout]    |             ^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |             Ok(Box::new(Self::new(self.location.join(location)).await?))
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |             Some(Box::new(Self::new(self.location.join(location)).await.unwrap()))
[INFO] [stdout]    |             ^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |             Some(Box::new(Self::new(self.location.join(location)).await.unwrap()))
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:52:17
[INFO] [stdout]    |
[INFO] [stdout] 52 |         } else {None}
[INFO] [stdout]    |                 ^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 49 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:58:47
[INFO] [stdout]    |
[INFO] [stdout] 58 |             Box::pin(self.get_partition(loc)).await.unwrap().clear().await?;
[INFO] [stdout]    |                                               ^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |             Box::pin(self.get_partition(loc)).await.unwrap().clear().await?;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:43:57
[INFO] [stdout]    |
[INFO] [stdout] 43 |         if let Some(ns) = self.get_partition(&location).await {Ok(ns)} else {
[INFO] [stdout]    |                                                         ^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:43:64
[INFO] [stdout]    |
[INFO] [stdout] 43 |         if let Some(ns) = self.get_partition(&location).await {Ok(ns)} else {
[INFO] [stdout]    |                                                                ^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:43:64
[INFO] [stdout]    |
[INFO] [stdout] 43 |         if let Some(ns) = self.get_partition(&location).await {Ok(ns)} else {
[INFO] [stdout]    |                                                                ^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |             Ok(Box::new(Self::new(self.location.join(location)).await?))
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |             Ok(Box::new(Self::new(self.location.join(location)).await?))
[INFO] [stdout]    |             ^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |             Ok(Box::new(Self::new(self.location.join(location)).await?))
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |             Some(Box::new(Self::new(self.location.join(location)).await.unwrap()))
[INFO] [stdout]    |             ^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |             Some(Box::new(Self::new(self.location.join(location)).await.unwrap()))
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:52:17
[INFO] [stdout]    |
[INFO] [stdout] 52 |         } else {None}
[INFO] [stdout]    |                 ^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 49 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:330:28
[INFO] [stdout]     |
[INFO] [stdout] 330 |         Ok(Database{store: Box::new(KVS::new(location.clone()).await?), location})
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:58:47
[INFO] [stdout]    |
[INFO] [stdout] 58 |             Box::pin(self.get_partition(loc)).await.unwrap().clear().await?;
[INFO] [stdout]    |                                               ^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |             Box::pin(self.get_partition(loc)).await.unwrap().clear().await?;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:347:49
[INFO] [stdout]     |
[INFO] [stdout] 347 | ...   db.values().await?.into_iter().map(|item| Ok::<I, Error>(serde_json::from_slice::<I>(&item)?)).collect::<Result<Vec<I>, Error>>()?
[INFO] [stdout]     |                                           ^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all function arguments must have a statically known size
[INFO] [stdout]     = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:358:21
[INFO] [stdout]     |
[INFO] [stdout] 358 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                     ^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all local variables must have a statically known size
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:358:16
[INFO] [stdout]     |
[INFO] [stdout] 358 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                ^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by a bound in `std::prelude::v1::Some`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:599:5
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:358:31
[INFO] [stdout]     |
[INFO] [stdout] 358 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by an implicit `Sized` bound in `std::option::Option`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:591:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:369:21
[INFO] [stdout]     |
[INFO] [stdout] 369 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                     ^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all local variables must have a statically known size
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:330:28
[INFO] [stdout]     |
[INFO] [stdout] 330 |         Ok(Database{store: Box::new(KVS::new(location.clone()).await?), location})
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:369:16
[INFO] [stdout]     |
[INFO] [stdout] 369 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                ^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by a bound in `std::prelude::v1::Some`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:599:5
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:369:31
[INFO] [stdout]     |
[INFO] [stdout] 369 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by an implicit `Sized` bound in `std::option::Option`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:591:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:347:49
[INFO] [stdout]     |
[INFO] [stdout] 347 | ...   db.values().await?.into_iter().map(|item| Ok::<I, Error>(serde_json::from_slice::<I>(&item)?)).collect::<Result<Vec<I>, Error>>()?
[INFO] [stdout]     |                                           ^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all function arguments must have a statically known size
[INFO] [stdout]     = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:358:21
[INFO] [stdout]     |
[INFO] [stdout] 358 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                     ^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all local variables must have a statically known size
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:396:23
[INFO] [stdout]     |
[INFO] [stdout] 396 |             Self::add(&*partition, &value, pk.clone()).await?;
[INFO] [stdout]     |                       ^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:397:23
[INFO] [stdout]     |
[INFO] [stdout] 397 |             Self::add(&*partition, ALL.as_bytes(), pk.clone()).await?;
[INFO] [stdout]     |                       ^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:358:16
[INFO] [stdout]     |
[INFO] [stdout] 358 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                ^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by a bound in `std::prelude::v1::Some`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:599:5
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:358:31
[INFO] [stdout]     |
[INFO] [stdout] 358 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by an implicit `Sized` bound in `std::option::Option`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:591:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:369:21
[INFO] [stdout]     |
[INFO] [stdout] 369 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                     ^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all local variables must have a statically known size
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:369:16
[INFO] [stdout]     |
[INFO] [stdout] 369 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                ^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by a bound in `std::prelude::v1::Some`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:599:5
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:369:31
[INFO] [stdout]     |
[INFO] [stdout] 369 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by an implicit `Sized` bound in `std::option::Option`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:591:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:406:21
[INFO] [stdout]     |
[INFO] [stdout] 406 |         if let Some(index) = index_db.get(pk).await? {
[INFO] [stdout]     |                     ^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all local variables must have a statically known size
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:406:16
[INFO] [stdout]     |
[INFO] [stdout] 406 |         if let Some(index) = index_db.get(pk).await? {
[INFO] [stdout]     |                ^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by a bound in `std::prelude::v1::Some`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:599:5
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:406:30
[INFO] [stdout]     |
[INFO] [stdout] 406 |         if let Some(index) = index_db.get(pk).await? {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by an implicit `Sized` bound in `std::option::Option`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:591:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:412:30
[INFO] [stdout]     |
[INFO] [stdout] 412 |                 Self::remove(&*partition, &value, pk).await?;
[INFO] [stdout]     |                              ^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:413:30
[INFO] [stdout]     |
[INFO] [stdout] 413 |                 Self::remove(&*partition, ALL.as_bytes(), pk).await?;
[INFO] [stdout]     |                              ^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:455:31
[INFO] [stdout]     |
[INFO] [stdout] 455 |         let all = if let Some(p) = partition.get(ALL.as_bytes()).await? {
[INFO] [stdout]     |                               ^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all local variables must have a statically known size
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:396:23
[INFO] [stdout]     |
[INFO] [stdout] 396 |             Self::add(&*partition, &value, pk.clone()).await?;
[INFO] [stdout]     |                       ^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:397:23
[INFO] [stdout]     |
[INFO] [stdout] 397 |             Self::add(&*partition, ALL.as_bytes(), pk.clone()).await?;
[INFO] [stdout]     |                       ^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:455:26
[INFO] [stdout]     |
[INFO] [stdout] 455 |         let all = if let Some(p) = partition.get(ALL.as_bytes()).await? {
[INFO] [stdout]     |                          ^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by a bound in `std::prelude::v1::Some`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:599:5
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:455:36
[INFO] [stdout]     |
[INFO] [stdout] 455 |         let all = if let Some(p) = partition.get(ALL.as_bytes()).await? {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by an implicit `Sized` bound in `std::option::Option`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:591:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:406:21
[INFO] [stdout]     |
[INFO] [stdout] 406 |         if let Some(index) = index_db.get(pk).await? {
[INFO] [stdout]     |                     ^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all local variables must have a statically known size
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:406:16
[INFO] [stdout]     |
[INFO] [stdout] 406 |         if let Some(index) = index_db.get(pk).await? {
[INFO] [stdout]     |                ^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by a bound in `std::prelude::v1::Some`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:599:5
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:406:30
[INFO] [stdout]     |
[INFO] [stdout] 406 |         if let Some(index) = index_db.get(pk).await? {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by an implicit `Sized` bound in `std::option::Option`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:591:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:412:30
[INFO] [stdout]     |
[INFO] [stdout] 412 |                 Self::remove(&*partition, &value, pk).await?;
[INFO] [stdout]     |                              ^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:413:30
[INFO] [stdout]     |
[INFO] [stdout] 413 |                 Self::remove(&*partition, ALL.as_bytes(), pk).await?;
[INFO] [stdout]     |                              ^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:507:76
[INFO] [stdout]     |
[INFO] [stdout] 507 |                     let mut index = index.values().await?.into_iter().map(|keys|
[INFO] [stdout]     |                                                                            ^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all function arguments must have a statically known size
[INFO] [stdout]     = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/state.rs:19:20
[INFO] [stdout]    |
[INFO] [stdout] 19 |             store: Box::new(KVS::new(path).await?)
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:455:31
[INFO] [stdout]     |
[INFO] [stdout] 455 |         let all = if let Some(p) = partition.get(ALL.as_bytes()).await? {
[INFO] [stdout]     |                               ^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all local variables must have a statically known size
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:455:26
[INFO] [stdout]     |
[INFO] [stdout] 455 |         let all = if let Some(p) = partition.get(ALL.as_bytes()).await? {
[INFO] [stdout]     |                          ^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by a bound in `std::prelude::v1::Some`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:599:5
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:455:36
[INFO] [stdout]     |
[INFO] [stdout] 455 |         let all = if let Some(p) = partition.get(ALL.as_bytes()).await? {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by an implicit `Sized` bound in `std::option::Option`
[INFO] [stdout]    --> /rustc/8f21a5c92ea55c348c275a1bc4fedbdf181e0d64/library/core/src/option.rs:591:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:507:76
[INFO] [stdout]     |
[INFO] [stdout] 507 |                     let mut index = index.values().await?.into_iter().map(|keys|
[INFO] [stdout]     |                                                                            ^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all function arguments must have a statically known size
[INFO] [stdout]     = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/state.rs:19:20
[INFO] [stdout]    |
[INFO] [stdout] 19 |             store: Box::new(KVS::new(path).await?)
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:319:16
[INFO] [stdout]     |
[INFO] [stdout] 319 |     store: Box<dyn KeyValueStore>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/state.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 |     store: Box<dyn KeyValueStore>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `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]     |                              ^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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 `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]     |                                 ^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:319:16
[INFO] [stdout]     |
[INFO] [stdout] 319 |     store: Box<dyn KeyValueStore>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/state.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 |     store: Box<dyn KeyValueStore>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `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]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `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]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `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]     |                              ^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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 `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]     |                                 ^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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 `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]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `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]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:319:5
[INFO] [stdout]     |
[INFO] [stdout] 317 | #[derive(Clone)]
[INFO] [stdout]     |          ----- in this derive macro expansion
[INFO] [stdout] 318 | pub struct Database {
[INFO] [stdout] 319 |     store: Box<dyn KeyValueStore>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/state.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 9  | #[derive(Clone)]
[INFO] [stdout]    |          ----- in this derive macro expansion
[INFO] [stdout] 10 | pub struct State {
[INFO] [stdout] 11 |     store: Box<dyn KeyValueStore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:319:5
[INFO] [stdout]     |
[INFO] [stdout] 317 | #[derive(Clone)]
[INFO] [stdout]     |          ----- in this derive macro expansion
[INFO] [stdout] 318 | pub struct Database {
[INFO] [stdout] 319 |     store: Box<dyn KeyValueStore>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `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 `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/state.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 9  | #[derive(Clone)]
[INFO] [stdout]    |          ----- in this derive macro expansion
[INFO] [stdout] 10 | pub struct State {
[INFO] [stdout] 11 |     store: Box<dyn KeyValueStore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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 `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `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, E0277, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `simple-database` (lib test) due to 64 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] Some errors have detailed explanations: E0038, E0277, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `simple-database` (lib) due to 64 previous errors
[INFO] running `Command { std: "docker" "inspect" "ccd8f977b2469137459c986b0bda993a24890a276e387da43b2376e39abdc31c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ccd8f977b2469137459c986b0bda993a24890a276e387da43b2376e39abdc31c", kill_on_drop: false }`
[INFO] [stdout] ccd8f977b2469137459c986b0bda993a24890a276e387da43b2376e39abdc31c
