wars-rt 0.8.1

Wasm to Rust converter
Documentation
use super::*;
pub trait ForLt<'a>{
    type ForLt;
}
#[non_exhaustive]
pub enum Value<C: CtxSpec,R: for<'a>ForLt<'a>> {
    I32(u32),
    I64(u64),
    F32(f32),
    F64(f64),
    FunRef(
        Arc<
            dyn for<'a> Fn(
                    &'a mut C,
                    Vec<Value<C,R > >,
                ) -> <R as ForLt<'a>>::ForLt
                + Send
                + Sync
                + 'static,
        >,
    ),
    Null,
    ExRef(C::ExternRef),
    #[cfg(feature = "dumpster")]
    Gc(crate::gc::GcCore<Value<C,R>>),
}
#[cfg(feature = "dumpster")]
const _: () = {
    use dumpster::Trace;
    unsafe impl<C: CtxSpec<ExternRef: Trace>,R:for<'a>ForLt<'a>> Trace for Value<C,R> {
        fn accept<V: dumpster::Visitor>(&self, visitor: &mut V) -> Result<(), ()> {
            match self {
                Self::ExRef(e) => e.accept(visitor),
                Self::Gc(g) => g.accept(visitor),
                _ => Ok(()),
            }
        }
    }
};
impl<C: CtxSpec,R:for<'a>ForLt<'a>> Traverse<C> for Value<C,R> {
    fn traverse<'a>(&'a self) -> Box<dyn Iterator<Item = &'a <C as CtxSpec>::ExternRef> + 'a> {
        match self {
            Value::ExRef(e) => Box::new(once(e)),
            #[cfg(feature = "dumpster")]
            Value::Gc(g) => g.traverse(),
            _ => Box::new(empty()),
        }
    }
    fn traverse_mut<'a>(
        &'a mut self,
    ) -> Box<dyn Iterator<Item = &'a mut <C as CtxSpec>::ExternRef> + 'a> {
        match self {
            Value::ExRef(e) => Box::new(once(e)),
            #[cfg(feature = "dumpster")]
            Value::Gc(g) => g.traverse_mut(),
            _ => Box::new(empty()),
        }
    }
}
impl<C: CtxSpec,R: for<'a>ForLt<'a>> Clone for Value<C,R> {
    fn clone(&self) -> Self {
        match self {
            Self::I32(arg0) => Self::I32(arg0.clone()),
            Self::I64(arg0) => Self::I64(arg0.clone()),
            Self::F32(arg0) => Self::F32(arg0.clone()),
            Self::F64(arg0) => Self::F64(arg0.clone()),
            Self::FunRef(arg0) => Self::FunRef(arg0.clone()),
            Self::Null => Self::Null,
            Self::ExRef(e) => Self::ExRef(e.clone()),
            #[cfg(feature = "dumpster")]
            Self::Gc(c) => Self::Gc(c.clone()),
        }
    }
}