diff --git a/src/helper.rs b/src/helper.rs
index 5606fd0..bf19971 100644
--- a/src/helper.rs
+++ b/src/helper.rs
@@ -1,5 +1,5 @@
 use nom::IResult;
-use space::{whitespace, word_break};
+use space::{skip_whitespace, word_break};
 
 macro_rules! punct {
     ($i:expr, $punct:expr) => {
@@ -8,10 +8,7 @@
 }
 
 pub fn punct<'a>(input: &'a str, token: &'static str) -> IResult<&'a str, &'a str> {
-    let input = match whitespace(input) {
-        IResult::Done(rest, _) => rest,
-        IResult::Error => input,
-    };
+    let input = skip_whitespace(input);
     if input.starts_with(token) {
         IResult::Done(&input[token.len()..], token)
     } else {
diff --git a/src/lib.rs b/src/lib.rs
index 043e164..3af64bf 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -150,10 +150,7 @@
                  -> Result<T, String> {
         match f(input) {
             IResult::Done(mut rest, t) => {
-                rest = match space::whitespace(rest) {
-                    IResult::Done(rest, _) => rest,
-                    IResult::Error => rest,
-                };
+                rest = space::skip_whitespace(rest);
                 if rest.is_empty() {
                     Ok(t)
                 } else if rest.len() == input.len() {
diff --git a/src/lit.rs b/src/lit.rs
index 6caba80..c4860bc 100644
--- a/src/lit.rs
+++ b/src/lit.rs
@@ -130,7 +130,7 @@
 pub mod parsing {
     use super::*;
     use escape::{cooked_char, cooked_string, raw_string};
-    use space::whitespace;
+    use space::skip_whitespace;
     use nom::IResult;
     use unicode_xid::UnicodeXID;
 
@@ -194,7 +194,6 @@
     ));
 
     named!(float -> Lit, do_parse!(
-        option!(whitespace) >>
         value: float_string >>
         suffix: alt!(
             tag!("f32") => { |_| FloatTy::F32 }
@@ -207,10 +206,7 @@
     ));
 
     named!(pub int -> (u64, IntTy), tuple!(
-        preceded!(
-            option!(whitespace),
-            digits
-        ),
+        digits,
         alt!(
             tag!("isize") => { |_| IntTy::Isize }
             |
@@ -242,7 +238,9 @@
         keyword!("false") => { |_| Lit::Bool(false) }
     ));
 
-    fn float_string(input: &str) -> IResult<&str, String> {
+    fn float_string(mut input: &str) -> IResult<&str, String> {
+        input = skip_whitespace(input);
+
         let mut chars = input.chars().peekable();
         match chars.next() {
             Some(ch) if ch >= '0' && ch <= '9' => {}
@@ -318,6 +316,8 @@
     }
 
     pub fn digits(mut input: &str) -> IResult<&str, u64> {
+        input = skip_whitespace(input);
+
         let base = if input.starts_with("0x") {
             input = &input[2..];
             16
diff --git a/src/space.rs b/src/space.rs
index 36f9f0e..0e5cd89 100644
--- a/src/space.rs
+++ b/src/space.rs
@@ -84,3 +84,10 @@
         Some(_) | None => IResult::Done(input, ()),
     }
 }
+
+pub fn skip_whitespace(input: &str) -> &str {
+    match whitespace(input) {
+        IResult::Done(rest, _) => rest,
+        IResult::Error => input,
+    }
+}
