diff --git a/src/parsing.rs b/src/parsing.rs index 0273a46..3827d52 100644 --- a/src/parsing.rs +++ b/src/parsing.rs @@ -24,6 +24,10 @@ pub fn parse_number_with_radix( ) -> Option { tokens.skip_tokens_while(|t| *t == ' '); let mut remaining = limit.map(|x| x as isize).unwrap_or(isize::MAX); + let mut prefix = String::new(); + if tokens.token('-') { + prefix.push('-'); + } let digits: String = tokens .tokens_while(|c| { remaining -= 1; @@ -31,7 +35,7 @@ pub fn parse_number_with_radix( }) .collect(); (!digits.is_empty()) - .then(|| T::from_str_radix(&digits, base).ok()) + .then(|| T::from_str_radix(&format!("{}{}", prefix, digits), base).ok()) .flatten() }