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