rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;
use std::fmt;

struct Interval(i64, i64);

impl std::fmt::Display for Interval {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        if self.0 == self.1 {
            write!(f, "{}", self.0)
        } else {
            write!(f, "{}->{}", self.0, self.1)
        }
    }
}

impl Solution {
    fn find_missing_ranges(nums: Vec<i32>, lower: i32, upper: i32) -> Vec<String> {
        let mut cur = Interval(lower as i64, upper as i64);
        let mut res: Vec<Interval> = vec![];
        for x in nums {
            let x = x as i64;
            if x > cur.0 {
                res.push(Interval(cur.0, x - 1));
            }
            cur.0 = x + 1;
        }
        if cur.0 <= cur.1 {
            res.push(cur);
        }
        res.iter().map(|x| x.to_string()).collect()
    }
}

#[test]
fn test() {
    let nums = vec![0, 1, 3, 50, 75];
    let lower = 0;
    let upper = 99;
    let res = vec_string!["2", "4->49", "51->74", "76->99"];
    assert_eq!(Solution::find_missing_ranges(nums, lower, upper), res);
    let nums = vec![2_147_483_647];
    let lower = 0;
    let upper = 2_147_483_647;
    let res = vec_string!["0->2147483646"];
    assert_eq!(Solution::find_missing_ranges(nums, lower, upper), res);
}