use crate::Node; | |
use std::marker::PhantomData; | |
pub struct FnNode<T: Fn(I) -> O, I, O>(T, PhantomData<(I, O)>); | |
impl<'i, T: Fn(I) -> O + 'i, O: 'i, I: 'i> Node<'i, I> for FnNode<T, I, O> { | |
type Output = O; | |
fn eval(&'i self, input: I) -> Self::Output { | |
self.0(input) | |
} | |
} | |
impl<T: Fn(I) -> O, I, O> FnNode<T, I, O> { | |
pub fn new(f: T) -> Self { | |
FnNode(f, PhantomData) | |
} | |
} | |