1 use crate::wasm_config_t; 2 use wasmtime::{Engine, HostRef}; 3 4 #[repr(C)] 5 #[derive(Clone)] 6 pub struct wasm_engine_t { 7 pub(crate) engine: HostRef<Engine>, 8 } 9 10 wasmtime_c_api_macros::declare_own!(wasm_engine_t); 11 12 #[no_mangle] 13 pub extern "C" fn wasm_engine_new() -> Box<wasm_engine_t> { 14 Box::new(wasm_engine_t { 15 engine: HostRef::new(Engine::default()), 16 }) 17 } 18 19 #[no_mangle] 20 pub extern "C" fn wasm_engine_new_with_config(c: Box<wasm_config_t>) -> Box<wasm_engine_t> { 21 let config = c.config; 22 Box::new(wasm_engine_t { 23 engine: HostRef::new(Engine::new(&config)), 24 }) 25 } 26