pub struct MultiSimulation<Info: SimulationInfo> { /* private fields */ }Expand description
A simulation with support for multiple states.
Implementations§
Source§impl<Info: SimulationInfo> MultiSimulation<Info>
impl<Info: SimulationInfo> MultiSimulation<Info>
Sourcepub fn new<T: Into<Info>>(info: T) -> Self
pub fn new<T: Into<Info>>(info: T) -> Self
Creates a new MultiSimulation from the provided info with no states.
Sourcepub fn add_simulation(&mut self) -> usize
pub fn add_simulation(&mut self) -> usize
Adds a new simulation state to the simulation and returns its index.
Sourcepub fn add_simulation_from_data(
&mut self,
data: Info::LoadData,
) -> Result<usize, Info::StateLoadingError>
pub fn add_simulation_from_data( &mut self, data: Info::LoadData, ) -> Result<usize, Info::StateLoadingError>
Adds a new simulation state loaded from the provided data to the simulation and returns its index.
§Errors
Returns an error if a valid state cannot be loaded from data.
Sourcepub fn remove_simulation(&mut self, index: usize) -> Option<Info::State>
pub fn remove_simulation(&mut self, index: usize) -> Option<Info::State>
Removes the simulation state at the specified index and returns it.
All states after index shift down by one position, so their indices
decrease by one. Returns None if index is out of bounds, leaving the
simulation unchanged.
Sourcepub fn get(&self, index: usize) -> Option<SimulationBorrowRef<'_, Info>>
pub fn get(&self, index: usize) -> Option<SimulationBorrowRef<'_, Info>>
Retrieves an immutable borrow of the simulation at the specified index.
Sourcepub fn get_mut(&mut self, index: usize) -> Option<SimulationBorrowMut<'_, Info>>
pub fn get_mut(&mut self, index: usize) -> Option<SimulationBorrowMut<'_, Info>>
Retrieves a mutable borrow of the simulation at the specified index.
Sourcepub fn states_mut(&mut self) -> &mut [Info::State]
pub fn states_mut(&mut self) -> &mut [Info::State]
Get mutable access to all simulation states.
Trait Implementations§
Source§impl<Info: SimulationInfo + Clone> Clone for MultiSimulation<Info>
impl<Info: SimulationInfo + Clone> Clone for MultiSimulation<Info>
Source§impl<Info: SimulationInfo> Deref for MultiSimulation<Info>
impl<Info: SimulationInfo> Deref for MultiSimulation<Info>
Source§impl<Info: EditableSimulationInfo> Editable for MultiSimulation<Info>
impl<Info: EditableSimulationInfo> Editable for MultiSimulation<Info>
Source§type Edit<'a> = MultiSimulationEdit<'a, Info>
where
Self: 'a
type Edit<'a> = MultiSimulationEdit<'a, Info> where Self: 'a
The type used for safe edits and refreshing the state.
Source§fn edit(&mut self) -> MultiSimulationEdit<'_, Info>
fn edit(&mut self) -> MultiSimulationEdit<'_, Info>
Creates a type which allows safe edits to the info without invalidating the states,
and automatically refreshes the states when the edit type goes out of scope.
Source§impl<'a, Info: SimulationInfo> IntoIterator for &'a MultiSimulation<Info>
impl<'a, Info: SimulationInfo> IntoIterator for &'a MultiSimulation<Info>
Source§impl<'a, Info: SimulationInfo> IntoIterator for &'a mut MultiSimulation<Info>
impl<'a, Info: SimulationInfo> IntoIterator for &'a mut MultiSimulation<Info>
Source§type Item = SimulationBorrow<'a, Info, &'a mut <Info as SimulationInfo>::State>
type Item = SimulationBorrow<'a, Info, &'a mut <Info as SimulationInfo>::State>
The type of the elements being iterated over.
Auto Trait Implementations§
impl<Info> Freeze for MultiSimulation<Info>where
Info: Freeze,
impl<Info> RefUnwindSafe for MultiSimulation<Info>
impl<Info> Send for MultiSimulation<Info>
impl<Info> Sync for MultiSimulation<Info>
impl<Info> Unpin for MultiSimulation<Info>
impl<Info> UnsafeUnpin for MultiSimulation<Info>where
Info: UnsafeUnpin,
impl<Info> UnwindSafe for MultiSimulation<Info>
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