use super::errors::*;
use anyhow::Context;
#[derive(Debug, Clone)]
pub struct Environment {
pub engine: wasmtime::Engine,
}
impl Environment {
pub fn new(debug: bool) -> Result<Self, PluginError> {
let mut config = wasmtime::Config::new();
config.debug_info(debug);
config.wasm_backtrace_details(if debug {
wasmtime::WasmBacktraceDetails::Enable
} else {
wasmtime::WasmBacktraceDetails::Disable
});
tracing::debug!("wasmtime configuration:\n{:#?}", config);
let engine = wasmtime::Engine::new(&config)
.context("initializing wasmtime engine")
.map_err(PluginError::InstantiateWasm)?;
Ok(Self { engine })
}
}