swamp_vm_host/lib.rs
1use std::cell::RefCell;
2use std::rc::Rc;
3use swamp_vm::Vm;
4use swamp_vm::host::HostArgs;
5
6pub fn register_context_aware<T: 'static, F>(
7 vm_ref: &mut Vm,
8 id: u16,
9 context: &Rc<RefCell<T>>,
10 mut callback: F,
11) where
12 F: 'static + FnMut(&mut T, HostArgs),
13{
14 let context_clone = context.clone();
15 let wrapper = move |arg: HostArgs| {
16 let mut ctx = context_clone.borrow_mut();
17 callback(&mut *ctx, arg);
18 };
19
20 vm_ref.add_host_function(id, wrapper);
21}