diff --git a/src/escape.rs b/src/escape.rs
index 3cd793f..d8831eb 100644
--- a/src/escape.rs
+++ b/src/escape.rs
@@ -88,7 +88,8 @@
                     Some((_, b'0')) => vec.push(b'\0'),
                     Some((_, b'\'')) => vec.push(b'\''),
                     Some((_, b'"')) => vec.push(b'"'),
-                    Some((newline, b'\n')) | Some((newline, b'\r')) => {
+                    Some((newline, b'\n')) |
+                    Some((newline, b'\r')) => {
                         let rest = &input[newline + 1..];
                         for (offset, ch) in rest.char_indices() {
                             if !ch.is_whitespace() {
diff --git a/src/lib.rs b/src/lib.rs
index 87bb38f..6ed88cb 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -54,9 +54,9 @@
 #[cfg(feature = "full")]
 mod item;
 #[cfg(feature = "full")]
-pub use item::{Constness, Defaultness, FnArg, FnDecl, ForeignItemKind, ForeignItem,
-               ForeignMod, ImplItem, ImplItemKind, ImplPolarity, Item, ItemKind, MethodSig,
-               PathListItem, TraitItem, TraitItemKind, ViewPath};
+pub use item::{Constness, Defaultness, FnArg, FnDecl, ForeignItemKind, ForeignItem, ForeignMod,
+               ImplItem, ImplItemKind, ImplPolarity, Item, ItemKind, MethodSig, PathListItem,
+               TraitItem, TraitItemKind, ViewPath};
 
 mod lit;
 pub use lit::{FloatTy, IntTy, Lit, StrStyle};
diff --git a/src/registry.rs b/src/registry.rs
index 2acd759..1d16805 100644
--- a/src/registry.rs
+++ b/src/registry.rs
@@ -181,7 +181,9 @@
 }
 
 /// Pull custom derives and cfgs out of the given Attribute.
-fn parse_attr(reg: &Registry, attr: Attribute) -> (Vec<Derive>, Vec<NestedMetaItem>, Option<Attribute>) {
+fn parse_attr(reg: &Registry,
+              attr: Attribute)
+              -> (Vec<Derive>, Vec<NestedMetaItem>, Option<Attribute>) {
     if attr.style != AttrStyle::Outer || attr.is_sugared_doc {
         return (Vec::new(), Vec::new(), Some(attr));
     }
@@ -223,7 +225,9 @@
 
 /// Assuming the given nested meta-items came from a #[derive(...)] attribute,
 /// pull out the ones that are custom derives.
-fn parse_derive_attr(reg: &Registry, nested: Vec<NestedMetaItem>) -> (Vec<Ident>, Option<Attribute>) {
+fn parse_derive_attr(reg: &Registry,
+                     nested: Vec<NestedMetaItem>)
+                     -> (Vec<Ident>, Option<Attribute>) {
     let mut derives = Vec::new();
 
     let remaining: Vec<_> = nested.into_iter()
@@ -296,7 +300,8 @@
         let attr = attr.map(|attr| {
             Attribute {
                 style: AttrStyle::Outer,
-                value: MetaItem::List("cfg_attr".into(), vec![cfg, NestedMetaItem::MetaItem(attr.value)]),
+                value: MetaItem::List("cfg_attr".into(),
+                                      vec![cfg, NestedMetaItem::MetaItem(attr.value)]),
                 is_sugared_doc: false,
             }
         });
@@ -304,7 +309,9 @@
     } else {
         let attr = Attribute {
             style: AttrStyle::Outer,
-            value: MetaItem::List("cfg_attr".into(), vec![cfg, NestedMetaItem::MetaItem(MetaItem::List(name, nested))]),
+            value:
+                MetaItem::List("cfg_attr".into(),
+                               vec![cfg, NestedMetaItem::MetaItem(MetaItem::List(name, nested))]),
             is_sugared_doc: false,
         };
         (Vec::new(), Some(attr))
diff --git a/src/space.rs b/src/space.rs
index f43660b..d168e13 100644
--- a/src/space.rs
+++ b/src/space.rs
@@ -18,7 +18,8 @@
                     continue;
                 }
                 break;
-            } else if s.starts_with("/*") && (!s.starts_with("/**") || s.starts_with("/***")) && !s.starts_with("/*!") {
+            } else if s.starts_with("/*") && (!s.starts_with("/**") || s.starts_with("/***")) &&
+                      !s.starts_with("/*!") {
                 match block_comment(s) {
                     IResult::Done(_, com) => {
                         i += com.len();
diff --git a/src/ty.rs b/src/ty.rs
index 8ed7450..48cf0f9 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -109,7 +109,8 @@
     pub fn is_empty(&self) -> bool {
         match *self {
             PathParameters::AngleBracketed(ref bracketed) => {
-                bracketed.lifetimes.is_empty() && bracketed.types.is_empty() && bracketed.bindings.is_empty()
+                bracketed.lifetimes.is_empty() && bracketed.types.is_empty() &&
+                bracketed.bindings.is_empty()
             }
             PathParameters::Parenthesized(_) => false,
         }
