roopes_core/patterns/abstract_factory/
lambda.rs1use super::AbstractFactory;
4use crate::prelude::*;
5use std::marker::PhantomData;
6
7pub struct Lambda<D, R>
10where
11 D: Emitter<R>,
12{
13 delegate: D,
14 _retain_types: PhantomData<(D, R)>,
15}
16
17impl<D, R> AbstractFactory<R> for Lambda<D, R>
18where
19 D: Emitter<R>,
20{
21 fn create(&self) -> R
24 {
25 self.delegate.emit()
26 }
27}
28
29impl<D, R> Lambda<D, R>
30where
31 D: Emitter<R>,
32{
33 pub fn new(delegate: D) -> Lambda<D, R>
36 {
37 Lambda {
38 delegate,
39 _retain_types: PhantomData,
40 }
41 }
42}
43
44impl<D, R> From<D> for Lambda<D, R>
45where
46 D: Emitter<R>,
47{
48 fn from(delegate: D) -> Self
49 {
50 Lambda::new(delegate)
51 }
52}