pub trait PersistenceModel {
type PState: Clone;
type Delta: Clone;
// Required methods
fn apply(
state: &mut Self::PState,
delta: &Self::Delta,
) -> Result<(), String>;
fn derive(
before: &Self::PState,
after: &Self::PState,
) -> Result<Self::Delta, String>;
fn open_delta(session: SessionId) -> Self::Delta;
fn close_delta(session: SessionId) -> Self::Delta;
// Provided method
fn invoke_delta(_session: SessionId, _action: &str) -> Option<Self::Delta> { ... }
}Expand description
Persistence-model contract.
Required Associated Types§
Required Methods§
Sourcefn open_delta(session: SessionId) -> Self::Delta
fn open_delta(session: SessionId) -> Self::Delta
Open-session lifecycle delta.
Sourcefn close_delta(session: SessionId) -> Self::Delta
fn close_delta(session: SessionId) -> Self::Delta
Close-session lifecycle delta.
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.