[−][src]Macro wlambda::set_vval_method
This macro helps with exporting something with a more OO interface instead of using a VValUserData trait implementation.
use wlambda::*; use wlambda::set_vval_method; let mut ctx = EvalContext::new_default(); let some_ref = std::rc::Rc::new(std::cell::RefCell::new(10)); let obj = VVal::map(); set_vval_method!(obj, some_ref, get_it, None, None, _env, _argc, { Ok(VVal::Int(*some_ref.borrow())) }); ctx.set_global_var("I", &obj); assert_eq!(ctx.eval("I.get_it[]").unwrap().s(), "10"); *some_ref.borrow_mut() += 11; assert_eq!(ctx.eval("I.get_it[]").unwrap().s(), "21");