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}