roopes_core/primitives/transformer/
lambda.rs1pub trait Delegate<I, O> = Fn(&I) -> O;
7
8use super::Transformer;
9use std::marker::PhantomData;
10
11#[derive(Clone)]
14pub struct Lambda<C, I, O>
15where
16 C: Delegate<I, O>,
17{
18 delegate: C,
19 _t: PhantomData<(I, O)>,
20}
21
22impl<C, I, O> Lambda<C, I, O>
23where
24 C: Delegate<I, O>,
25{
26 pub fn new(delegate: C) -> Lambda<C, I, O>
29 {
30 Lambda {
31 delegate,
32 _t: PhantomData,
33 }
34 }
35}
36
37impl<C, I, O> Transformer<I, O> for Lambda<C, I, O>
38where
39 C: Delegate<I, O>,
40{
41 fn transform(
42 &self,
43 input: &I,
44 ) -> O
45 {
46 (self.delegate)(input)
47 }
48}
49
50impl<C, I, O> From<C> for Lambda<C, I, O>
51where
52 C: Delegate<I, O>,
53{
54 fn from(delegate: C) -> Self
55 {
56 Lambda::new(delegate)
57 }
58}