lichen/
fun.rs

1use var::Var;
2use def::Def;
3
4pub struct Fun(Box<dyn FnMut(&[Var], &Def) -> Option<Var> + Send>);
5impl Fun {
6    pub fn run(&mut self, args: &[Var], def: &Def) -> Option<Var> {
7        self.0(args, def)
8    }
9
10    pub fn new<F: 'static + Send>(fun: F) -> Fun
11        where F: FnMut(&[Var], &Def) -> Option<Var> {
12        Fun(Box::new(fun))
13    }
14}