vecdb/iterators/
iterable.rs1use crate::{AnyStoredVec, AnyVec, BoxedVecIterator, StoredIndex, StoredRaw};
2
3pub trait AnyIterableVec<I, T>: AnyVec {
5 #[allow(clippy::wrong_self_convention)]
6 fn boxed_iter(&self) -> BoxedVecIterator<'_, I, T>
7 where
8 I: StoredIndex,
9 T: StoredRaw;
10
11 fn iter(&self) -> BoxedVecIterator<'_, I, T>
12 where
13 I: StoredIndex,
14 T: StoredRaw,
15 {
16 self.boxed_iter()
17 }
18}
19
20pub trait AnyStoredIterableVec<I, T>: AnyIterableVec<I, T> + AnyStoredVec {}
22
23impl<I, T, U> AnyStoredIterableVec<I, T> for U where U: 'static + AnyIterableVec<I, T> + AnyStoredVec
24{}
25
26pub trait AnyCloneableIterableVec<I, T>: AnyIterableVec<I, T> {
28 fn boxed_clone(&self) -> Box<dyn AnyCloneableIterableVec<I, T>>;
29}
30
31impl<I, T, U> AnyCloneableIterableVec<I, T> for U
32where
33 U: 'static + AnyIterableVec<I, T> + Clone,
34{
35 fn boxed_clone(&self) -> Box<dyn AnyCloneableIterableVec<I, T>> {
36 Box::new(self.clone())
37 }
38}
39
40impl<I, T> Clone for Box<dyn AnyCloneableIterableVec<I, T>> {
41 fn clone(&self) -> Self {
42 self.boxed_clone()
43 }
44}
45
46pub type AnyBoxedIterableVec<I, T> = Box<dyn AnyCloneableIterableVec<I, T>>;