seed/virtual_dom/
mailbox.rs

1use std::rc::Rc;
2
3pub struct Mailbox<Message: 'static> {
4    func: Rc<dyn Fn(Option<Message>)>,
5}
6
7impl<Ms> Mailbox<Ms> {
8    pub fn new(func: impl Fn(Option<Ms>) + 'static) -> Self {
9        Mailbox {
10            func: Rc::new(func),
11        }
12    }
13
14    pub fn send(&self, message: Option<Ms>) {
15        (self.func)(message);
16    }
17}
18
19impl<Ms> Clone for Mailbox<Ms> {
20    fn clone(&self) -> Self {
21        Mailbox {
22            func: self.func.clone(),
23        }
24    }
25}