#[derive(Debug, Clone, PartialEq, Eq)]
pub struct FoldOutcome<S> {
pub state: S,
pub entries_processed: usize,
}
impl<S> FoldOutcome<S> {
pub fn new(state: S, entries_processed: usize) -> Self {
Self {
state,
entries_processed,
}
}
pub fn map<T, F: FnOnce(S) -> T>(self, f: F) -> FoldOutcome<T> {
FoldOutcome::new(f(self.state), self.entries_processed)
}
}
impl<S: Default> Default for FoldOutcome<S> {
fn default() -> Self {
Self::new(S::default(), 0)
}
}
#[cfg(test)]
#[path = "result_tests.rs"]
mod tests;