Skip to main content

orx_parallel/infallible/fun/map/
enum.rs

1use crate::infallible::fun::Map;
2
3#[derive(Clone, Copy)]
4/// Map adapter that preserves an input index.
5pub struct MapEnum<M: Map>(M);
6
7impl<M: Map> MapEnum<M> {
8    /// Creates an enumerating map adapter.
9    pub fn new(m: M) -> Self {
10        Self(m)
11    }
12}
13
14impl<M: Map> Map for MapEnum<M> {
15    type I = (usize, M::I);
16
17    type O = (usize, M::O);
18
19    #[inline(always)]
20    fn map(&self, (idx, i): Self::I) -> Self::O {
21        (idx, self.0.map(i))
22    }
23}