Experiment with a functional API
This is probably more something to be added in an extension crate, but it would be cool to be able to define actors from closures:
let initial_state = 0u64;
xtra::actor::unbounded(initial_state)
.handle(|name: String, ctx: &mut Context| async move {
format!("Hello {name}")
});
Not sure how nameable the actor type would be (some nested AndHandler<HandlerFn<String, String>, AndHandler<HandlerFn<u64, u64>>> stuff probably) so perhaps one would only be able to access such an actor through MessageChannels?
Hmm, this could be interesting, but it would probably lead to explosive compile times 😅 The upshot is that it could be done in an extension crate, though.
Hmm, this could be interesting, but it would probably lead to explosive compile times sweat_smile The upshot is that it could be done in an extension crate, though.
Yeah definitely in an extension crate.