pub trait Storage:
Clone
+ Send
+ Sync
+ 'static {
type Blob: Blob;
// Required methods
fn open(
&self,
partition: &str,
name: &[u8],
) -> impl Future<Output = Result<(Self::Blob, u64), Error>> + Send;
fn remove(
&self,
partition: &str,
name: Option<&[u8]>,
) -> impl Future<Output = Result<(), Error>> + Send;
fn scan(
&self,
partition: &str,
) -> impl Future<Output = Result<Vec<Vec<u8>>, Error>> + Send;
}
Expand description
Interface to interact with storage.
To support storage implementations that enable concurrent reads and writes, blobs are responsible for maintaining synchronization.
Storage can be backed by a local filesystem, cloud storage, etc.
Required Associated Types§
Required Methods§
Sourcefn open(
&self,
partition: &str,
name: &[u8],
) -> impl Future<Output = Result<(Self::Blob, u64), Error>> + Send
fn open( &self, partition: &str, name: &[u8], ) -> impl Future<Output = Result<(Self::Blob, u64), Error>> + Send
Open an existing blob in a given partition or create a new one, returning the blob and its length.
Multiple instances of the same blob can be opened concurrently, however, writing to the same blob concurrently may lead to undefined behavior.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.