rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;
use rustgym_util::*;

impl Solution {
    fn add_two_numbers(l1: ListLink, l2: ListLink) -> ListLink {
        let mut v1: Vec<i32> = vec![];
        let mut v2: Vec<i32> = vec![];
        let mut p1 = &l1;
        let mut p2 = &l2;
        while let Some(n1) = p1 {
            v1.push(n1.val);
            p1 = &n1.next;
        }
        while let Some(n2) = p2 {
            v2.push(n2.val);
            p2 = &n2.next;
        }
        let mut carry = 0;
        let mut res = None;
        while !v1.is_empty() || !v2.is_empty() || carry != 0 {
            let mut sum = 0;
            if let Some(x1) = v1.pop() {
                sum += x1;
            }
            if let Some(x2) = v2.pop() {
                sum += x2;
            }
            sum += carry;
            res = ListLink::link(sum % 10, res);
            carry = sum / 10;
        }
        res
    }
}

#[test]
fn test() {
    let l1 = list!(7, 2, 4, 3);
    let l2 = list!(5, 6, 4);
    let res = list!(7, 8, 0, 7);
    assert_eq!(Solution::add_two_numbers(l1, l2), res);
}