pub trait Persistence:
Send
+ Sync
+ Debug {
// Required methods
fn save(&self, plugin: &DeclaredPlugin) -> Result<(), PersistenceError>;
fn delete(&self, qname: &str) -> Result<(), PersistenceError>;
fn load_all(&self) -> Result<Vec<DeclaredPlugin>, PersistenceError>;
}Expand description
A persistence backend for declared-plugin records.
Implementations must be Send + Sync because the
crate::CustomPlugin holds an Arc<dyn Persistence> shared
across procedure invocations on every session thread.
Required Methods§
Sourcefn save(&self, plugin: &DeclaredPlugin) -> Result<(), PersistenceError>
fn save(&self, plugin: &DeclaredPlugin) -> Result<(), PersistenceError>
Persist a freshly-declared plugin record.
§Errors
Returns PersistenceError on I/O or serialization failure.
Sourcefn delete(&self, qname: &str) -> Result<(), PersistenceError>
fn delete(&self, qname: &str) -> Result<(), PersistenceError>
Remove a previously persisted record by qname.
§Errors
Returns PersistenceError on I/O or serialization failure.
Sourcefn load_all(&self) -> Result<Vec<DeclaredPlugin>, PersistenceError>
fn load_all(&self) -> Result<Vec<DeclaredPlugin>, PersistenceError>
Replay every persisted declaration (in any order — callers must topologically sort if dependency ordering matters).
§Errors
Returns PersistenceError on I/O or deserialization failure.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".