make parse_number fallible
This commit is contained in:
parent
81b7e84097
commit
71be88574c
|
@ -22,21 +22,23 @@ pub fn parse_number_with_radix<T: Num>(
|
||||||
base: u32,
|
base: u32,
|
||||||
limit: Option<usize>,
|
limit: Option<usize>,
|
||||||
) -> Option<T> {
|
) -> Option<T> {
|
||||||
tokens.skip_tokens_while(|t| *t == ' ');
|
tokens.optional(|t| {
|
||||||
let mut remaining = limit.map(|x| x as isize).unwrap_or(isize::MAX);
|
t.skip_tokens_while(|t| *t == ' ');
|
||||||
let mut prefix = String::new();
|
let mut remaining = limit.map(|x| x as isize).unwrap_or(isize::MAX);
|
||||||
if tokens.token('-') {
|
let mut prefix = String::new();
|
||||||
prefix.push('-');
|
if t.token('-') {
|
||||||
}
|
prefix.push('-');
|
||||||
let digits: String = tokens
|
}
|
||||||
.tokens_while(|c| {
|
let digits: String = t
|
||||||
remaining -= 1;
|
.tokens_while(|c| {
|
||||||
c.is_digit(base) && remaining >= 0
|
remaining -= 1;
|
||||||
})
|
c.is_digit(base) && remaining >= 0
|
||||||
.collect();
|
})
|
||||||
(!digits.is_empty())
|
.collect();
|
||||||
.then(|| T::from_str_radix(&format!("{}{}", prefix, digits), base).ok())
|
(!digits.is_empty())
|
||||||
.flatten()
|
.then(|| T::from_str_radix(&format!("{}{}", prefix, digits), base).ok())
|
||||||
|
.flatten()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn parse_n<R, T, I, P, S, const N: usize>(
|
pub fn parse_n<R, T, I, P, S, const N: usize>(
|
||||||
|
|
Loading…
Reference in a new issue