summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs2
-rw-r--r--src/render.rs8
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
                 })())
             },