sauron_core/vdom/
templated_view.rs

1use crate::dom::SkipDiff;
2use crate::vdom::Node;
3use std::fmt;
4use std::rc::Rc;
5
6/// Templated view
7pub struct TemplatedView<MSG> {
8    /// The view node
9    pub view: Box<Node<MSG>>,
10    /// The skip_diff generated from the view node
11    pub skip_diff: Rc<dyn Fn() -> SkipDiff>,
12}
13
14impl<MSG> Clone for TemplatedView<MSG> {
15    fn clone(&self) -> Self {
16        Self {
17            view: self.view.clone(),
18            skip_diff: Rc::clone(&self.skip_diff),
19        }
20    }
21}
22
23impl<MSG> fmt::Debug for TemplatedView<MSG> {
24    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
25        f.debug_struct("TemplatedView")
26            .field("view", &self.view)
27            .field("skip_diff", &(self.skip_diff)())
28            .finish()
29    }
30}