use crate::automaton::{Dispatcher, ModelState, PureModel, RegisterModel, RunnerBuilder, State};
use super::{action::PRNGPureAction, state::PRNGState};
impl RegisterModel for PRNGState {
fn register<Substate: ModelState>(builder: RunnerBuilder<Substate>) -> RunnerBuilder<Substate> {
builder.model_pure::<Self>()
}
}
impl PureModel for PRNGState {
type Action = PRNGPureAction;
fn process_pure<Substate: ModelState>(
state: &mut State<Substate>,
action: Self::Action,
_dispatcher: &mut Dispatcher,
) {
let PRNGPureAction::Reseed { seed } = action;
let prng_state: &mut PRNGState = state.substate_mut();
prng_state.seed(seed);
}
}