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}