diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 2 | ||||
-rw-r--r-- | src/render.rs | 8 |
2 files changed, 4 insertions, 6 deletions
diff --git a/src/lib.rs b/src/lib.rs index 2aa0d7a..c760338 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,6 @@ mod render; -pub use render::{Component, RenderNode}; +pub use render::{RenderNode, Component}; pub use morgana_proc::morx; pub async fn render_tree(parent_node: RenderNode) -> String { diff --git a/src/render.rs b/src/render.rs index 94b193b..8addbdb 100644 --- a/src/render.rs +++ b/src/render.rs @@ -4,7 +4,7 @@ use std::future::Future; use futures::future::join_all; pub trait Component { - fn render(self: Box<Self>) -> Vec<RenderNode>; + fn render(self: Box<Self>) -> RenderNode; } pub enum RenderNode { @@ -31,11 +31,9 @@ impl RenderNode { pub(crate) fn render_to_string(self) -> Pin<Box<dyn Future<Output = String>>> { match self { RenderNode::Component(component) => { - let elements = component.render(); + let result_root = component.render(); Box::pin((async move || { - join_all(elements.into_iter() - .map(|child| child.render_to_string()) - .collect::<Vec<_>>()).await.join("") + result_root.render_to_string().await })()) }, |