use sim_kernel::Ref;
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum GeneratorStep {
Yielded(Ref),
Exhausted,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Generator {
values: Vec<Ref>,
index: usize,
}
impl Generator {
pub fn new(values: Vec<Ref>) -> Self {
Self { values, index: 0 }
}
pub fn next_step(&mut self) -> GeneratorStep {
let Some(value) = self.values.get(self.index).cloned() else {
return GeneratorStep::Exhausted;
};
self.index += 1;
GeneratorStep::Yielded(value)
}
pub fn is_exhausted(&self) -> bool {
self.index >= self.values.len()
}
}