pub trait ModelHost {
// Required methods
fn models(&self) -> &ModelStore;
fn models_mut(&mut self) -> &mut ModelStore;
// Provided methods
fn read<T: Any, R>(
&mut self,
model: &Model<T>,
f: impl FnOnce(&mut Self, &T) -> R,
) -> Result<R, ModelUpdateError> { ... }
fn model_revision<T: Any>(&self, model: &Model<T>) -> Option<u64> { ... }
fn update_model<T: Any, R>(
&mut self,
model: &Model<T>,
f: impl FnOnce(&mut T, &mut ModelCx<'_, Self>) -> R,
) -> Result<R, ModelUpdateError> { ... }
}Expand description
Host surface required to read and update models stored in a ModelStore.
This trait is intentionally portable and is implemented by higher-level containers like
fret-app::App.
Required Methods§
fn models(&self) -> &ModelStore
fn models_mut(&mut self) -> &mut ModelStore
Provided Methods§
fn read<T: Any, R>( &mut self, model: &Model<T>, f: impl FnOnce(&mut Self, &T) -> R, ) -> Result<R, ModelUpdateError>
fn model_revision<T: Any>(&self, model: &Model<T>) -> Option<u64>
fn update_model<T: Any, R>( &mut self, model: &Model<T>, f: impl FnOnce(&mut T, &mut ModelCx<'_, Self>) -> R, ) -> Result<R, ModelUpdateError>
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.