Struct ordsearch::OrderedCollection
[−]
[src]
pub struct OrderedCollection<T> { /* fields omitted */ }
A collection of ordered items that can efficiently satisfy queries for nearby elements.
Methods
impl<T: Ord> OrderedCollection<T>
[src]
fn from_sorted_iter<I>(iter: I) -> Self where
I: IntoIterator<Item = T>,
I::IntoIter: ExactSizeIterator<Item = T>,
[src]
I: IntoIterator<Item = T>,
I::IntoIter: ExactSizeIterator<Item = T>,
Construct a new OrderedCollection
from an iterator over sorted elements.
Note that if the iterator is not sorted, no error will be given, but lookups will give
incorrect results. The given iterator must also implement ExactSizeIterator
so that we
know the size of the lookup array.
Examples
Using an already-sorted iterator:
let mut s = BTreeSet::new(); s.insert(42); s.insert(89); s.insert(7); s.insert(12); let a = OrderedCollection::from_sorted_iter(s); assert_eq!(a.find_gte(50), Some(&89));
Sorting a collection and then iterating (in this case, you'd likely use new
instead):
let mut v = vec![42, 89, 7, 12]; v.sort_unstable(); let a = OrderedCollection::from_sorted_iter(v); assert_eq!(a.find_gte(50), Some(&89));
The OrderedCollection
can also be over references to somewhere else:
let mut s = BTreeSet::new(); s.insert(42); s.insert(89); s.insert(7); s.insert(12); let a = OrderedCollection::from_sorted_iter(s.iter()); assert_eq!(a.find_gte(50), Some(&&89));
fn from_slice<'a>(v: &'a mut [T]) -> OrderedCollection<&'a T>
[src]
Construct a new OrderedCollection
from a slice of elements.
Note that the underlying slice will be reordered!
Examples
let a = OrderedCollection::from(&mut [42, 89, 7, 12]); assert_eq!(a.find_gte(50), Some(&&89));
fn find_gte<'a, X>(&'a self, x: X) -> Option<&'a T> where
T: Borrow<X>,
X: Ord,
[src]
T: Borrow<X>,
X: Ord,
Find the smallest value v
such that v >= x
.
Returns None
if there is no such v
.
Trait Implementations
impl<T: Ord> From<Vec<T>> for OrderedCollection<T>
[src]
fn from(v: Vec<T>) -> OrderedCollection<T>
[src]
Construct a new OrderedCollection
from a vector of elements.
Examples
let a = OrderedCollection::from(vec![42, 89, 7, 12]); assert_eq!(a.find_gte(50), Some(&89));