support parsing negative numbers

This commit is contained in:
Jan Christian Grünhage 2021-12-18 12:54:51 +01:00
parent 7c8b242698
commit 81b7e84097

View file

@ -24,6 +24,10 @@ pub fn parse_number_with_radix<T: Num>(
) -> Option<T> {
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<T: Num>(
})
.collect();
(!digits.is_empty())
.then(|| T::from_str_radix(&digits, base).ok())
.then(|| T::from_str_radix(&format!("{}{}", prefix, digits), base).ok())
.flatten()
}