///|
/// Dispatches events in order and records every success or rejection.
pub fn[S : Hash + Eq, E : Hash + Eq, Ctx] Engine::try_send_all(
self : Engine[S, E, Ctx],
events : Array[E],
) -> BatchReport[E] {
let outcomes = []
let mut successful = 0
let mut rejected = 0
for event in events {
match self.try_send(event) {
Ok(_) => {
successful += 1
outcomes.push({ event, success: true, error: None })
}
Err(err) => {
rejected += 1
outcomes.push({ event, success: false, error: Some(err) })
}
}
}
{ outcomes, successful, rejected, complete: rejected == 0 }
}