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}