1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use super::*;
pub enum Cmd<C: Component> {
None,
Sub(C::Sub),
Task(Box<dyn FnOnce(TaskResolver<C::Msg>)>),
Batch(Box<dyn FnOnce(BatchResolver<C::Msg>)>),
}
impl<C: Component> Cmd<C> {
pub fn none() -> Self {
Self::None
}
pub fn task(task: impl FnOnce(TaskResolver<C::Msg>) + 'static) -> Self {
Self::Task(Box::new(task))
}
pub fn batch(batch: impl FnOnce(BatchResolver<C::Msg>) + 'static) -> Self {
Self::Batch(Box::new(batch))
}
pub fn chain(msg: C::Msg) -> Self {
Self::task(|resolve| resolve(msg))
}
}