From 81cbfb926794cf407e93918605decf372a004dfd Mon Sep 17 00:00:00 2001
From: Chris Wong <lambda.fairy@gmail.com>
Date: Wed, 7 Jan 2015 17:54:43 +1300
Subject: [PATCH] Use shiny new slicing syntax

---
 maud_macros/src/lib.rs     |  4 ++--
 maud_macros/src/parse.rs   |  4 ++--
 maud_macros/src/render.rs  | 11 ++++++-----
 maud_macros/tests/tests.rs | 16 ++++++++--------
 4 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/maud_macros/src/lib.rs b/maud_macros/src/lib.rs
index 0aa8a8f..8cc4962 100644
--- a/maud_macros/src/lib.rs
+++ b/maud_macros/src/lib.rs
@@ -1,5 +1,5 @@
 #![crate_type = "dylib"]
-#![feature(globs, plugin_registrar, quote, macro_rules)]
+#![feature(globs, plugin_registrar, quote, macro_rules, slicing_syntax)]
 
 extern crate syntax;
 extern crate rustc;
@@ -16,7 +16,7 @@ mod render;
 fn expand_html<'cx>(cx: &'cx mut ExtCtxt, sp: Span, args: &[TokenTree]) -> Box<MacResult + 'cx> {
     match parse::parse(cx, args) {
         Some(markups) => {
-            let expr = render::render(cx, &*markups);
+            let expr = render::render(cx, markups[]);
             MacExpr::new(expr)
         },
         None => DummyResult::any(sp),
diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs
index 6cf16cd..6ff0dab 100644
--- a/maud_macros/src/parse.rs
+++ b/maud_macros/src/parse.rs
@@ -206,7 +206,7 @@ impl<'cx, 's, 'i> Parser<'cx, 's, 'i> {
         match self.input {
             [TtDelimited(_, ref d), ..] if d.delim == token::DelimToken::Brace => {
                 self.shift(1);
-                Parser { cx: self.cx, input: &*d.tts }.markups()
+                Parser { cx: self.cx, input: d.tts[] }.markups()
                     .map(Markup::Block)
             },
             _ => None,
@@ -228,7 +228,7 @@ fn lit_to_string(cx: &mut ExtCtxt, lit: Lit, minus: bool) -> Option<String> {
             return None;
         },
         LitChar(c) => result.push(c),
-        LitInt(x, _) => result.push_str(&*x.to_string()),
+        LitInt(x, _) => result.push_str(x.to_string()[]),
         LitFloat(s, _) | LitFloatUnsuffixed(s) => result.push_str(s.get()),
         LitBool(b) => result.push_str(if b { "true" } else { "false" }),
     };
diff --git a/maud_macros/src/render.rs b/maud_macros/src/render.rs
index 7d4fceb..ed6db94 100644
--- a/maud_macros/src/render.rs
+++ b/maud_macros/src/render.rs
@@ -27,7 +27,7 @@ fn render_markup(cx: &mut ExtCtxt, markup: &Markup, w: Ident, out: &mut Vec<P<St
             for markup in markups.iter() {
                 render_markup(cx, markup, w, out);
             }
-        }
+        },
         Value(ref value) => {
             let expr = render_value(cx, value, w, false);
             out.push(quote_stmt!(cx, $expr));
@@ -41,14 +41,15 @@ fn render_value(cx: &mut ExtCtxt, value: &Value, w: Ident, is_attr: bool) -> P<E
     let &Value { ref value, escape } = value;
     match *value {
         Literal(ref s) => {
-            let s = &*match escape {
-                NoEscape => (&**s).into_cow(),
+            let s = match escape {
+                NoEscape => s[].into_cow(),
                 Escape => if is_attr {
-                    escape::attribute(&**s).into_cow()
+                    escape::attribute(s[]).into_cow()
                 } else {
-                    escape::non_attribute(&**s).into_cow()
+                    escape::non_attribute(s[]).into_cow()
                 },
             };
+            let s = s[];
             quote_expr!(cx, {
                 try!($w.write_str($s))
             })
diff --git a/maud_macros/tests/tests.rs b/maud_macros/tests/tests.rs
index cd8b576..3b94a28 100644
--- a/maud_macros/tests/tests.rs
+++ b/maud_macros/tests/tests.rs
@@ -7,14 +7,14 @@ extern crate maud;
 fn it_works() {
     let template = html!("du\tcks" -23 3.14 '\n' "geese");
     let s = maud::render(template);
-    assert_eq!(&*s, "du\tcks-233.14\ngeese");
+    assert_eq!(s, "du\tcks-233.14\ngeese");
 }
 
 #[test]
 fn escaping() {
     let template = html!("<flim&flam>");
     let s = maud::render(template);
-    assert_eq!(&*s, "&lt;flim&amp;flam&gt;");
+    assert_eq!(s, "&lt;flim&amp;flam&gt;");
 }
 
 #[test]
@@ -27,7 +27,7 @@ fn blocks() {
         }
         " swans"
     });
-    assert_eq!(&*s, "hello ducks geese swans");
+    assert_eq!(s, "hello ducks geese swans");
 }
 
 mod splice {
@@ -36,13 +36,13 @@ mod splice {
     #[test]
     fn literal() {
         let s = maud::render(html! { $"<pinkie>" });
-        assert_eq!(&*s, "&lt;pinkie&gt;");
+        assert_eq!(s, "&lt;pinkie&gt;");
     }
 
     #[test]
     fn raw_literal() {
         let s = maud::render(html! { $$"<pinkie>" });
-        assert_eq!(&*s, "<pinkie>");
+        assert_eq!(s, "<pinkie>");
     }
 
     #[test]
@@ -56,7 +56,7 @@ mod splice {
                 result
             }
         });
-        assert_eq!(&*s, "3628800");
+        assert_eq!(s, "3628800");
     }
 
     static BEST_PONY: &'static str = "Pinkie Pie";
@@ -64,7 +64,7 @@ mod splice {
     #[test]
     fn statics() {
         let s = maud::render(html! { $BEST_PONY });
-        assert_eq!(&*s, "Pinkie Pie");
+        assert_eq!(s, "Pinkie Pie");
     }
 
     // FIXME: See <https://github.com/rust-lang/rust/issues/15962>
@@ -74,7 +74,7 @@ mod splice {
     fn closure() {
         let best_pony = "Pinkie Pie";
         let s = maud::render(html! { $best_pony });
-        assert_eq!(&*s, "Pinkie Pie");
+        assert_eq!(s, "Pinkie Pie");
     }
     */
 }