use crate::errors::InvalidState;
pub trait State {
type Item: core::fmt::Debug;
#[inline]
fn state(&self) -> Option<&Self::Item> {
None
}
#[inline]
fn state_mut(&mut self) -> Option<&mut Self::Item> {
None
}
#[inline]
fn set_state(
&mut self,
new_state: Self::Item,
) -> Result<Option<Self::Item>, InvalidState<Self::Item>> {
Err(InvalidState::new(new_state))
}
}