pub struct BTreeIndexedVector<K, V> { /* private fields */ }
Expand description
A simple implementation of IndexedVector
using BTreeMap
.
It also supports range search.
Implementations§
Source§impl<K: Ord, V> BTreeIndexedVector<K, V>
impl<K: Ord, V> BTreeIndexedVector<K, V>
Sourcepub fn new<F: Fn(&V) -> K + 'static, C: IntoIterator<Item = V>>(
data: C,
key_func: F,
) -> Self
pub fn new<F: Fn(&V) -> K + 'static, C: IntoIterator<Item = V>>( data: C, key_func: F, ) -> Self
Create a new BTreeIndexedVector
from a vector of items.
The key_func
is used to extract the key from an item.
Examples found in repository?
examples/user.rs (line 32)
10fn main() {
11 let users = vec![
12 User {
13 name: "Tom".to_owned(),
14 age: 20,
15 },
16 User {
17 name: "Jane".to_owned(),
18 age: 20,
19 },
20 User {
21 name: "Ivan".to_owned(),
22 age: 30,
23 },
24 ];
25
26 let hash_vec = HashIndexedVector::new(users.clone(), |user: &User| user.age);
27 // Tom and Jane
28 dbg!(hash_vec.search(&20).collect::<Vec<_>>());
29 // Ivan
30 dbg!(hash_vec.search(&30).collect::<Vec<_>>());
31
32 let btree_vec = BTreeIndexedVector::new(users, |user: &User| user.age);
33 // Tom, Jane and Ivan
34 dbg!(btree_vec.search_range(10..40).collect::<Vec<_>>());
35}
Sourcepub fn search_range<R: RangeBounds<K>>(
&self,
range: R,
) -> impl Iterator<Item = &V>
pub fn search_range<R: RangeBounds<K>>( &self, range: R, ) -> impl Iterator<Item = &V>
Search for items in the given range.
Examples found in repository?
examples/user.rs (line 34)
10fn main() {
11 let users = vec![
12 User {
13 name: "Tom".to_owned(),
14 age: 20,
15 },
16 User {
17 name: "Jane".to_owned(),
18 age: 20,
19 },
20 User {
21 name: "Ivan".to_owned(),
22 age: 30,
23 },
24 ];
25
26 let hash_vec = HashIndexedVector::new(users.clone(), |user: &User| user.age);
27 // Tom and Jane
28 dbg!(hash_vec.search(&20).collect::<Vec<_>>());
29 // Ivan
30 dbg!(hash_vec.search(&30).collect::<Vec<_>>());
31
32 let btree_vec = BTreeIndexedVector::new(users, |user: &User| user.age);
33 // Tom, Jane and Ivan
34 dbg!(btree_vec.search_range(10..40).collect::<Vec<_>>());
35}
Trait Implementations§
Auto Trait Implementations§
impl<K, V> Freeze for BTreeIndexedVector<K, V>
impl<K, V> !RefUnwindSafe for BTreeIndexedVector<K, V>
impl<K, V> !Send for BTreeIndexedVector<K, V>
impl<K, V> !Sync for BTreeIndexedVector<K, V>
impl<K, V> Unpin for BTreeIndexedVector<K, V>
impl<K, V> !UnwindSafe for BTreeIndexedVector<K, V>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more