orx_iterable/transformations/cloned.rs
1use crate::Iterable;
2
3/// An iterable whose iterators yield elements which are clones of references
4/// that a wrapped iterable yields.
5pub struct Cloned<'a, T, I>
6where
7 I: Iterable<Item = &'a T>,
8 T: Clone + 'a,
9{
10 pub(crate) it: I,
11}
12
13impl<'a, T, I> Iterable for Cloned<'a, T, I>
14where
15 I: Iterable<Item = &'a T>,
16 T: Clone + 'a,
17{
18 type Item = T;
19
20 type Iter = core::iter::Cloned<I::Iter>;
21
22 fn iter(&self) -> Self::Iter {
23 self.it.iter().cloned()
24 }
25}