pub trait StorageEngine: Send + Sync {
// Required methods
fn put(&self, key: &[u8], value: &[u8]) -> Result<(), StorageError>;
fn get(&self, key: &[u8]) -> Result<Option<Bytes>, StorageError>;
fn delete(&self, key: &[u8]) -> Result<(), StorageError>;
fn scan_prefix(
&self,
prefix: &[u8],
limit: Option<usize>,
) -> Result<Vec<(Vec<u8>, Vec<u8>)>, StorageError>;
}Expand description
Abstract interface for local embedded database storage engines.
The canonical implementation in kinetic-storage wraps a Sled B-tree database.
All keys in Kinetic are namespaced with a {NETWORK_ID}_ prefix so that multiple
TLD networks can share a physical database file without key collisions.
Required Methods§
Sourcefn put(&self, key: &[u8], value: &[u8]) -> Result<(), StorageError>
fn put(&self, key: &[u8], value: &[u8]) -> Result<(), StorageError>
Stores a key-value byte pair, overwriting any existing entry.
§Errors
- Returns
StorageError::OperationFailed(KIN-STO-003) if the write fails.
Sourcefn get(&self, key: &[u8]) -> Result<Option<Bytes>, StorageError>
fn get(&self, key: &[u8]) -> Result<Option<Bytes>, StorageError>
Retrieves the stored value for a given key.
§Returns
Ok(Some(bytes))if the key exists.Ok(None)if the key has never been written.
§Errors
- Returns
StorageError::OperationFailed(KIN-STO-003) if the read fails.
Sourcefn delete(&self, key: &[u8]) -> Result<(), StorageError>
fn delete(&self, key: &[u8]) -> Result<(), StorageError>
Removes an entry by key.
This is a no-op if the key does not exist — no error is returned for missing keys.
§Errors
- Returns
StorageError::OperationFailed(KIN-STO-003) if the deletion fails.
Sourcefn scan_prefix(
&self,
prefix: &[u8],
limit: Option<usize>,
) -> Result<Vec<(Vec<u8>, Vec<u8>)>, StorageError>
fn scan_prefix( &self, prefix: &[u8], limit: Option<usize>, ) -> Result<Vec<(Vec<u8>, Vec<u8>)>, StorageError>
Iterates over all key-value pairs whose keys begin with prefix, up to an optional limit.
§Returns
A Vec of (key_bytes, value_bytes) pairs. Returns an empty Vec if no
keys match the prefix.
§Errors
- Returns
StorageError::OperationFailed(KIN-STO-003) if prefix iteration fails.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".