rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

impl Solution {
    fn reverse(x: i32) -> i32 {
        let mut abs = x.abs();
        let sign = x.signum();
        let mut y: i32 = 0;
        while abs > 0 {
            if let Some(v) = y.checked_mul(10) {
                y = v;
            } else {
                return 0;
            }
            if let Some(v) = y.checked_add(abs % 10) {
                y = v;
            } else {
                return 0;
            }
            abs /= 10;
        }
        y * sign
    }
}

#[test]
fn overflow() {
    assert_eq!(Solution::reverse(2_147_483_647), 0);
}

#[test]
fn pass() {
    assert_eq!(Solution::reverse(123_456_789), 987_654_321);
}

#[test]
fn negative() {
    assert_eq!(Solution::reverse(-123), -321);
}