composable_indexes/testutils/
sorted_vec.rs

1use alloc::vec::Vec;
2
3#[derive(Debug, Clone, PartialEq, Eq)]
4pub struct SortedVec<T>(Vec<T>);
5
6impl<T: Ord> From<Vec<T>> for SortedVec<T> {
7    fn from(mut v: Vec<T>) -> Self {
8        v.sort();
9        SortedVec(v)
10    }
11}
12
13impl<T> From<SortedVec<T>> for Vec<T> {
14    fn from(sv: SortedVec<T>) -> Self {
15        sv.0
16    }
17}
18
19impl<T: Ord> IntoIterator for SortedVec<T> {
20    type Item = T;
21    type IntoIter = alloc::vec::IntoIter<T>;
22
23    fn into_iter(self) -> Self::IntoIter {
24        self.0.into_iter()
25    }
26}
27
28impl<T: Ord> FromIterator<T> for SortedVec<T> {
29    fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self {
30        let mut v: Vec<T> = iter.into_iter().collect();
31        v.sort();
32        SortedVec(v)
33    }
34}