pub type Transition<'a> = dyn Fn(&State) -> Result<State, NotCurrentHolder> + Send + Sync + 'a;Expand description
A pure kernel transition decision — a lifecycle on_X — passed to the transition port
Registry::apply (and its async twin). The same type is used by both bindings, so the port is
literally one shape.
The Send + Sync bound is on the transition closure: it lets a backend hold the decision
across its own atomic scope or hand it to a worker thread. It does not make the async
binding’s apply future Send — future coloring stays the consumer’s (the async binding is
deliberately Send-agnostic at its futures). A backend that needs a Send apply future
satisfies that at its own concrete call site, not from this bound.