4 ms·
for reusing code between states, did you try impl blocks that are generic over the state type parameter? for struct State<T> { state: T } with possible s
by jstrong 7y ago
for reusing code between states, did you try impl blocks that are generic over the state type parameter?
for
struct State<T> { state: T }
with possible states
struct A { id: Uuid }
struct B { id: Uuid }
use a trait
trait HasId {
fn id_mut(&mut self) -> &mut Uuid;
}
now you can impl over both A and B
impl<T: HasId> for State<T> {
fn new_id(&mut self) { *self.state.id_mut() = Uuid::new_v4() }
}
simplistic example but enough to communicate the idea hopefully.
generally, macros makes this kind of thing ergonomic so you can generate the trait implementations and so on. otherwise it's a lot of typing.
don't understand what you mean about making callbacks to other APIs during transitions.
- papaf 7y agoI did not try that -- its a cool technique. Thanks for taking the time to share it.