leetcode_rust/
reverse_integer.rs1#![allow(dead_code)]
2
3
4pub fn reverse(x: i32) -> i32 {
5 use std::i32;
6
7 let mut x = x;
8 let mut ret = 0;
9 while x != 0 {
10 match i32::checked_mul(ret, 10) {
11 Some(val) => {
12 ret = val;
13 }
14 None => {
15 return 0;
16 }
17 };
18 match i32::checked_add(ret, x % 10) {
19 Some(val) => {
20 ret = val;
21 }
22 None => {
23 return 0;
24 }
25 };
26 x /= 10;
27 }
28 ret
29}
30
31#[cfg(test)]
32mod tests {
33 use super::*;
34
35 #[test]
36 fn test1() {
37 use std::i32;
38 assert_eq!(reverse(123), 321);
39 assert_eq!(reverse(-123), -321);
40 assert_eq!(reverse(120), 21);
41 assert_eq!(reverse(i32::max_value()), 0);
42 assert_eq!(reverse(i32::min_value()), 0);
43 }
44}