pub enum StorageBackend {
RocksDB(RealRocksDBStorage),
SurrealDB(Arc<SurrealDBStorage>),
}Expand description
Unified storage backend enum for runtime selection.
This enum wraps the different storage implementations and provides a unified interface for the rest of the application.
Variants§
RocksDB(RealRocksDBStorage)
RocksDB-based local storage (default)
SurrealDB(Arc<SurrealDBStorage>)
SurrealDB-based storage with native graph support
Implementations§
Source§impl StorageBackend
impl StorageBackend
Sourcepub fn supports_native_graph(&self) -> bool
pub fn supports_native_graph(&self) -> bool
Check if this backend supports native graph operations
Sourcepub fn supports_native_vectors(&self) -> bool
pub fn supports_native_vectors(&self) -> bool
Check if this backend supports native vector operations
Trait Implementations§
Source§impl Clone for StorageBackend
impl Clone for StorageBackend
Source§fn clone(&self) -> StorageBackend
fn clone(&self) -> StorageBackend
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl FreshnessStorage for StorageBackend
impl FreshnessStorage for StorageBackend
Source§fn register_source<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
reference: SourceReference,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn register_source<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
reference: SourceReference,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Register or update a source reference for an entry
Source§fn check_freshness<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
entry_id: &'life1 str,
file_hash: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<FreshnessEntry>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn check_freshness<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
entry_id: &'life1 str,
file_hash: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<FreshnessEntry>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Check if an entry’s stored hash matches the provided hash.
When the stored entry has a FunctionScope with ast_hash, compares that
instead of the file-level hash (semantic freshness).
Source§fn invalidate_source<'life0, 'life1, 'async_trait>(
&'life0 self,
file_path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<u32>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn invalidate_source<'life0, 'life1, 'async_trait>(
&'life0 self,
file_path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<u32>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Invalidate (remove) a source reference, usually because the source changed
or the entry is being deleted. Returns count of removed references.
Source§fn get_entries_by_source<'life0, 'life1, 'async_trait>(
&'life0 self,
file_path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<SourceReference>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_entries_by_source<'life0, 'life1, 'async_trait>(
&'life0 self,
file_path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<SourceReference>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get all entries associated with a specific file path
Source§fn get_stale_entries_by_source<'life0, 'life1, 'async_trait>(
&'life0 self,
file_path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<StaleEntryInfo>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_stale_entries_by_source<'life0, 'life1, 'async_trait>(
&'life0 self,
file_path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<StaleEntryInfo>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Return entry_ids (plus symbol metadata) for all source_reference records that
are still marked stale (status=1) for the given file. Called by Axon after
register_source_batch to detect symbols that were deleted from the file
(they were marked stale by invalidate_source but never re-registered).Source§fn check_freshness_semantic<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
entry_id: &'life1 str,
file_hash: &'life2 [u8],
ast_hash: Option<&'life3 [u8]>,
symbol_name: Option<&'life4 str>,
) -> Pin<Box<dyn Future<Output = Result<FreshnessEntry>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
fn check_freshness_semantic<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
entry_id: &'life1 str,
file_hash: &'life2 [u8],
ast_hash: Option<&'life3 [u8]>,
symbol_name: Option<&'life4 str>,
) -> Pin<Box<dyn Future<Output = Result<FreshnessEntry>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Semantic freshness check: compare ast_hash when available, fallback to file hash.
The
ast_hash and symbol_name are optional — if provided and the stored entry
has a FunctionScope, ast_hash comparison is used instead of file-level hash.Source§fn register_symbol_dependencies<'life0, 'async_trait>(
&'life0 self,
from: SymbolId,
to_symbols: Vec<SymbolId>,
) -> Pin<Box<dyn Future<Output = Result<u32>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn register_symbol_dependencies<'life0, 'async_trait>(
&'life0 self,
from: SymbolId,
to_symbols: Vec<SymbolId>,
) -> Pin<Box<dyn Future<Output = Result<u32>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Register symbol-level dependencies (e.g., fn foo depends on struct Bar).
Used for cascade invalidation.
Source§fn cascade_invalidate<'life0, 'async_trait>(
&'life0 self,
changed: SymbolId,
new_ast_hash: Vec<u8>,
max_depth: u32,
) -> Pin<Box<dyn Future<Output = Result<CascadeInvalidateReport>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn cascade_invalidate<'life0, 'async_trait>(
&'life0 self,
changed: SymbolId,
new_ast_hash: Vec<u8>,
max_depth: u32,
) -> Pin<Box<dyn Future<Output = Result<CascadeInvalidateReport>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Cascade invalidate: when a symbol changes, invalidate all entries
whose symbols depend on it (transitively up to max_depth).
Source§fn check_freshness_batch<'life0, 'async_trait>(
&'life0 self,
entries: Vec<(String, Vec<u8>, Option<Vec<u8>>, Option<String>)>,
) -> Pin<Box<dyn Future<Output = Result<Vec<FreshnessEntry>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn check_freshness_batch<'life0, 'async_trait>(
&'life0 self,
entries: Vec<(String, Vec<u8>, Option<Vec<u8>>, Option<String>)>,
) -> Pin<Box<dyn Future<Output = Result<Vec<FreshnessEntry>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Batch freshness check: check multiple entries in a single storage round-trip. Read more
Source§impl GraphStorage for StorageBackend
impl GraphStorage for StorageBackend
Source§fn upsert_entity<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
entity: &'life1 EntityData,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn upsert_entity<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
entity: &'life1 EntityData,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Insert or update an entity
Source§fn get_entity<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<EntityData>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_entity<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<EntityData>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get an entity by name
Source§fn list_entities<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<EntityData>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_entities<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<EntityData>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List all entities for a session
Source§fn delete_entity<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_entity<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Delete an entity
Source§fn create_relationship<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
relationship: &'life1 EntityRelationship,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_relationship<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
relationship: &'life1 EntityRelationship,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create a relationship between entities
Find all entities related to a given entity
Find entities related by a specific relation type
Source§fn find_shortest_path<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: Uuid,
from: &'life1 str,
to: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<String>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn find_shortest_path<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: Uuid,
from: &'life1 str,
to: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<String>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Find the shortest path between two entities
Source§fn get_entity_network<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
center: &'life1 str,
max_depth: usize,
) -> Pin<Box<dyn Future<Output = Result<EntityNetwork>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_entity_network<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Uuid,
center: &'life1 str,
max_depth: usize,
) -> Pin<Box<dyn Future<Output = Result<EntityNetwork>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get the entity network (subgraph) around a center entity
Source§impl Storage for StorageBackend
impl Storage for StorageBackend
Source§fn save_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 ActiveSession,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn save_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 ActiveSession,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Save a session to storage
Source§fn load_session<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<ActiveSession>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_session<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<ActiveSession>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Load a session from storage
Source§fn delete_session<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn delete_session<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Delete a session and all related data
Source§fn clear_session_entities<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn clear_session_entities<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Delete all entities and relationships for a session (used by entity graph rebuild)
Source§fn list_sessions<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<Uuid>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_sessions<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<Uuid>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List all session IDs
Source§fn session_exists<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn session_exists<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Check if a session exists
Source§fn batch_save_updates<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
updates: Vec<ContextUpdate>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn batch_save_updates<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
updates: Vec<ContextUpdate>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Batch save multiple context updates efficiently
Source§fn save_session_with_updates<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 ActiveSession,
session_id: Uuid,
updates: Vec<ContextUpdate>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn save_session_with_updates<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 ActiveSession,
session_id: Uuid,
updates: Vec<ContextUpdate>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Save session and context updates in a single atomic write.
Default implementation calls save_session then batch_save_updates sequentially.
Backends can override for a single WriteBatch operation.
Source§fn load_session_updates<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<ContextUpdate>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_session_updates<'life0, 'async_trait>(
&'life0 self,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<ContextUpdate>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Load all updates for a session
Source§fn save_checkpoint<'life0, 'life1, 'async_trait>(
&'life0 self,
checkpoint: &'life1 SessionCheckpoint,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn save_checkpoint<'life0, 'life1, 'async_trait>(
&'life0 self,
checkpoint: &'life1 SessionCheckpoint,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Save a session checkpoint
Source§fn load_checkpoint<'life0, 'async_trait>(
&'life0 self,
checkpoint_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<SessionCheckpoint>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_checkpoint<'life0, 'async_trait>(
&'life0 self,
checkpoint_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<SessionCheckpoint>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Load a session checkpoint
Source§fn list_checkpoints<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<SessionCheckpoint>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_checkpoints<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<SessionCheckpoint>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List all checkpoints
Source§fn save_workspace_metadata<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
workspace_id: Uuid,
name: &'life1 str,
description: &'life2 str,
session_ids: &'life3 [Uuid],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn save_workspace_metadata<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
workspace_id: Uuid,
name: &'life1 str,
description: &'life2 str,
session_ids: &'life3 [Uuid],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Save workspace metadata
Source§fn delete_workspace<'life0, 'async_trait>(
&'life0 self,
workspace_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn delete_workspace<'life0, 'async_trait>(
&'life0 self,
workspace_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Delete a workspace
Source§fn list_workspaces<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<StoredWorkspace>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_workspaces<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<StoredWorkspace>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List all workspaces
Source§fn add_session_to_workspace<'life0, 'async_trait>(
&'life0 self,
workspace_id: Uuid,
session_id: Uuid,
role: SessionRole,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn add_session_to_workspace<'life0, 'async_trait>(
&'life0 self,
workspace_id: Uuid,
session_id: Uuid,
role: SessionRole,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Add a session to a workspace
Source§fn remove_session_from_workspace<'life0, 'async_trait>(
&'life0 self,
workspace_id: Uuid,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn remove_session_from_workspace<'life0, 'async_trait>(
&'life0 self,
workspace_id: Uuid,
session_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Remove a session from a workspace
Source§fn compact<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn compact<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Force database compaction
Auto Trait Implementations§
impl Freeze for StorageBackend
impl !RefUnwindSafe for StorageBackend
impl Send for StorageBackend
impl Sync for StorageBackend
impl Unpin for StorageBackend
impl UnsafeUnpin for StorageBackend
impl !UnwindSafe for StorageBackend
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request