1use crate::dom::element::DomElement;
4
5pub mod dialog;
6pub mod element;
7pub mod event;
8pub mod text;
9
10pub mod node;
11pub mod node_list;
12
13pub trait DomOutput {
15 fn create_element(self) -> DomElement;
17
18 fn render(self, element: DomElement);
20}
21
22pub struct DomElementCreateAndRender<CreateFn, RenderFn>
24where
25 CreateFn: FnOnce() -> DomElement,
26 RenderFn: FnOnce(DomElement),
27{
28 pub create: CreateFn,
30 pub render: RenderFn,
32}
33
34impl<CreateFn, RenderFn> DomOutput for DomElementCreateAndRender<CreateFn, RenderFn>
35where
36 CreateFn: FnOnce() -> DomElement,
37 RenderFn: FnOnce(DomElement),
38{
39 fn create_element(self) -> DomElement {
40 (self.create)()
41 }
42
43 fn render(self, element: DomElement) {
44 (self.render)(element)
45 }
46}