Following snippet
pub struct Interpreter<'a> {
it: std::str::Chars<'a>,
}
impl<'a> Interpreter<'a> {
pub fn new(infix: &'a str) -> Self {
Self { it: infix.chars() }
}
fn next_char(&mut self) -> Option<char> {
self.it.next()
}
pub fn interpret(&mut self, out: &mut String) {
self.term(out);
while let Some(op) = self.next_char() {
if op == '+' || op == '-' {
self.term(out);
out.push(op);
} else {
panic!("Unexpected symbol '{op}'");
}
}
}
fn term(&mut self, out: &mut String) {
match self.next_char() {
Some(ch) if ch.is_digit(10) => out.push(ch),
Some(ch) => panic!("Unexpected symbol '{ch}'"),
None => panic!("Unexpected end of string"),
}
}
}
pub fn main() {
let mut intr = Interpreter::new("2+3");
let mut postfix = String::new();
intr.interpret(&mut postfix);
assert_eq!(postfix, "23+");
intr = Interpreter::new("1-2+3-4");
postfix.clear();
intr.interpret(&mut postfix);
assert_eq!(postfix, "12-3+4-");
}
Causes a following clippy warning
warning: use of `char::is_digit` with literal radix of 10
--> src/main.rs:29:25
|
29 | Some(ch) if ch.is_digit(10) => out.push(ch),
| ^^^^^^^^^^^^^^^ help: try: `ch.is_ascii_digit()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.95.0/index.html#is_digit_ascii_radix
= note: `#[warn(clippy::is_digit_ascii_radix)]` on by default
Following snippet
Causes a following clippy warning