[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 try#f77b5bc6c7c84df104f86b0dd01d9490e3923fa8 for pr-147834
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCalebCouch%2Fsimple_database" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/CalebCouch/simple_database
[INFO] finished tweaking git repo https://github.com/CalebCouch/simple_database
[INFO] tweaked toml for git repo https://github.com/CalebCouch/simple_database written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/CalebCouch/simple_database on toolchain f77b5bc6c7c84df104f86b0dd01d9490e3923fa8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "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" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 19ba91c3d9685978a16427262d288cefdda60d34fe4114c3490a54eefa816f1c
[INFO] running `Command { std: "docker" "start" "-a" "19ba91c3d9685978a16427262d288cefdda60d34fe4114c3490a54eefa816f1c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "19ba91c3d9685978a16427262d288cefdda60d34fe4114c3490a54eefa816f1c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "19ba91c3d9685978a16427262d288cefdda60d34fe4114c3490a54eefa816f1c", kill_on_drop: false }`
[INFO] [stdout] 19ba91c3d9685978a16427262d288cefdda60d34fe4114c3490a54eefa816f1c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fed1c9616394d8140b52fc10b1834c04399a4f8318b7ff15bdde9f41117f3e15
[INFO] running `Command { std: "docker" "start" "-a" "fed1c9616394d8140b52fc10b1834c04399a4f8318b7ff15bdde9f41117f3e15", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.159
[INFO] [stderr]    Compiling serde_json v1.0.128
[INFO] [stderr]     Checking dyn-clone v1.0.17
[INFO] [stderr]    Compiling syn v2.0.79
[INFO] [stderr]     Checking chrono v0.4.38
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]    Compiling serde_derive v1.0.210
[INFO] [stderr]    Compiling thiserror-impl v1.0.64
[INFO] [stderr]     Checking thiserror v1.0.64
[INFO] [stderr]     Checking serde v1.0.210
[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 `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 `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/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[E0282]: type annotations needed
[INFO] [stdout]   --> src/memory_store.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let mut memory = MEMORY.lock().await;
[INFO] [stdout]    |             ^^^^^^^^^^
[INFO] [stdout] 32 |         let store = if let Some(store) = memory.get(&location) {
[INFO] [stdout]    |                                          ------ type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `memory` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let mut memory: /* Type */ = MEMORY.lock().await;
[INFO] [stdout]    |                       ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/memory_store.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let mut memory = MEMORY.lock().await;
[INFO] [stdout]    |             ^^^^^^^^^^
[INFO] [stdout] 32 |         let store = if let Some(store) = memory.get(&location) {
[INFO] [stdout]    |                                          ------ type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `memory` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let mut memory: /* Type */ = MEMORY.lock().await;
[INFO] [stdout]    |                       ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/memory_store.rs:33:13
[INFO] [stdout]    |
[INFO] [stdout] 33 |             store.clone()
[INFO] [stdout]    |             ^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/memory_store.rs:33:13
[INFO] [stdout]    |
[INFO] [stdout] 33 |             store.clone()
[INFO] [stdout]    |             ^^^^^ cannot infer 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: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: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: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: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: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: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[E0282]: type annotations needed for `(_, _)`
[INFO] [stdout]   --> src/memory_store.rs:77:50
[INFO] [stdout]    |
[INFO] [stdout] 77 |         Ok(self.store.lock().await.1.iter().map(|(k, v)| (k.clone(), v.clone())).collect())
[INFO] [stdout]    |                                                  ^^^^^^   - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type, where the placeholders `_` are specified
[INFO] [stdout]    |
[INFO] [stdout] 77 |         Ok(self.store.lock().await.1.iter().map(|(k, v): (_, _)| (k.clone(), v.clone())).collect())
[INFO] [stdout]    |                                                        ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed for `({type error}, _)`
[INFO] [stdout]   --> src/memory_store.rs:77:50
[INFO] [stdout]    |
[INFO] [stdout] 77 |         Ok(self.store.lock().await.1.iter().map(|(k, v)| (k.clone(), v.clone())).collect())
[INFO] [stdout]    |                                                  ^^^^^^              - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type, where the placeholders `_` are specified
[INFO] [stdout]    |
[INFO] [stdout] 77 |         Ok(self.store.lock().await.1.iter().map(|(k, v): (_, _)| (k.clone(), v.clone())).collect())
[INFO] [stdout]    |                                                        ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed for `(_, _)`
[INFO] [stdout]   --> src/memory_store.rs:77:50
[INFO] [stdout]    |
[INFO] [stdout] 77 |         Ok(self.store.lock().await.1.iter().map(|(k, v)| (k.clone(), v.clone())).collect())
[INFO] [stdout]    |                                                  ^^^^^^   - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type, where the placeholders `_` are specified
[INFO] [stdout]    |
[INFO] [stdout] 77 |         Ok(self.store.lock().await.1.iter().map(|(k, v): (_, _)| (k.clone(), v.clone())).collect())
[INFO] [stdout]    |                                                        ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed for `({type error}, _)`
[INFO] [stdout]   --> src/memory_store.rs:77:50
[INFO] [stdout]    |
[INFO] [stdout] 77 |         Ok(self.store.lock().await.1.iter().map(|(k, v)| (k.clone(), v.clone())).collect())
[INFO] [stdout]    |                                                  ^^^^^^              - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type, where the placeholders `_` are specified
[INFO] [stdout]    |
[INFO] [stdout] 77 |         Ok(self.store.lock().await.1.iter().map(|(k, v): (_, _)| (k.clone(), v.clone())).collect())
[INFO] [stdout]    |                                                        ++++++++
[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/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[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:335:13
[INFO] [stdout]     |
[INFO] [stdout] 335 |             db.get(pk).await?
[INFO] [stdout]     |             ^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:335:13
[INFO] [stdout]     |
[INFO] [stdout] 335 |             db.get(pk).await?
[INFO] [stdout]     |             ^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:347:13
[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]     |       ^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:347:13
[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]     |       ^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:347:13
[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]     |       ^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:347:13
[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]     |       ^^^^^^^^^^^^^^^^^^ cannot infer 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: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[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:353:13
[INFO] [stdout]     |
[INFO] [stdout] 353 |             db.keys().await?
[INFO] [stdout]     |             ^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:353:13
[INFO] [stdout]     |
[INFO] [stdout] 353 |             db.keys().await?
[INFO] [stdout]     |             ^^ cannot infer 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: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: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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:607: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: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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:607: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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:599: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: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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:599: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: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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:607: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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:599: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: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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:607: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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:599:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:391:9
[INFO] [stdout]     |
[INFO] [stdout] 391 |         db.partition(PathBuf::from(MAIN)).await?.set(&pk, &serde_json::to_vec(item)?).await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:391:9
[INFO] [stdout]     |
[INFO] [stdout] 391 |         db.partition(PathBuf::from(MAIN)).await?.set(&pk, &serde_json::to_vec(item)?).await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 |         db.partition(PathBuf::from(INDEX)).await?.set(&pk, &serde_json::to_vec(&keys)?).await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 |         db.partition(PathBuf::from(INDEX)).await?.set(&pk, &serde_json::to_vec(&keys)?).await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[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: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[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[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |         db.partition(PathBuf::from(MAIN)).await?.delete(pk).await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |         db.partition(PathBuf::from(MAIN)).await?.delete(pk).await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:405:13
[INFO] [stdout]     |
[INFO] [stdout] 405 |         let index_db = db.partition(PathBuf::from(INDEX)).await?;
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 406 |         if let Some(index) = index_db.get(pk).await? {
[INFO] [stdout]     |                              -------- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `index_db` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 405 |         let index_db: /* Type */ = db.partition(PathBuf::from(INDEX)).await?;
[INFO] [stdout]     |                     ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:405:13
[INFO] [stdout]     |
[INFO] [stdout] 405 |         let index_db = db.partition(PathBuf::from(INDEX)).await?;
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 406 |         if let Some(index) = index_db.get(pk).await? {
[INFO] [stdout]     |                              -------- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `index_db` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 405 |         let index_db: /* Type */ = db.partition(PathBuf::from(INDEX)).await?;
[INFO] [stdout]     |                     ++++++++++++
[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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:607: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: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: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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:599: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: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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:607: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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:599: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: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[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[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:452:13
[INFO] [stdout]     |
[INFO] [stdout] 452 |         let partition = if let Some(p) = db.get_partition(&partition_name).await {p} else {return none();};
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 455 |         let all = if let Some(p) = partition.get(ALL.as_bytes()).await? {
[INFO] [stdout]     |                                    --------- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `partition` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 452 |         let partition: /* Type */ = if let Some(p) = db.get_partition(&partition_name).await {p} else {return none();};
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:452:13
[INFO] [stdout]     |
[INFO] [stdout] 452 |         let partition = if let Some(p) = db.get_partition(&partition_name).await {p} else {return none();};
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 455 |         let all = if let Some(p) = partition.get(ALL.as_bytes()).await? {
[INFO] [stdout]     |                                    --------- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `partition` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 452 |         let partition: /* Type */ = if let Some(p) = db.get_partition(&partition_name).await {p} else {return none();};
[INFO] [stdout]     |                      ++++++++++++
[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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:607: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: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: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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:599: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: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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:607:5
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:453:13
[INFO] [stdout]     |
[INFO] [stdout] 453 |         let index = if let Some(p) = db.get_partition(&PathBuf::from(INDEX)).await {p} else {return none();};
[INFO] [stdout]     |             ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |             let keys = index.get(&pk).await?.ok_or(
[INFO] [stdout]     |                        ----- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `index` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 453 |         let index: /* Type */ = if let Some(p) = db.get_partition(&PathBuf::from(INDEX)).await {p} else {return none();};
[INFO] [stdout]     |                  ++++++++++++
[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/f77b5bc6c7c84df104f86b0dd01d9490e3923fa8/library/core/src/option.rs:599:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:461:24
[INFO] [stdout]     |
[INFO] [stdout] 461 |             let keys = index.get(&pk).await?.ok_or(
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:466:28
[INFO] [stdout]     |
[INFO] [stdout] 466 |                 let main = db.get_partition(&PathBuf::from(MAIN)).await.ok_or(
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:453:13
[INFO] [stdout]     |
[INFO] [stdout] 453 |         let index = if let Some(p) = db.get_partition(&PathBuf::from(INDEX)).await {p} else {return none();};
[INFO] [stdout]     |             ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |             let keys = index.get(&pk).await?.ok_or(
[INFO] [stdout]     |                        ----- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `index` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 453 |         let index: /* Type */ = if let Some(p) = db.get_partition(&PathBuf::from(INDEX)).await {p} else {return none();};
[INFO] [stdout]     |                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:461:24
[INFO] [stdout]     |
[INFO] [stdout] 461 |             let keys = index.get(&pk).await?.ok_or(
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:466:28
[INFO] [stdout]     |
[INFO] [stdout] 466 |                 let main = db.get_partition(&PathBuf::from(MAIN)).await.ok_or(
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:507:37
[INFO] [stdout]     |
[INFO] [stdout] 507 |                     let mut index = index.values().await?.into_iter().map(|keys|
[INFO] [stdout]     |                                     ^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:507:37
[INFO] [stdout]     |
[INFO] [stdout] 507 |                     let mut index = index.values().await?.into_iter().map(|keys|
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^ cannot infer 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[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:510:40
[INFO] [stdout]     |
[INFO] [stdout] 510 |                     index.sort_by_key(|i| i.get("timestamp_stored").unwrap().clone());
[INFO] [stdout]     |                                        ^  - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 510 |                     index.sort_by_key(|i: /* Type */| i.get("timestamp_stored").unwrap().clone());
[INFO] [stdout]     |                                         ++++++++++++
[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[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:507:37
[INFO] [stdout]     |
[INFO] [stdout] 507 |                     let mut index = index.values().await?.into_iter().map(|keys|
[INFO] [stdout]     |                                     ^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:507:37
[INFO] [stdout]     |
[INFO] [stdout] 507 |                     let mut index = index.values().await?.into_iter().map(|keys|
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^ cannot infer 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[E0282]: type annotations needed
[INFO] [stdout]    --> src/database.rs:510:40
[INFO] [stdout]     |
[INFO] [stdout] 510 |                     index.sort_by_key(|i| i.get("timestamp_stored").unwrap().clone());
[INFO] [stdout]     |                                        ^  - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 510 |                     index.sort_by_key(|i: /* Type */| i.get("timestamp_stored").unwrap().clone());
[INFO] [stdout]     |                                         ++++++++++++
[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: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/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/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: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: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/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] [stderr] error: could not compile `simple-database` (lib test) due to 83 previous errors
[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] [stderr] warning: build failed, waiting for other jobs to finish...
[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] [stderr] error: could not compile `simple-database` (lib) due to 83 previous errors
[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, E0282, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0038, E0277, E0282, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "fed1c9616394d8140b52fc10b1834c04399a4f8318b7ff15bdde9f41117f3e15", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fed1c9616394d8140b52fc10b1834c04399a4f8318b7ff15bdde9f41117f3e15", kill_on_drop: false }`
[INFO] [stdout] fed1c9616394d8140b52fc10b1834c04399a4f8318b7ff15bdde9f41117f3e15
