[INFO] cloning repository https://github.com/CalebCouch/simple_database
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/CalebCouch/simple_database" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCalebCouch%2Fsimple_database", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCalebCouch%2Fsimple_database'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] b46f48eef5d6f0be83b5ae588450e0e4f3043924
[INFO] checking CalebCouch/simple_database against master#46424fb5054f211ec836c5c03159f92e46bb35ac for pr-139042
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCalebCouch%2Fsimple_database" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/CalebCouch/simple_database on toolchain 46424fb5054f211ec836c5c03159f92e46bb35ac
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[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-7-tc1/source/Cargo.toml
[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" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded cc v1.1.30
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4b26683ee3c49f365255c425c23003cbf4366de097804722c29c5bbbee3624d2" "/opt/rustwide/cargo-home/bin/cargo" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 68ec2a6c29359d10987db6918b298111dabfc62b4fb498949db0edd273f89d73
[INFO] running `Command { std: "docker" "start" "-a" "68ec2a6c29359d10987db6918b298111dabfc62b4fb498949db0edd273f89d73", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "68ec2a6c29359d10987db6918b298111dabfc62b4fb498949db0edd273f89d73", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "68ec2a6c29359d10987db6918b298111dabfc62b4fb498949db0edd273f89d73", kill_on_drop: false }`
[INFO] [stdout] 68ec2a6c29359d10987db6918b298111dabfc62b4fb498949db0edd273f89d73
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4b26683ee3c49f365255c425c23003cbf4366de097804722c29c5bbbee3624d2" "/opt/rustwide/cargo-home/bin/cargo" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5718c825259af8d96c3d267501e691edea8bbe022db6bbd16b4af84b1b0ad207
[INFO] running `Command { std: "docker" "start" "-a" "5718c825259af8d96c3d267501e691edea8bbe022db6bbd16b4af84b1b0ad207", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.87
[INFO] [stderr]    Compiling libc v0.2.159
[INFO] [stderr]    Compiling serde v1.0.210
[INFO] [stderr]    Compiling serde_json v1.0.128
[INFO] [stderr]    Compiling thiserror v1.0.64
[INFO] [stderr]     Checking iana-time-zone v0.1.61
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling quote v1.0.37
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]     Checking chrono v0.4.38
[INFO] [stderr]    Compiling syn v2.0.79
[INFO] [stderr]    Compiling serde_derive v1.0.210
[INFO] [stderr]    Compiling thiserror-impl v1.0.64
[INFO] [stderr]     Checking uuid v1.10.0
[INFO] [stderr]     Checking simple-database v1.2.2 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `tokio`
[INFO] [stdout]  --> src/memory_store.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio::sync::Mutex;
[INFO] [stdout]   |     ^^^^^ use of unresolved module or unlinked crate `tokio`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `async_trait`
[INFO] [stdout]   --> src/traits.rs:12:3
[INFO] [stdout]    |
[INFO] [stdout] 12 | #[async_trait::async_trait]
[INFO] [stdout]    |   ^^^^^^^^^^^ use of unresolved module or unlinked crate `async_trait`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `async_trait`
[INFO] [stdout]   --> src/memory_store.rs:28:3
[INFO] [stdout]    |
[INFO] [stdout] 28 | #[async_trait::async_trait]
[INFO] [stdout]    |   ^^^^^^^^^^^ use of unresolved module or unlinked crate `async_trait`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `tokio`
[INFO] [stdout]  --> src/memory_store.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio::sync::Mutex;
[INFO] [stdout]   |     ^^^^^ use of unresolved module or unlinked crate `tokio`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `async_trait`
[INFO] [stdout]   --> src/traits.rs:12:3
[INFO] [stdout]    |
[INFO] [stdout] 12 | #[async_trait::async_trait]
[INFO] [stdout]    |   ^^^^^^^^^^^ use of unresolved module or unlinked crate `async_trait`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `async_trait`
[INFO] [stdout]   --> src/memory_store.rs:28:3
[INFO] [stdout]    |
[INFO] [stdout] 28 | #[async_trait::async_trait]
[INFO] [stdout]    |   ^^^^^^^^^^^ use of unresolved module or unlinked crate `async_trait`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | clone_trait_object!(KeyValueStore);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout]    = note: this error originates in the macro `$crate::__internal_clone_trait_object` which comes from the expansion of the macro `clone_trait_object` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/traits.rs: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/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/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/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:16
[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]    = note: required for the cast from `Box<MemoryStore>` to `Box<dyn KeyValueStore>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |             Ok(Box::new(Self::new(self.location.join(location)).await?))
[INFO] [stdout]    |             ^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |             Ok(Box::new(Self::new(self.location.join(location)).await?))
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:51:18
[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]    = note: required for the cast from `Box<MemoryStore>` to `Box<dyn KeyValueStore>`
[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:62
[INFO] [stdout]    |
[INFO] [stdout] 58 |             Box::pin(self.get_partition(loc)).await.unwrap().clear().await?;
[INFO] [stdout]    |                                                              ^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |             Box::pin(self.get_partition(loc)).await.unwrap().clear().await?;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:43:57
[INFO] [stdout]    |
[INFO] [stdout] 43 |         if let Some(ns) = self.get_partition(&location).await {Ok(ns)} else {
[INFO] [stdout]    |                                                         ^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:43:64
[INFO] [stdout]    |
[INFO] [stdout] 43 |         if let Some(ns) = self.get_partition(&location).await {Ok(ns)} else {
[INFO] [stdout]    |                                                                ^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:43:64
[INFO] [stdout]    |
[INFO] [stdout] 43 |         if let Some(ns) = self.get_partition(&location).await {Ok(ns)} else {
[INFO] [stdout]    |                                                                ^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |             Ok(Box::new(Self::new(self.location.join(location)).await?))
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:330:28
[INFO] [stdout]     |
[INFO] [stdout] 330 |         Ok(Database{store: Box::new(KVS::new(location.clone()).await?), location})
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout] 13  | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14  |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15  |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16  |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17  |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18  |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19  |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20  |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21  |
[INFO] [stdout] 22  |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23  |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24  |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/memory_store.rs:45:16
[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]    = note: required for the cast from `Box<MemoryStore>` to `Box<dyn KeyValueStore>`
[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/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]     = note: required for the cast from `Box<KVS>` to `Box<(dyn KeyValueStore + 'static)>`
[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/database.rs:334:41
[INFO] [stdout]     |
[INFO] [stdout] 334 |         Ok(if let Some(db) = self.store.get_partition(&PathBuf::from(MAIN)).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:334:30
[INFO] [stdout]     |
[INFO] [stdout] 334 |         Ok(if let Some(db) = self.store.get_partition(&PathBuf::from(MAIN)).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:51:18
[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]    = note: required for the cast from `Box<MemoryStore>` to `Box<dyn KeyValueStore>`
[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/database.rs:346:41
[INFO] [stdout]     |
[INFO] [stdout] 346 |         Ok(if let Some(db) = self.store.get_partition(&PathBuf::from(MAIN)).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:346:30
[INFO] [stdout]     |
[INFO] [stdout] 346 |         Ok(if let Some(db) = self.store.get_partition(&PathBuf::from(MAIN)).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: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:62
[INFO] [stdout]    |
[INFO] [stdout] 58 |             Box::pin(self.get_partition(loc)).await.unwrap().clear().await?;
[INFO] [stdout]    |                                                              ^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:347:49
[INFO] [stdout]     |
[INFO] [stdout] 347 | ...   db.values().await?.into_iter().map(|item| Ok::<I, Error>(serde_json::from_slice::<I>(&item)?)).collect::<Result<Vec<I>, Error>>()?
[INFO] [stdout]     |                                           ^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all function arguments must have a statically known size
[INFO] [stdout]     = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:352:41
[INFO] [stdout]     |
[INFO] [stdout] 352 |         Ok(if let Some(db) = self.store.get_partition(&PathBuf::from(MAIN)).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:352:30
[INFO] [stdout]     |
[INFO] [stdout] 352 |         Ok(if let Some(db) = self.store.get_partition(&PathBuf::from(MAIN)).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:358:41
[INFO] [stdout]     |
[INFO] [stdout] 358 |         if let Some(values) = partition.get(key).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/database.rs:358:31
[INFO] [stdout]     |
[INFO] [stdout] 358 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout] 13  | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14  |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15  |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16  |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17  |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18  |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19  |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20  |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21  |
[INFO] [stdout] 22  |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23  |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24  |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:358: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]     = help: unsized locals are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:358: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:580: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:572:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:361:23
[INFO] [stdout]     |
[INFO] [stdout] 361 |             partition.set(key, &serde_json::to_vec(&values)?).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:361:13
[INFO] [stdout]     |
[INFO] [stdout] 361 |             partition.set(key, &serde_json::to_vec(&values)?).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:363:23
[INFO] [stdout]     |
[INFO] [stdout] 363 |             partition.set(key, &serde_json::to_vec(&vec![value])?).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:363:13
[INFO] [stdout]     |
[INFO] [stdout] 363 |             partition.set(key, &serde_json::to_vec(&vec![value])?).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:369:41
[INFO] [stdout]     |
[INFO] [stdout] 369 |         if let Some(values) = partition.get(key).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:369:31
[INFO] [stdout]     |
[INFO] [stdout] 369 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout] 13  | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14  |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15  |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16  |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17  |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18  |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19  |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20  |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21  |
[INFO] [stdout] 22  |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23  |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24  |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs: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]     = help: unsized locals 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: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:580: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:572:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:373:27
[INFO] [stdout]     |
[INFO] [stdout] 373 |                 partition.set(key, &serde_json::to_vec(&values)?).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:373:17
[INFO] [stdout]     |
[INFO] [stdout] 373 |                 partition.set(key, &serde_json::to_vec(&values)?).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:375:27
[INFO] [stdout]     |
[INFO] [stdout] 375 |                 partition.delete(key).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:375:17
[INFO] [stdout]     |
[INFO] [stdout] 375 |                 partition.delete(key).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:391:12
[INFO] [stdout]     |
[INFO] [stdout] 391 |         db.partition(PathBuf::from(MAIN)).await?.set(&pk, &serde_json::to_vec(item)?).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:391:9
[INFO] [stdout]     |
[INFO] [stdout] 391 |         db.partition(PathBuf::from(MAIN)).await?.set(&pk, &serde_json::to_vec(item)?).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:392:12
[INFO] [stdout]     |
[INFO] [stdout] 392 |         db.partition(PathBuf::from(INDEX)).await?.set(&pk, &serde_json::to_vec(&keys)?).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:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 |         db.partition(PathBuf::from(INDEX)).await?.set(&pk, &serde_json::to_vec(&keys)?).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:394:32
[INFO] [stdout]     |
[INFO] [stdout] 394 |             let partition = db.partition(PathBuf::from(&format!("__{}__", key))).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: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]     = note: required for the cast from `Box<KVS>` to `Box<(dyn KeyValueStore + 'static)>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:394:29
[INFO] [stdout]     |
[INFO] [stdout] 394 |             let partition = db.partition(PathBuf::from(&format!("__{}__", key))).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:334:41
[INFO] [stdout]     |
[INFO] [stdout] 334 |         Ok(if let Some(db) = self.store.get_partition(&PathBuf::from(MAIN)).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:334:30
[INFO] [stdout]     |
[INFO] [stdout] 334 |         Ok(if let Some(db) = self.store.get_partition(&PathBuf::from(MAIN)).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:404:12
[INFO] [stdout]     |
[INFO] [stdout] 404 |         db.partition(PathBuf::from(MAIN)).await?.delete(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:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |         db.partition(PathBuf::from(MAIN)).await?.delete(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:405:27
[INFO] [stdout]     |
[INFO] [stdout] 405 |         let index_db = db.partition(PathBuf::from(INDEX)).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:405:24
[INFO] [stdout]     |
[INFO] [stdout] 405 |         let index_db = db.partition(PathBuf::from(INDEX)).await?;
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout] 13  | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14  |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15  |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16  |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17  |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18  |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19  |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20  |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21  |
[INFO] [stdout] 22  |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23  |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24  |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs: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]     = help: unsized locals 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: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:580: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:572:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:346:41
[INFO] [stdout]     |
[INFO] [stdout] 346 |         Ok(if let Some(db) = self.store.get_partition(&PathBuf::from(MAIN)).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:410:36
[INFO] [stdout]     |
[INFO] [stdout] 410 |                 let partition = db.partition(PathBuf::from(&format!("__{}__", key))).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:410:33
[INFO] [stdout]     |
[INFO] [stdout] 410 |                 let partition = db.partition(PathBuf::from(&format!("__{}__", key))).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:346:30
[INFO] [stdout]     |
[INFO] [stdout] 346 |         Ok(if let Some(db) = self.store.get_partition(&PathBuf::from(MAIN)).await {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout] 13  | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14  |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15  |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16  |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17  |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18  |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19  |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20  |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21  |
[INFO] [stdout] 22  |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23  |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24  |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:347:49
[INFO] [stdout]     |
[INFO] [stdout] 347 | ...   db.values().await?.into_iter().map(|item| Ok::<I, Error>(serde_json::from_slice::<I>(&item)?)).collect::<Result<Vec<I>, Error>>()?
[INFO] [stdout]     |                                           ^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all function arguments must have a statically known size
[INFO] [stdout]     = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[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:420:20
[INFO] [stdout]     |
[INFO] [stdout] 420 |         self.store.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/database.rs:352:41
[INFO] [stdout]     |
[INFO] [stdout] 352 |         Ok(if let Some(db) = self.store.get_partition(&PathBuf::from(MAIN)).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:420:9
[INFO] [stdout]     |
[INFO] [stdout] 420 |         self.store.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/database.rs:352:30
[INFO] [stdout]     |
[INFO] [stdout] 352 |         Ok(if let Some(db) = self.store.get_partition(&PathBuf::from(MAIN)).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:358:41
[INFO] [stdout]     |
[INFO] [stdout] 358 |         if let Some(values) = partition.get(key).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:452:45
[INFO] [stdout]     |
[INFO] [stdout] 452 |         let partition = if let Some(p) = db.get_partition(&partition_name).await {p} else {return 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/database.rs:358:31
[INFO] [stdout]     |
[INFO] [stdout] 358 |         if let Some(values) = partition.get(key).await? {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout] 13  | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14  |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15  |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16  |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17  |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18  |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19  |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20  |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21  |
[INFO] [stdout] 22  |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23  |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24  |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:358: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]     = help: unsized locals are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:358: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:580: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:572:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:361:23
[INFO] [stdout]     |
[INFO] [stdout] 361 |             partition.set(key, &serde_json::to_vec(&values)?).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:452:42
[INFO] [stdout]     |
[INFO] [stdout] 452 |         let partition = if let Some(p) = db.get_partition(&partition_name).await {p} else {return 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/database.rs:361:13
[INFO] [stdout]     |
[INFO] [stdout] 361 |             partition.set(key, &serde_json::to_vec(&values)?).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:453:41
[INFO] [stdout]     |
[INFO] [stdout] 453 |         let index = if let Some(p) = db.get_partition(&PathBuf::from(INDEX)).await {p} else {return 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/database.rs:453:38
[INFO] [stdout]     |
[INFO] [stdout] 453 |         let index = if let Some(p) = db.get_partition(&PathBuf::from(INDEX)).await {p} else {return 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/database.rs:363:23
[INFO] [stdout]     |
[INFO] [stdout] 363 |             partition.set(key, &serde_json::to_vec(&vec![value])?).await?;
[INFO] [stdout]     |                       ^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout] 13  | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14  |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15  |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16  |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17  |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18  |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19  |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20  |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21  |
[INFO] [stdout] 22  |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23  |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24  |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:455:31
[INFO] [stdout]     |
[INFO] [stdout] 455 |         let all = if let Some(p) = partition.get(ALL.as_bytes()).await? {
[INFO] [stdout]     |                               ^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all local variables must have a statically known size
[INFO] [stdout]     = help: unsized locals 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: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:580:5
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:455:36
[INFO] [stdout]     |
[INFO] [stdout] 455 |         let all = if let Some(p) = partition.get(ALL.as_bytes()).await? {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by an implicit `Sized` bound in `std::option::Option`
[INFO] [stdout]    --> /rustc/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:572:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:363:13
[INFO] [stdout]     |
[INFO] [stdout] 363 |             partition.set(key, &serde_json::to_vec(&vec![value])?).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:369:41
[INFO] [stdout]     |
[INFO] [stdout] 369 |         if let Some(values) = partition.get(key).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:369:31
[INFO] [stdout]     |
[INFO] [stdout] 369 |         if let Some(values) = partition.get(key).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:466:31
[INFO] [stdout]     |
[INFO] [stdout] 466 |                 let main = db.get_partition(&PathBuf::from(MAIN)).await.ok_or(
[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:466:28
[INFO] [stdout]     |
[INFO] [stdout] 466 |                 let main = db.get_partition(&PathBuf::from(MAIN)).await.ok_or(
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout] 13  | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14  |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15  |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16  |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17  |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18  |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19  |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20  |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21  |
[INFO] [stdout] 22  |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23  |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24  |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:369: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]     = help: unsized locals 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: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:580: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:572:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:373:27
[INFO] [stdout]     |
[INFO] [stdout] 373 |                 partition.set(key, &serde_json::to_vec(&values)?).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:373:17
[INFO] [stdout]     |
[INFO] [stdout] 373 |                 partition.set(key, &serde_json::to_vec(&values)?).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:375:27
[INFO] [stdout]     |
[INFO] [stdout] 375 |                 partition.delete(key).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:375:17
[INFO] [stdout]     |
[INFO] [stdout] 375 |                 partition.delete(key).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:506:49
[INFO] [stdout]     |
[INFO] [stdout] 506 |                 if let Some(index) = self.store.get_partition(&PathBuf::from(INDEX)).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:506:38
[INFO] [stdout]     |
[INFO] [stdout] 506 |                 if let Some(index) = self.store.get_partition(&PathBuf::from(INDEX)).await {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout] 13  | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14  |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15  |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16  |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17  |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18  |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19  |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20  |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21  |
[INFO] [stdout] 22  |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23  |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24  |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:507:76
[INFO] [stdout]     |
[INFO] [stdout] 507 |                     let mut index = index.values().await?.into_iter().map(|keys|
[INFO] [stdout]     |                                                                            ^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all function arguments must have a statically known size
[INFO] [stdout]     = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/state.rs:19:20
[INFO] [stdout]    |
[INFO] [stdout] 19 |             store: Box::new(KVS::new(path).await?)
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[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]    = note: required for the cast from `Box<KVS>` to `Box<(dyn KeyValueStore + 'static)>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:391:12
[INFO] [stdout]     |
[INFO] [stdout] 391 |         db.partition(PathBuf::from(MAIN)).await?.set(&pk, &serde_json::to_vec(item)?).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:391:9
[INFO] [stdout]     |
[INFO] [stdout] 391 |         db.partition(PathBuf::from(MAIN)).await?.set(&pk, &serde_json::to_vec(item)?).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:392:12
[INFO] [stdout]     |
[INFO] [stdout] 392 |         db.partition(PathBuf::from(INDEX)).await?.set(&pk, &serde_json::to_vec(&keys)?).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:392:9
[INFO] [stdout]     |
[INFO] [stdout] 392 |         db.partition(PathBuf::from(INDEX)).await?.set(&pk, &serde_json::to_vec(&keys)?).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/state.rs:24:20
[INFO] [stdout]    |
[INFO] [stdout] 24 |         self.store.set(&field.as_bytes(), &serde_json::to_vec(&field)?).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/state.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |         self.store.set(&field.as_bytes(), &serde_json::to_vec(&field)?).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/state.rs:29:20
[INFO] [stdout]    |
[INFO] [stdout] 29 |         self.store.get(&field.as_bytes()).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/state.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |         self.store.get(&field.as_bytes()).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:394:32
[INFO] [stdout]     |
[INFO] [stdout] 394 |             let partition = db.partition(PathBuf::from(&format!("__{}__", key))).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:394:29
[INFO] [stdout]     |
[INFO] [stdout] 394 |             let partition = db.partition(PathBuf::from(&format!("__{}__", key))).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:404:12
[INFO] [stdout]     |
[INFO] [stdout] 404 |         db.partition(PathBuf::from(MAIN)).await?.delete(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:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |         db.partition(PathBuf::from(MAIN)).await?.delete(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:405:27
[INFO] [stdout]     |
[INFO] [stdout] 405 |         let index_db = db.partition(PathBuf::from(INDEX)).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:405:24
[INFO] [stdout]     |
[INFO] [stdout] 405 |         let index_db = db.partition(PathBuf::from(INDEX)).await?;
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout] 13  | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14  |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15  |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16  |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17  |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18  |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19  |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20  |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21  |
[INFO] [stdout] 22  |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23  |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24  |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs: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]     = help: unsized locals 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: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:580: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:572:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:410:36
[INFO] [stdout]     |
[INFO] [stdout] 410 |                 let partition = db.partition(PathBuf::from(&format!("__{}__", key))).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:410:33
[INFO] [stdout]     |
[INFO] [stdout] 410 |                 let partition = db.partition(PathBuf::from(&format!("__{}__", key))).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: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/database.rs:420:20
[INFO] [stdout]     |
[INFO] [stdout] 420 |         self.store.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/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] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:420:9
[INFO] [stdout]     |
[INFO] [stdout] 420 |         self.store.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/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] 
[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/database.rs:452:45
[INFO] [stdout]     |
[INFO] [stdout] 452 |         let partition = if let Some(p) = db.get_partition(&partition_name).await {p} else {return 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/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:452:42
[INFO] [stdout]     |
[INFO] [stdout] 452 |         let partition = if let Some(p) = db.get_partition(&partition_name).await {p} else {return 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/database.rs:453:41
[INFO] [stdout]     |
[INFO] [stdout] 453 |         let index = if let Some(p) = db.get_partition(&PathBuf::from(INDEX)).await {p} else {return 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/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:453:38
[INFO] [stdout]     |
[INFO] [stdout] 453 |         let index = if let Some(p) = db.get_partition(&PathBuf::from(INDEX)).await {p} else {return 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[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]     = help: unsized locals 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: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/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:580:5
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:455:36
[INFO] [stdout]     |
[INFO] [stdout] 455 |         let all = if let Some(p) = partition.get(ALL.as_bytes()).await? {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by an implicit `Sized` bound in `std::option::Option`
[INFO] [stdout]    --> /rustc/46424fb5054f211ec836c5c03159f92e46bb35ac/library/core/src/option.rs:572:1
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:466:31
[INFO] [stdout]     |
[INFO] [stdout] 466 |                 let main = db.get_partition(&PathBuf::from(MAIN)).await.ok_or(
[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:466:28
[INFO] [stdout]     |
[INFO] [stdout] 466 |                 let main = db.get_partition(&PathBuf::from(MAIN)).await.ok_or(
[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:506:49
[INFO] [stdout]     |
[INFO] [stdout] 506 |                 if let Some(index) = self.store.get_partition(&PathBuf::from(INDEX)).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:506:38
[INFO] [stdout]     |
[INFO] [stdout] 506 |                 if let Some(index) = self.store.get_partition(&PathBuf::from(INDEX)).await {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout] 13  | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14  |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15  |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16  |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17  |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18  |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19  |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20  |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21  |
[INFO] [stdout] 22  |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23  |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24  |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]    --> src/database.rs:507:76
[INFO] [stdout]     |
[INFO] [stdout] 507 |                     let mut index = index.values().await?.into_iter().map(|keys|
[INFO] [stdout]     |                                                                            ^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]     = note: all function arguments must have a statically known size
[INFO] [stdout]     = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/state.rs:19:20
[INFO] [stdout]    |
[INFO] [stdout] 19 |             store: Box::new(KVS::new(path).await?)
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[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]    = note: required for the cast from `Box<KVS>` to `Box<(dyn KeyValueStore + 'static)>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/state.rs:24:20
[INFO] [stdout]    |
[INFO] [stdout] 24 |         self.store.set(&field.as_bytes(), &serde_json::to_vec(&field)?).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/state.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |         self.store.set(&field.as_bytes(), &serde_json::to_vec(&field)?).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/state.rs:29:20
[INFO] [stdout]    |
[INFO] [stdout] 29 |         self.store.get(&field.as_bytes()).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/state.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |         self.store.get(&field.as_bytes()).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:5
[INFO] [stdout]     |
[INFO] [stdout] 317 | #[derive(Clone)]
[INFO] [stdout]     |          ----- in this derive macro expansion
[INFO] [stdout] 318 | pub struct Database {
[INFO] [stdout] 319 |     store: Box<dyn KeyValueStore>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/traits.rs:15:14
[INFO] [stdout]     |
[INFO] [stdout] 13  | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]     |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14  |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15  |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]     |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16  |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17  |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18  |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19  |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20  |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]     |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21  |
[INFO] [stdout] 22  |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]     |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23  |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24  |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]     |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]     = help: consider moving `values` to another trait
[INFO] [stdout]     = help: consider moving `partition` to another trait
[INFO] [stdout]     = help: consider moving `get_partition` to another trait
[INFO] [stdout]     = help: consider moving `clear` to another trait
[INFO] [stdout]     = help: consider moving `delete` to another trait
[INFO] [stdout]     = help: consider moving `get` to another trait
[INFO] [stdout]     = help: consider moving `set` to another trait
[INFO] [stdout]     = help: consider moving `get_all` to another trait
[INFO] [stdout]     = help: consider moving `keys` to another trait
[INFO] [stdout]     = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/state.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 9  | #[derive(Clone)]
[INFO] [stdout]    |          ----- in this derive macro expansion
[INFO] [stdout] 10 | pub struct State {
[INFO] [stdout] 11 |     store: Box<dyn KeyValueStore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]    --> src/database.rs:319: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/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] 
[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] 
[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/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] Some errors have detailed explanations: E0038, E0277, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `simple-database` (lib) due to 110 previous errors
[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] [stdout] error[E0038]: the trait `KeyValueStore` is not dyn compatible
[INFO] [stdout]   --> src/state.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 9  | #[derive(Clone)]
[INFO] [stdout]    |          ----- in this derive macro expansion
[INFO] [stdout] 10 | pub struct State {
[INFO] [stdout] 11 |     store: Box<dyn KeyValueStore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `KeyValueStore` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/traits.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait KeyValueStore: std::fmt::Debug + Send + Sync + DynClone {
[INFO] [stdout]    |           ------------- this trait is not dyn compatible...
[INFO] [stdout] 14 |     async fn new(location: PathBuf) -> Result<Self, Error> where Self: Sized;
[INFO] [stdout] 15 |     async fn partition(&self, location: PathBuf) -> Result<Box<dyn KeyValueStore>, Error>;
[INFO] [stdout]    |              ^^^^^^^^^ ...because method `partition` is `async`
[INFO] [stdout] 16 |     async fn get_partition(&self, location: &Path) -> Option<Box<dyn KeyValueStore>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^ ...because method `get_partition` is `async`
[INFO] [stdout] 17 |     async fn clear(&self) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^ ...because method `clear` is `async`
[INFO] [stdout] 18 |     async fn delete(&self, key: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `delete` is `async`
[INFO] [stdout] 19 |     async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^ ...because method `get` is `async`
[INFO] [stdout] 20 |     async fn set(&self, key: &[u8], value: &[u8]) -> Result<(), Error>;
[INFO] [stdout]    |              ^^^ ...because method `set` is `async`
[INFO] [stdout] 21 |
[INFO] [stdout] 22 |     async fn get_all(&self) -> Result<KeyValue, Error>;
[INFO] [stdout]    |              ^^^^^^^ ...because method `get_all` is `async`
[INFO] [stdout] 23 |     async fn keys(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^ ...because method `keys` is `async`
[INFO] [stdout] 24 |     async fn values(&self) -> Result<Vec<Vec<u8>>, Error>;
[INFO] [stdout]    |              ^^^^^^ ...because method `values` is `async`
[INFO] [stdout]    = help: consider moving `values` to another trait
[INFO] [stdout]    = help: consider moving `partition` to another trait
[INFO] [stdout]    = help: consider moving `get_partition` to another trait
[INFO] [stdout]    = help: consider moving `clear` to another trait
[INFO] [stdout]    = help: consider moving `delete` to another trait
[INFO] [stdout]    = help: consider moving `get` to another trait
[INFO] [stdout]    = help: consider moving `set` to another trait
[INFO] [stdout]    = help: consider moving `get_all` to another trait
[INFO] [stdout]    = help: consider moving `keys` to another trait
[INFO] [stdout]    = help: only type `memory_store::MemoryStore` implements `KeyValueStore` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `KeyValueStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0038, E0277, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `simple-database` (lib test) due to 110 previous errors
[INFO] running `Command { std: "docker" "inspect" "5718c825259af8d96c3d267501e691edea8bbe022db6bbd16b4af84b1b0ad207", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5718c825259af8d96c3d267501e691edea8bbe022db6bbd16b4af84b1b0ad207", kill_on_drop: false }`
[INFO] [stdout] 5718c825259af8d96c3d267501e691edea8bbe022db6bbd16b4af84b1b0ad207
