diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs
index 2624cf9..29a511e 100644
--- a/maud_macros/src/parse.rs
+++ b/maud_macros/src/parse.rs
@@ -58,7 +58,7 @@ struct Parser<'cx: 'r, 's: 'cx, 'i, 'r, 'o: 'r> {
     render: &'r mut Renderer<'cx, 's, 'o>,
 }
 
-impl<'cx: 'r, 's: 'cx, 'i, 'r, 'o: 'r> Parser<'cx, 's, 'i, 'r, 'o> {
+impl<'cx, 's, 'i, 'r, 'o> Parser<'cx, 's, 'i, 'r, 'o> {
     /// Consume `n` items from the input.
     fn shift(&mut self, n: usize) {
         self.input = self.input.slice_from(n);
diff --git a/maud_macros/src/render.rs b/maud_macros/src/render.rs
index d26d5d2..acb63ab 100644
--- a/maud_macros/src/render.rs
+++ b/maud_macros/src/render.rs
@@ -18,7 +18,7 @@ pub struct Renderer<'cx, 's: 'cx, 'o> {
     w: Ident,
 }
 
-impl<'cx, 's: 'cx, 'o> Renderer<'cx, 's, 'o> {
+impl<'cx, 's, 'o> Renderer<'cx, 's, 'o> {
     pub fn with<F>(cx: &'cx mut ExtCtxt<'s>, f: F) -> P<Expr> where
         F: for<'o_> FnOnce(&mut Renderer<'cx, 's, 'o_>)
     {