diff --git a/src/lib.rs b/src/lib.rs index 31c53522..5a777a40 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1070,7 +1070,7 @@ macro_rules! as_ref_impl { ($type:ty) => { #[async_trait] #[deny(clippy::missing_trait_methods)] - impl ObjectStore for $type { + impl ObjectStore for $type { async fn put_opts( &self, location: &Path, @@ -1146,8 +1146,8 @@ macro_rules! as_ref_impl { }; } -as_ref_impl!(Arc); -as_ref_impl!(Box); +as_ref_impl!(Arc); +as_ref_impl!(Box); /// Extension trait for [`ObjectStore`] with convenience functions. /// @@ -1885,9 +1885,8 @@ impl From for std::io::Error { #[cfg(test)] mod tests { use super::*; - use crate::buffered::BufWriter; + use chrono::TimeZone; - use tokio::io::AsyncWriteExt; macro_rules! maybe_skip_integration { () => { @@ -1939,6 +1938,9 @@ mod tests { { use bytes::Buf; use serde::Deserialize; + use tokio::io::AsyncWriteExt; + + use crate::buffered::BufWriter; #[derive(Deserialize)] struct Tagging { @@ -2154,4 +2156,23 @@ mod tests { assert!(options.head); assert_eq!(options.extensions.get::<&str>(), extensions.get::<&str>()); } + + fn takes_generic_object_store(store: T) { + // This function is just to ensure that the trait bounds are satisfied + let _ = store; + } + #[test] + fn test_dyn_impl() { + let store: Arc = Arc::new(memory::InMemory::new()); + takes_generic_object_store(store); + let store: Box = Box::new(memory::InMemory::new()); + takes_generic_object_store(store); + } + #[test] + fn test_generic_impl() { + let store = Arc::new(memory::InMemory::new()); + takes_generic_object_store(store); + let store = Box::new(memory::InMemory::new()); + takes_generic_object_store(store); + } }