wasmtime-c-api-impl 44.0.0

C API to expose the Wasmtime runtime
Documentation
macro_rules! type_wrapper {
    (
        $(#[$attr:meta])*
        pub struct $name:ident { pub(crate) ty: $ty:ty, }

        clone: $clone:ident,
        delete: $delete:ident,
        $(equal: $equal:ident,)?
    ) => {
        #[derive(Clone)]
        $(#[$attr])*
        pub struct $name {
            pub(crate) ty: $ty,
        }

        impl From<$ty> for $name {
            fn from(ty: $ty) -> Self {
                $name { ty }
            }
        }

        #[unsafe(no_mangle)]
        pub extern "C" fn $clone(ty: &$name) -> Box<$name> {
            Box::new(ty.clone())
        }

        $(
            #[unsafe(no_mangle)]
            pub extern "C" fn $equal(a: &$name, b: &$name) -> bool {
                a.ty == b.ty
            }
        )?

        #[unsafe(no_mangle)]
        pub extern "C" fn $delete(_ty: Option<Box<$name>>) {}
    };
}

mod component;
mod func;
mod instance;
mod module;
mod resource;
mod val;

pub use component::*;
pub use func::*;
pub use instance::*;
pub use module::*;
pub use resource::*;
pub use val::*;