use obzenflow_core::{EventType, StageFactSet};
use std::marker::PhantomData;
#[must_use = "an effectful handler must return its StageCompletion receipt"]
#[derive(Debug)]
pub struct StageCompletion<Output: StageFactSet> {
committed_fact_count: usize,
committed_fact_types: Vec<EventType>,
_output: PhantomData<fn() -> Output>,
}
impl<Output: StageFactSet> StageCompletion<Output> {
pub(super) fn new(committed_fact_count: usize, committed_fact_types: Vec<EventType>) -> Self {
Self {
committed_fact_count,
committed_fact_types,
_output: PhantomData,
}
}
#[must_use]
pub fn committed_fact_count(&self) -> usize {
self.committed_fact_count
}
#[must_use]
pub fn committed_fact_types(&self) -> &[EventType] {
&self.committed_fact_types
}
}