pub fn luhn(num: &str) -> bool {
let mut sum = 0;
let mut double = false;
for ch in num.chars().rev() {
if let Some(mut digit) = ch.to_digit(10) {
if double {
digit *= 2;
if digit > 9 {
digit -= 9;
}
}
sum += digit;
double = !double;
} else {
return false;
}
}
sum % 10 == 0
}