diff --git a/src/group.rs b/src/group.rs
index 3e03766..9e53757 100644
--- a/src/group.rs
+++ b/src/group.rs
@@ -40,28 +40,31 @@
     // Not public API.
     #[doc(hidden)]
     pub fn parse_parens(&self) -> Result<Parens<'a>> {
-        self.parse_group(Delimiter::Parenthesis).map(|(span, content)| Parens {
-            token: token::Paren(span),
-            content: content,
-        })
+        self.parse_group(Delimiter::Parenthesis)
+            .map(|(span, content)| Parens {
+                token: token::Paren(span),
+                content: content,
+            })
     }
 
     // Not public API.
     #[doc(hidden)]
     pub fn parse_braces(&self) -> Result<Braces<'a>> {
-        self.parse_group(Delimiter::Brace).map(|(span, content)| Braces {
-            token: token::Brace(span),
-            content: content,
-        })
+        self.parse_group(Delimiter::Brace)
+            .map(|(span, content)| Braces {
+                token: token::Brace(span),
+                content: content,
+            })
     }
 
     // Not public API.
     #[doc(hidden)]
     pub fn parse_brackets(&self) -> Result<Brackets<'a>> {
-        self.parse_group(Delimiter::Bracket).map(|(span, content)| Brackets {
-            token: token::Bracket(span),
-            content: content,
-        })
+        self.parse_group(Delimiter::Bracket)
+            .map(|(span, content)| Brackets {
+                token: token::Bracket(span),
+                content: content,
+            })
     }
 }
 
diff --git a/src/lib.rs b/src/lib.rs
index 9d90ab1..54d81b2 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -591,9 +591,9 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 #[cfg(feature = "parsing")]
-use synom::{Parser, Synom};
-#[cfg(feature = "parsing")]
 use proc_macro2::Span;
+#[cfg(feature = "parsing")]
+use synom::{Parser, Synom};
 
 #[cfg(feature = "parsing")]
 mod error;
@@ -720,7 +720,10 @@
 pub fn parse_str<T: Synom>(s: &str) -> Result<T, Error> {
     match s.parse() {
         Ok(tts) => parse2(tts),
-        Err(_) => Err(Error::new(Span::call_site(), "error while lexing input string")),
+        Err(_) => Err(Error::new(
+            Span::call_site(),
+            "error while lexing input string",
+        )),
     }
 }
 
diff --git a/src/synom.rs b/src/synom.rs
index 9f182d7..fc6338b 100644
--- a/src/synom.rs
+++ b/src/synom.rs
@@ -158,7 +158,7 @@
 use proc_macro2::{Delimiter, Group, Literal, Punct, Span, TokenStream, TokenTree};
 
 use error::parse_error;
-pub use error::{PResult, Error};
+pub use error::{Error, PResult};
 
 use buffer::{Cursor, TokenBuffer};
 use parse;
@@ -208,7 +208,10 @@
     }
 }
 
-impl<T> Synom for T where T: parse::Parse {
+impl<T> Synom for T
+where
+    T: parse::Parse,
+{
     fn parse(input: Cursor) -> PResult<Self> {
         let state = parse::ParseBuffer::new(Span::call_site(), input);
         match <T as parse::Parse>::parse(&state) {
@@ -318,7 +321,10 @@
     fn parse_str(self, s: &str) -> Result<Self::Output, Error> {
         match s.parse() {
             Ok(tts) => self.parse2(tts),
-            Err(_) => Err(Error::new(Span::call_site(), "error while lexing input string")),
+            Err(_) => Err(Error::new(
+                Span::call_site(),
+                "error while lexing input string",
+            )),
         }
     }
 }
diff --git a/src/token.rs b/src/token.rs
index 1ce0bc2..1d355a3 100644
--- a/src/token.rs
+++ b/src/token.rs
@@ -105,11 +105,11 @@
 #[cfg(feature = "extra-traits")]
 use std::hash::{Hash, Hasher};
 
+#[cfg(any(feature = "printing", feature = "parsing"))]
+use proc_macro2::Spacing;
 use proc_macro2::{Ident, Span};
 #[cfg(feature = "printing")]
 use proc_macro2::{Punct, TokenStream};
-#[cfg(any(feature = "printing", feature = "parsing"))]
-use proc_macro2::Spacing;
 #[cfg(feature = "printing")]
 use quote::{ToTokens, TokenStreamExt};
 
