Skip to main content

StorageEngine

Trait StorageEngine 

Source
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§

Source

fn put(&self, key: &[u8], value: &[u8]) -> Result<(), StorageError>

Stores a key-value byte pair, overwriting any existing entry.

§Errors
Source

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
Source

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
Source

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

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§