usecrate::event::EventKind;usestd::marker::PhantomData;/// Transition<From, To, P>: a typed state change with an EventKind and payload.
/// The compiler ensures you can only create transitions from valid source states.
/// [SPEC:src/typestate/transition.rs]
pubstructTransition<From, To, P>{kind: EventKind,
payload: P,
_from:PhantomData<From>,
_to:PhantomData<To>,
}impl<From, To, P>Transition<From, To, P>{pubfnnew(kind: EventKind, payload: P)->Self{Self{
kind,
payload,
_from: PhantomData,
_to: PhantomData,}}pubfnkind(&self)-> EventKind{self.kind
}pubfnpayload(&self)->&P{&self.payload
}pubfninto_payload(self)-> P{self.payload
}}