roopes_core/primitives/emitter/
lambda.rs1use super::Emitter;
5use std::marker::PhantomData;
6
7#[derive(Clone)]
11pub struct Lambda<L, O>
12where
13 L: super::Delegate<O>,
14{
15 delegate: L,
16 _t: PhantomData<O>,
17}
18
19impl<L, O> Lambda<L, O>
20where
21 L: super::Delegate<O>,
22{
23 pub fn new(delegate: L) -> Lambda<L, O>
26 {
27 Lambda {
28 delegate,
29 _t: PhantomData,
30 }
31 }
32}
33
34impl<L, O> Emitter<O> for Lambda<L, O>
35where
36 L: super::Delegate<O>,
37{
38 fn emit(&self) -> O
39 {
40 (self.delegate)()
41 }
42}
43
44impl<C, M> From<C> for Lambda<C, M>
45where
46 C: super::Delegate<M>,
47{
48 fn from(delegate: C) -> Self
49 {
50 Lambda::new(delegate)
51 }
52}