Use append_separated
diff --git a/src/attr.rs b/src/attr.rs
index 828006f..d2d78ed 100644
--- a/src/attr.rs
+++ b/src/attr.rs
@@ -104,12 +104,7 @@
                 MetaItem::List(ref ident, ref inner) => {
                     tokens.append(&ident);
                     tokens.append("(");
-                    for (i, meta_item) in inner.iter().enumerate() {
-                        if i > 0 {
-                            tokens.append(",");
-                        }
-                        meta_item.to_tokens(tokens);
-                    }
+                    tokens.append_separated(inner, ",");
                     tokens.append(")");
                 }
                 MetaItem::NameValue(ref name, ref value) => {
diff --git a/src/generics.rs b/src/generics.rs
index 51f56b9..a2a66a5 100644
--- a/src/generics.rs
+++ b/src/generics.rs
@@ -192,12 +192,7 @@
             self.lifetime.to_tokens(tokens);
             if !self.bounds.is_empty() {
                 tokens.append(":");
-                for (i, bound) in self.bounds.iter().enumerate() {
-                    if i > 0 {
-                        tokens.append("+");
-                    }
-                    bound.to_tokens(tokens);
-                }
+                tokens.append_separated(&self.bounds, "+");
             }
         }
     }
diff --git a/src/ty.rs b/src/ty.rs
index 3d1cb1d..896cb7e 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -455,12 +455,7 @@
                 }
                 Ty::Tup(ref elems) => {
                     tokens.append("(");
-                    for (i, elem) in elems.iter().enumerate() {
-                        if i > 0 {
-                            tokens.append(",");
-                        }
-                        elem.to_tokens(tokens);
-                    }
+                    tokens.append_separated(elems, ",");
                     if elems.len() == 1 {
                         tokens.append(",");
                     }
@@ -498,12 +493,7 @@
                 Ty::PolyTraitRef(_) => unimplemented!(),
                 Ty::ImplTrait(ref bounds) => {
                     tokens.append("impl");
-                    for (i, bound) in bounds.iter().enumerate() {
-                        if i > 0 {
-                            tokens.append("+");
-                        }
-                        bound.to_tokens(tokens);
-                    }
+                    tokens.append_separated(bounds, "+");
                 }
                 Ty::Paren(ref inner) => {
                     tokens.append("(");
@@ -597,12 +587,7 @@
     impl ToTokens for ParenthesizedParameterData {
         fn to_tokens(&self, tokens: &mut Tokens) {
             tokens.append("(");
-            for (i, input) in self.inputs.iter().enumerate() {
-                if i > 0 {
-                    tokens.append(",");
-                }
-                input.to_tokens(tokens);
-            }
+            tokens.append_separated(&self.inputs, ",");
             tokens.append(")");
             if let Some(ref output) = self.output {
                 tokens.append("->");
@@ -615,12 +600,7 @@
         fn to_tokens(&self, tokens: &mut Tokens) {
             if !self.bound_lifetimes.is_empty() {
                 tokens.append("<");
-                for (i, lifetime) in self.bound_lifetimes.iter().enumerate() {
-                    if i > 0 {
-                        tokens.append(",");
-                    }
-                    lifetime.to_tokens(tokens);
-                }
+                tokens.append_separated(&self.bound_lifetimes, ",");
                 tokens.append(">");
             }
             self.trait_ref.to_tokens(tokens);