tuwunel_core/utils/stream/cloned.rs
1use std::clone::Clone;
2
3use futures::{Stream, StreamExt, stream::Map};
4
5pub trait Cloned<'a, T, S>
6where
7 S: Stream<Item = &'a T>,
8 T: Clone + 'a,
9{
10 fn cloned(self) -> Map<S, fn(&T) -> T>;
11}
12
13impl<'a, T, S> Cloned<'a, T, S> for S
14where
15 S: Stream<Item = &'a T>,
16 T: Clone + 'a,
17{
18 #[inline]
19 fn cloned(self) -> Map<S, fn(&T) -> T> { self.map(Clone::clone) }
20}