pub fn step_with<P: Protocol + ?Sized>(
p: &mut P,
event: ProtoEvent<P>,
now: Time,
rng: &mut dyn RngCore,
store: &mut dyn Store<P::Meta, P::Entry>,
next_timer: &mut u64,
) -> Vec<ProtoEffect<P>> ⓘExpand description
Deliver one event to p against a timer identity source the caller owns.
step and step_in start identities at zero on every call, which is right for a protocol
driven alone and wrong for a composed one: two layers would each be handed identity zero, and
each would accept the other’s expiry as its own. A driver owns one source for a whole run — see
Sim — and a test driving a stack by hand must do the same.
Nothing listens for what the protocol narrates. Use step_noting to read that too.