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"); -}