dsalgo 0.3.10

A package for Datastructures and Algorithms.
Documentation
pub fn merge_sorted<T: Ord>(
    a: Vec<T>,
    b: Vec<T>,
) -> Vec<T> {
    let mut res = Vec::with_capacity(a.len() + b.len());

    let mut a = a.into_iter();

    let mut b = b.into_iter();

    loop {
        let l = a.as_ref();

        let r = b.as_ref();

        if l.is_empty() || r.is_empty() {
            break;
        }

        if l[0] <= r[0] {
            res.push(a.next().unwrap());
        } else {
            res.push(b.next().unwrap());
        }
    }

    res.extend(a);

    res.extend(b);

    res
}

#[cfg(test)]

mod tests {

    use super::*;

    #[test]

    fn test() {
        let cases = vec![(
            (vec![2, 4, 6], vec![1, 3, 3, 7]),
            vec![1, 2, 3, 3, 4, 6, 7],
        )];

        for ((a, b), ans) in cases {
            assert_eq!(merge_sorted(a, b), ans);
        }
    }
}