From c57ee6e6833d10f67d111d6191efeb8e776ec42b Mon Sep 17 00:00:00 2001
From: Chris Wong <lambda.fairy@gmail.com>
Date: Fri, 23 Dec 2016 20:38:53 +1300
Subject: [PATCH] Remove RenderOnce

Closes #68
---
 maud/src/lib.rs           | 35 -----------------------------------
 maud_macros/src/render.rs |  5 ++++-
 maud_macros/tests/misc.rs | 14 --------------
 3 files changed, 4 insertions(+), 50 deletions(-)

diff --git a/maud/src/lib.rs b/maud/src/lib.rs
index a9e642c..25fc594 100644
--- a/maud/src/lib.rs
+++ b/maud/src/lib.rs
@@ -85,41 +85,6 @@ impl Render for str {
     }
 }
 
-/// Represents a type that can be rendered as HTML, where the rendering
-/// operation consumes the value.
-///
-/// See the [`Render`](trait.Render.html) documentation for advice on
-/// how to use this trait.
-pub trait RenderOnce: Sized {
-    /// Renders `self` as a block of `Markup`, consuming it in the
-    /// process.
-    fn render_once(self) -> Markup {
-        let mut buffer = String::new();
-        self.render_once_to(&mut buffer);
-        PreEscaped(buffer)
-    }
-
-    /// Appends a representation of `self` to the given string,
-    /// consuming `self` in the process.
-    ///
-    /// Its default implementation just calls `.render_once()`, but you
-    /// may override it with something more efficient.
-    ///
-    /// Note that no further escaping is performed on data written to
-    /// the buffer. If you override this method, you must make sure that
-    /// any data written is properly escaped, whether by hand or using
-    /// the [`Escaper`](struct.Escaper.html) wrapper struct.
-    fn render_once_to(self, buffer: &mut String) {
-        buffer.push_str(&self.render_once().into_string());
-    }
-}
-
-impl<'a, T: Render + ?Sized> RenderOnce for &'a T {
-    fn render_once_to(self, w: &mut String) {
-        self.render_to(w);
-    }
-}
-
 /// A wrapper that renders the inner value without escaping.
 #[derive(Debug)]
 pub struct PreEscaped<T: AsRef<str>>(pub T);
diff --git a/maud_macros/src/render.rs b/maud_macros/src/render.rs
index c7749d5..3119c50 100644
--- a/maud_macros/src/render.rs
+++ b/maud_macros/src/render.rs
@@ -89,7 +89,10 @@ impl<'cx, 'a> Renderer<'cx, 'a> {
     /// Appends the result of an expression.
     pub fn splice(&mut self, expr: P<Expr>) {
         let w = self.writer;
-        let expr = quote_expr!(self.cx, { use ::maud::RenderOnce; $expr.render_once_to(&mut $w) });
+        let expr = quote_expr!(self.cx, {
+            use ::maud::Render as __maud_Render;
+            $expr.render_to(&mut $w);
+        });
         let stmt = self.wrap_stmt(expr);
         self.push(stmt);
     }
diff --git a/maud_macros/tests/misc.rs b/maud_macros/tests/misc.rs
index f07b524..8928379 100644
--- a/maud_macros/tests/misc.rs
+++ b/maud_macros/tests/misc.rs
@@ -66,17 +66,3 @@ fn render_impl() {
     assert_eq!(s1, "pinkie");
     assert_eq!(s2, "pinkie");
 }
-
-#[test]
-fn render_once_impl() {
-    struct Once(String);
-    impl maud::RenderOnce for Once {
-        fn render_once_to(self, w: &mut String) {
-            w.push_str(&self.0);
-        }
-    }
-
-    let once = Once(String::from("pinkie"));
-    let s = html!((once)).into_string();
-    assert_eq!(s, "pinkie");
-}