Function merge_sorted_deduped_in_place

Source
pub fn merge_sorted_deduped_in_place<T: Copy + Ord + Default>(
    a: &mut Vec<T>,
    b: &[T],
)
Expand description

Merges a sorted deduped Vec in place with a sorted deduped slice.

This is equivalent to a set union on sorted data.

Both inputs must be sorted and contain no duplicates.

ยงExamples

let mut v = vec![1, 3, 5];
merge_sorted_deduped_in_place(&mut v, &[2, 3, 4]);
assert_eq!(v, [1, 2, 3, 4, 5]);

// Elements at start and end
let mut v = vec![1, 2, 3, 4, 5];
merge_sorted_deduped_in_place(&mut v, &[0, 6]);
assert_eq!(v, [0, 1, 2, 3, 4, 5, 6]);

// Complete overlap
let mut v = vec![1, 2, 3];
merge_sorted_deduped_in_place(&mut v, &[1, 2, 3]);
assert_eq!(v, [1, 2, 3]);

// No overlap
let mut v = vec![1, 2];
merge_sorted_deduped_in_place(&mut v, &[3, 4]);
assert_eq!(v, [1, 2, 3, 4]);

let mut v = vec![24, 53];
merge_sorted_deduped_in_place(&mut v, &[6]);
assert_eq!(v, [6, 24, 53]);

// Partial overlap
let mut v = vec![10, 11, 12, 13];
merge_sorted_deduped_in_place(&mut v, &[13, 14]);
assert_eq!(v, [10, 11, 12, 13, 14]);

let mut v = vec![300, 400, 500];
merge_sorted_deduped_in_place(&mut v, &[100, 200, 300]);
assert_eq!(v, [100, 200, 300, 400, 500]);

// Empty inputs
let mut v = Vec::new();
merge_sorted_deduped_in_place(&mut v, &[5]);
assert_eq!(v, [5]);

let mut v = vec![6];
merge_sorted_deduped_in_place(&mut v, &[]);
assert_eq!(v, [6]);

let mut v: Vec<u32> = Vec::new();
merge_sorted_deduped_in_place(&mut v, &[]);
assert_eq!(v, []);