From b86ba7af8556f57635e02244806aa36af7f065b3 Mon Sep 17 00:00:00 2001
From: Chris Wong <lambda.fairy@gmail.com>
Date: Thu, 28 Mar 2019 20:18:12 +1300
Subject: [PATCH] Use absolute paths in generated code

Closes #170
---
 maud/tests/absolute_paths.rs | 13 +++++++++++++
 maud_macros/src/generate.rs  |  2 +-
 maud_macros/src/lib.rs       |  2 +-
 3 files changed, 15 insertions(+), 2 deletions(-)
 create mode 100644 maud/tests/absolute_paths.rs

diff --git a/maud/tests/absolute_paths.rs b/maud/tests/absolute_paths.rs
new file mode 100644
index 0000000..baee0b3
--- /dev/null
+++ b/maud/tests/absolute_paths.rs
@@ -0,0 +1,13 @@
+#![feature(proc_macro_hygiene)]
+
+// Make sure `std` is available but the prelude isn't
+#![no_std]
+extern crate std;
+
+use maud::html;
+
+#[test]
+fn issue_170() {
+    let number = 42;
+    let _ = html! { (number) };
+}
diff --git a/maud_macros/src/generate.rs b/maud_macros/src/generate.rs
index d48a860..f4c9d45 100644
--- a/maud_macros/src/generate.rs
+++ b/maud_macros/src/generate.rs
@@ -84,7 +84,7 @@ impl Generator {
         quote!({
             // Create a local trait alias so that autoref works
             trait Render: maud::Render {
-                fn __maud_render_to(&self, output_ident: &mut String) {
+                fn __maud_render_to(&self, output_ident: &mut ::std::string::String) {
                     maud::Render::render_to(self, output_ident);
                 }
             }
diff --git a/maud_macros/src/lib.rs b/maud_macros/src/lib.rs
index 010e3cd..1803ea7 100644
--- a/maud_macros/src/lib.rs
+++ b/maud_macros/src/lib.rs
@@ -46,7 +46,7 @@ fn expand(input: TokenStream) -> TokenStream {
     let stmts = generate::generate(markups, output_ident.clone());
     quote!({
         extern crate maud;
-        let mut $output_ident = String::with_capacity($size_hint);
+        let mut $output_ident = ::std::string::String::with_capacity($size_hint);
         $stmts
         maud::PreEscaped($output_ident)
     })