Я реализую strtol
в Rust так:
fn strtol(chars: &mut Chars<'_>) -> i64 {
let mut result: i64 = 0;
loop {
match chars.next() {
Some(c) => {
match c.to_digit(10) {
Some(i) => result = result * 10 + i64::from(i),
None => break,
}
},
None => break,
}
}
result
}
проблема в том, что после запуска strtol
итератор указывает на второй символ после цифры номера, который должен указывать на первый символ после цифры номера. Например, при вводе 1234abc после вызова strtol
итератор указывает на b
, который должен быть a
.