rustgym 0.2.0

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

impl Solution {
    fn odd_even_list(mut head: ListLink) -> ListLink {
        let mut odd: Vec<ListLink> = vec![];
        let mut even: Vec<ListLink> = vec![];
        let mut i = 1;
        while let Some(mut node) = head {
            head = node.next.take();
            if i % 2 == 1 {
                odd.push(Some(node));
            } else {
                even.push(Some(node));
            }
            i += 1;
        }
        let mut res: ListLink = None;
        while let Some(mut link) = even.pop() {
            link.as_mut().unwrap().next = res;
            res = link;
        }
        while let Some(mut link) = odd.pop() {
            link.as_mut().unwrap().next = res;
            res = link;
        }
        res
    }
}

#[test]
fn test() {
    let head = list![1, 2, 3, 4, 5];
    let res = list![1, 3, 5, 2, 4];
    assert_eq!(Solution::odd_even_list(head), res);
    let head = list![2, 1, 3, 5, 6, 4, 7];
    let res = list![2, 3, 6, 7, 1, 5, 4];
    assert_eq!(Solution::odd_even_list(head), res);
}