Проблема в том, что у вас есть досрочный возврат и вы не ставите ключевое слово return
перед ним, как показано ниже:
if digits[i] != digits[digits.len() - i] {
return false
}
Это потому, что все функции оценивают последнюю строку как возвращаемое значение. Если вы хотите вернуться, прежде чем перейти к последней строке, вам нужно добавить ключевое слово return
.
Дополнительным вводом здесь является рефакторинг вашего кода, чтобы он возвращался только один раз:
pub fn is_palindrome(num: u64) -> bool {
let mut digits = Vec::new();
let mut temp = num;
let mut retval = true;
loop {
digits.push(temp % 10);
temp /= 10;
if temp == 0 {
break;
}
}
for i in 0..digits.len() / 2 {
if digits[i] != digits[digits.len() - i] {
retval = false; // you might want to put a break here so that it exits the loop after finding the first issue
}
}
retval
}