diff --git a/lib/api/src/backend/mod.rs b/lib/api/src/backend/mod.rs index 3a8efd871..41776a47a 100644 --- a/lib/api/src/backend/mod.rs +++ b/lib/api/src/backend/mod.rs @@ -60,7 +60,6 @@ pub enum BackendKind { Jsc, } -/// impl Default for BackendKind { fn default() -> Self { #[cfg(feature = "sys-default")] diff --git a/lib/c-api/src/wasm_c_api/engine/config/jsc.rs b/lib/c-api/src/wasm_c_api/engine/config/jsc.rs index 0c2777c51..b60bda261 100644 --- a/lib/c-api/src/wasm_c_api/engine/config/jsc.rs +++ b/lib/c-api/src/wasm_c_api/engine/config/jsc.rs @@ -16,7 +16,7 @@ use super::wasmer_engine_config_t; pub struct wasmer_jsc_engine_config_t; /// Create a new [`wasm_engine_t`] backed by a `jsc` engine. -pub fn wasm_jsc_engine_new_with_config(config: Box) -> Option> { +pub fn wasm_jsc_engine_new_with_config(config: wasm_config_t) -> Option> { if !matches!(config.engine, wasmer_engine_t::JSC) || !config.engine_config.is_jsc() { update_last_error("Cannot create a new `sys` engine with a non-sys-specific config!"); return None; diff --git a/lib/c-api/src/wasm_c_api/engine/config/sys.rs b/lib/c-api/src/wasm_c_api/engine/config/sys.rs index 5998fae39..f7006f8f1 100644 --- a/lib/c-api/src/wasm_c_api/engine/config/sys.rs +++ b/lib/c-api/src/wasm_c_api/engine/config/sys.rs @@ -137,8 +137,10 @@ pub extern "C" fn wasm_config_set_sys_compiler( if let wasmer_engine_config_t::Sys(ref mut c) = config.engine_config { c.compiler = compiler; } else { - let mut sys_config: wasmer_sys_engine_config_t = Default::default(); - sys_config.compiler = compiler; + let sys_config = wasmer_sys_engine_config_t { + compiler, + ..Default::default() + }; config.engine_config = wasmer_engine_config_t::Sys(sys_config); } } @@ -202,8 +204,10 @@ pub extern "C" fn wasm_config_set_sys_target( if let wasmer_engine_config_t::Sys(ref mut c) = config.engine_config { c.target = Some(target); } else { - let mut sys_config: wasmer_sys_engine_config_t = Default::default(); - sys_config.target = Some(target); + let sys_config = wasmer_sys_engine_config_t { + target: Some(target), + ..Default::default() + }; config.engine_config = wasmer_engine_config_t::Sys(sys_config); } } @@ -236,8 +240,11 @@ pub extern "C" fn wasm_config_sys_push_middleware( if let wasmer_engine_config_t::Sys(ref mut c) = config.engine_config { c.middlewares.push(*middleware); } else { - let mut sys_config: wasmer_sys_engine_config_t = Default::default(); - sys_config.middlewares.push(*middleware); + let sys_config = wasmer_sys_engine_config_t { + middlewares: vec![*middleware], + ..Default::default() + }; + config.engine_config = wasmer_engine_config_t::Sys(sys_config); } } @@ -292,14 +299,16 @@ pub extern "C" fn wasm_config_sys_canonicalize_nans(config: &mut wasm_config_t, if let wasmer_engine_config_t::Sys(ref mut c) = config.engine_config { c.nan_canonicalization = enable; } else { - let mut sys_config: wasmer_sys_engine_config_t = Default::default(); - sys_config.nan_canonicalization = enable; + let sys_config = wasmer_sys_engine_config_t { + nan_canonicalization: enable, + ..Default::default() + }; config.engine_config = wasmer_engine_config_t::Sys(sys_config); } } /// Create a new [`wasm_engine_t`] backed by a `sys` engine. -pub fn wasm_sys_engine_new_with_config(config: Box) -> Option> { +pub fn wasm_sys_engine_new_with_config(config: wasm_config_t) -> Option> { if !matches!(config.engine, wasmer_engine_t::UNIVERSAL) || !config.engine_config.is_sys() { update_last_error("Cannot create a new `sys` engine with a non-sys-specific config!"); return None; diff --git a/lib/c-api/src/wasm_c_api/engine/config/v8.rs b/lib/c-api/src/wasm_c_api/engine/config/v8.rs index aabc574ac..787a22979 100644 --- a/lib/c-api/src/wasm_c_api/engine/config/v8.rs +++ b/lib/c-api/src/wasm_c_api/engine/config/v8.rs @@ -16,7 +16,7 @@ use super::wasmer_engine_config_t; pub struct wasmer_v8_engine_config_t; /// Create a new [`wasm_engine_t`] backed by a `v8` engine. -pub fn wasm_v8_engine_new_with_config(config: Box) -> Option> { +pub fn wasm_v8_engine_new_with_config(config: wasm_config_t) -> Option> { if !matches!(config.engine, wasmer_engine_t::V8) || !config.engine_config.is_v8() { update_last_error("Cannot create a new `v8` engine with a non-v8-specific config!"); return None; diff --git a/lib/c-api/src/wasm_c_api/engine/config/wamr.rs b/lib/c-api/src/wasm_c_api/engine/config/wamr.rs index 775300b91..f38d5db6a 100644 --- a/lib/c-api/src/wasm_c_api/engine/config/wamr.rs +++ b/lib/c-api/src/wasm_c_api/engine/config/wamr.rs @@ -16,7 +16,7 @@ use super::wasmer_engine_config_t; pub struct wasmer_wamr_engine_config_t; /// Create a new [`wasm_engine_t`] backed by a `wamr` engine. -pub fn wasm_wamr_engine_new_with_config(config: Box) -> Option> { +pub fn wasm_wamr_engine_new_with_config(config: wasm_config_t) -> Option> { if !matches!(config.engine, wasmer_engine_t::WAMR) || !config.engine_config.is_wamr() { update_last_error("Cannot create a new `wamr` engine with a non-wamr-specific config!"); return None; diff --git a/lib/c-api/src/wasm_c_api/engine/config/wasmi.rs b/lib/c-api/src/wasm_c_api/engine/config/wasmi.rs index 0ab8e1191..6e440eb81 100644 --- a/lib/c-api/src/wasm_c_api/engine/config/wasmi.rs +++ b/lib/c-api/src/wasm_c_api/engine/config/wasmi.rs @@ -16,7 +16,7 @@ use super::wasmer_engine_config_t; pub struct wasmer_wasmi_engine_config_t; /// Create a new [`wasm_engine_t`] backed by a `wasmi` engine. -pub fn wasm_wasmi_engine_new_with_config(config: Box) -> Option> { +pub fn wasm_wasmi_engine_new_with_config(config: wasm_config_t) -> Option> { if !matches!(config.engine, wasmer_engine_t::WASMI) || !config.engine_config.is_wasmi() { update_last_error("Cannot create a new `wasmi` engine with a non-wasmi-specific config!"); return None; diff --git a/lib/c-api/src/wasm_c_api/engine/mod.rs b/lib/c-api/src/wasm_c_api/engine/mod.rs index 64865932c..bbfc382f9 100644 --- a/lib/c-api/src/wasm_c_api/engine/mod.rs +++ b/lib/c-api/src/wasm_c_api/engine/mod.rs @@ -60,22 +60,15 @@ impl Default for wasmer_engine_t { /// /// cbindgen:ignore #[repr(C)] +// We can let the API decide which engine is default with the given set of +// features. +// +// See the impl of `Default` for `BackendEngine` in the `wasmer` (API) crate. +#[derive(Default)] pub struct wasm_engine_t { pub(crate) inner: Engine, } -impl Default for wasm_engine_t { - fn default() -> Self { - // We can let the API decide which engine is default with the given set of - // features. - // - // See the impl of `Default` for `BackendEngine` in the `wasmer` (API) crate. - Self { - inner: Default::default(), - } - } -} - #[no_mangle] #[allow(unreachable_code)] pub extern "C" fn wasm_engine_new() -> Box { @@ -125,7 +118,7 @@ pub extern "C" fn wasm_engine_new_with_config( config: Option>, ) -> Option> { #[allow(unused)] - let config = config?; + let config = *(config?); match config.engine { #[cfg(feature = "sys")] diff --git a/lib/c-api/src/wasm_c_api/unstable/module.rs b/lib/c-api/src/wasm_c_api/unstable/module.rs index 7fdbf8811..c5b3ddc6d 100644 --- a/lib/c-api/src/wasm_c_api/unstable/module.rs +++ b/lib/c-api/src/wasm_c_api/unstable/module.rs @@ -172,7 +172,7 @@ pub unsafe extern "C" fn wasmer_module_new( engine: Option<&mut wasm_engine_t>, bytes: Option<&wasm_byte_vec_t>, ) -> Option> { - let engine: wasmer_api::Engine = engine?.inner.clone().into(); + let engine: wasmer_api::Engine = engine?.inner.clone(); let bytes = bytes?; let module = c_try!(Module::from_binary(&engine, bytes.as_slice()));