From 7b06af43692bcd76344660a4a8f4db570e28efc8 Mon Sep 17 00:00:00 2001
From: CreepySkeleton <creepy-skeleton@yandex.ru>
Date: Mon, 31 Aug 2020 09:51:21 +0300
Subject: [PATCH] Fix cargo clippy lints

---
 maud_macros/src/generate.rs | 24 ++++++++++--------------
 maud_macros/src/lib.rs      |  2 +-
 maud_macros/src/parse.rs    |  8 ++++----
 3 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/maud_macros/src/generate.rs b/maud_macros/src/generate.rs
index 24ad277..357896e 100644
--- a/maud_macros/src/generate.rs
+++ b/maud_macros/src/generate.rs
@@ -48,10 +48,10 @@ impl Generator {
                 }
             },
             Markup::Literal { content, .. } => build.push_escaped(&content),
-            Markup::Symbol { symbol } => self.name(symbol.into(), build),
-            Markup::Splice { expr, .. } => build.push_tokens(self.splice(expr.into())),
-            Markup::Element { name, attrs, body } => self.element(name.into(), attrs, body, build),
-            Markup::Let { tokens, .. } => build.push_tokens(tokens.into()),
+            Markup::Symbol { symbol } => self.name(symbol, build),
+            Markup::Splice { expr, .. } => build.push_tokens(self.splice(expr)),
+            Markup::Element { name, attrs, body } => self.element(name, attrs, body, build),
+            Markup::Let { tokens, .. } => build.push_tokens(tokens),
             Markup::Special { segments } => {
                 for segment in segments {
                     build.push_tokens(self.special(segment));
@@ -65,7 +65,6 @@ impl Generator {
                         .collect();
                     let mut body = TokenTree::Group(Group::new(Delimiter::Brace, body));
                     body.set_span(arms_span.collapse());
-                    let head: TokenStream = head.into();
                     quote!(#head #body)
                 });
             },
@@ -123,21 +122,21 @@ impl Generator {
             match attr_type {
                 AttrType::Normal { value } => {
                     build.push_str(" ");
-                    self.name(name.into(), build);
+                    self.name(name, build);
                     build.push_str("=\"");
                     self.markup(value, build);
                     build.push_str("\"");
                 },
                 AttrType::Empty { toggler: None } => {
                     build.push_str(" ");
-                    self.name(name.into(), build);
+                    self.name(name, build);
                 },
                 AttrType::Empty { toggler: Some(toggler) } => {
                     let head = desugar_toggler(toggler);
                     build.push_tokens({
                         let mut build = self.builder();
                         build.push_str(" ");
-                        self.name(name.into(), &mut build);
+                        self.name(name, &mut build);
                         let body = build.finish();
                         quote!(#head { #body })
                     })
@@ -148,13 +147,11 @@ impl Generator {
 
     fn special(&self, Special { head, body, .. }: Special) -> TokenStream {
         let body = self.block(body);
-        let head: TokenStream = head.into();
         quote!(#head #body)
     }
 
     fn match_arm(&self, MatchArm { head, body }: MatchArm) -> TokenStream {
         let body = self.block(body);
-        let head: TokenStream = head.into();
         quote!(#head #body)
     }
 }
@@ -204,11 +201,11 @@ fn desugar_classes_or_ids(
         };
         let head = desugar_toggler(toggler);
         markups.push(Markup::Special {
-            segments: vec![Special { at_span: SpanRange::call_site(), head: head.into(), body }],
+            segments: vec![Special { at_span: SpanRange::call_site(), head, body }],
         });
     }
     Some(Attribute {
-        name: TokenStream::from(TokenTree::Ident(Ident::new(attr_name, Span::call_site()))).into(),
+        name: TokenStream::from(TokenTree::Ident(Ident::new(attr_name, Span::call_site()))),
         attr_type: AttrType::Normal {
             value: Markup::Block(Block {
                 markups,
@@ -231,8 +228,7 @@ fn prepend_leading_space(name: Markup, leading_space: &mut bool) -> Vec<Markup>
     markups
 }
 
-fn desugar_toggler(Toggler { cond, cond_span }: Toggler) -> TokenStream {
-    let mut cond = TokenStream::from(cond);
+fn desugar_toggler(Toggler { mut cond, cond_span }: Toggler) -> TokenStream {
     // If the expression contains an opening brace `{`,
     // wrap it in parentheses to avoid parse errors
     if cond.clone().into_iter().any(is_braced_block) {
diff --git a/maud_macros/src/lib.rs b/maud_macros/src/lib.rs
index 8cfa149..dd63725 100644
--- a/maud_macros/src/lib.rs
+++ b/maud_macros/src/lib.rs
@@ -36,7 +36,7 @@ fn expand(input: TokenStream) -> TokenStream {
     // Heuristic: the size of the resulting markup tends to correlate with the
     // code size of the template itself
     let size_hint = input.to_string().len();
-    let markups = parse::parse(input.into());
+    let markups = parse::parse(input);
     let stmts = generate::generate(markups, output_ident.clone());
     quote!({
         extern crate maud;
diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs
index 67849ba..dd341e1 100644
--- a/maud_macros/src/parse.rs
+++ b/maud_macros/src/parse.rs
@@ -86,7 +86,7 @@ impl Parser {
                 Some((
                     TokenTree::Punct(ref punct),
                     Some(TokenTree::Ident(ref ident)),
-                )) if punct.as_char() == '@' && ident.to_string() == "let" => {
+                )) if punct.as_char() == '@' && *ident == "let" => {
                     self.advance2();
                     let keyword = TokenTree::Ident(ident.clone());
                     result.push(self.let_expr(punct.span(), keyword));
@@ -234,13 +234,13 @@ impl Parser {
             Some((
                 TokenTree::Punct(ref punct),
                 Some(TokenTree::Ident(ref else_keyword)),
-            )) if punct.as_char() == '@' && else_keyword.to_string() == "else" => {
+            )) if punct.as_char() == '@' && *else_keyword == "else" => {
                 self.advance2();
                 let at_span = punct.span();
                 let else_keyword = TokenTree::Ident(else_keyword.clone());
                 match self.peek() {
                     // `@else if`
-                    Some(TokenTree::Ident(ref if_keyword)) if if_keyword.to_string() == "if" => {
+                    Some(TokenTree::Ident(ref if_keyword)) if *if_keyword == "if" => {
                         self.advance();
                         let if_keyword = TokenTree::Ident(if_keyword.clone());
                         self.if_expr(at_span, vec![else_keyword, if_keyword], segments)
@@ -300,7 +300,7 @@ impl Parser {
         let mut head = vec![keyword];
         loop {
             match self.next() {
-                Some(TokenTree::Ident(ref in_keyword)) if in_keyword.to_string() == "in" => {
+                Some(TokenTree::Ident(ref in_keyword)) if *in_keyword == "in" => {
                     head.push(TokenTree::Ident(in_keyword.clone()));
                     break;
                 },