pub trait StorageDriver: Send + Sync {
// Required methods
fn capabilities(&self) -> DriverCapabilities;
fn write(&self, key: &str, data: &[u8]) -> Result<(), StorageError>;
fn append(&self, key: &str, data: &[u8]) -> Result<(), StorageError>;
fn read(&self, key: &str) -> Result<Vec<u8>, StorageError>;
fn read_range(
&self,
key: &str,
offset: usize,
len: usize,
) -> Result<Vec<u8>, StorageError>;
fn delete(&self, key: &str) -> Result<(), StorageError>;
fn snapshot(&self, snapshot_id: &str) -> Result<(), StorageError>;
fn flush(&self) -> Result<(), StorageError>;
fn prefetch_hint(&self, key: &str);
fn eviction_hint(&self, key: &str);
fn describe(&self) -> &str;
}Required Methods§
fn capabilities(&self) -> DriverCapabilities
fn write(&self, key: &str, data: &[u8]) -> Result<(), StorageError>
fn append(&self, key: &str, data: &[u8]) -> Result<(), StorageError>
fn read(&self, key: &str) -> Result<Vec<u8>, StorageError>
fn read_range( &self, key: &str, offset: usize, len: usize, ) -> Result<Vec<u8>, StorageError>
fn delete(&self, key: &str) -> Result<(), StorageError>
Sourcefn snapshot(&self, snapshot_id: &str) -> Result<(), StorageError>
fn snapshot(&self, snapshot_id: &str) -> Result<(), StorageError>
Create a point-in-time snapshot named snapshot_id.
On APFS this calls clonefile(2) and is O(1), zero-cost on disk.