fn main() { println!("Hello, world!"); } fn try_reverse(x: i32) -> Option { let mut i = x; let mut result: i32 = 0; while i != 0 { let digit = i % 10; result = result.checked_mul(10)?.checked_add(digit)?; i /= 10; } Some(result) } pub fn reverse(x: i32) -> i32 { try_reverse(x).unwrap_or(0) } #[cfg(test)] mod tests { use crate::reverse; #[test] fn test_1() { assert_eq!(reverse(123), 321); } #[test] fn test_2() { assert_eq!(reverse(-123), -321); } #[test] fn test_3() { assert_eq!(reverse(120), 21); } #[test] fn test_4() { assert_eq!(reverse(1534236469), 0); } }