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}