in shed/sorted_vector_map/src/map.rs [1144:1195]
fn extend_optimizations() {
// Initializing via extend will sort and take the values.
let mut svm = SortedVectorMap::new();
svm.extend(vec![(3, "three"), (2, "two"), (1, "one")]);
assert_eq!(svm.keys().cloned().collect::<Vec<_>>(), vec![1, 2, 3]);
assert_eq!(svm.first_key_value(), Some((&1, &"one")));
// This also works if there are duplicates: the last value will be
// taken.
let mut svm = SortedVectorMap::new();
svm.extend(vec![
(3, "three"),
(2, "two"),
(1, "one"),
(6, "six"),
(4, "four"),
(5, "five"),
(1, "one again"),
(6, "six again"),
]);
assert_eq!(
svm.keys().cloned().collect::<Vec<_>>(),
vec![1, 2, 3, 4, 5, 6],
);
assert_eq!(svm.first_key_value(), Some((&1, &"one again")));
assert_eq!(svm.pop_last(), Some((6, "six again")));
// Extending with values that are all after the highest key will
// efficiently append to the vector.
svm.extend(vec![(9, "nine"), (7, "seven"), (8, "eight"), (6, "six")]);
assert_eq!(
svm.keys().cloned().collect::<Vec<_>>(),
vec![1, 2, 3, 4, 5, 6, 7, 8, 9]
);
assert_eq!(svm.last_key_value(), Some((&9, &"nine")));
// If there are duplicate values, then the last value will be taken.
svm.extend(vec![
(11, "eleven"),
(12, "twelve"),
(10, "ten"),
(12, "twelve again"),
]);
assert_eq!(
svm.keys().cloned().collect::<Vec<_>>(),
vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
);
assert_eq!(svm.last_key_value(), Some((&12, &"twelve again")));
}