#![allow(dead_code)] use wasmer::{Function, Global, LazyInit, Memory, NativeFunc, Table, WasmerEnv}; #[derive(WasmerEnv, Clone)] struct MyEnv { num: u32, nums: Vec, } fn impls_wasmer_env() -> bool { true } #[test] fn test_derive() { let _my_env = MyEnv { num: 3, nums: vec![1, 2, 3], }; assert!(impls_wasmer_env::()); } #[derive(WasmerEnv, Clone)] struct MyEnvWithMemory { num: u32, nums: Vec, #[wasmer(export)] memory: LazyInit, } #[derive(WasmerEnv, Clone)] struct MyEnvWithFuncs { num: u32, nums: Vec, #[wasmer(export)] memory: LazyInit, #[wasmer(export)] sum: LazyInit>, } #[derive(WasmerEnv, Clone)] struct MyEnvWithEverything { num: u32, nums: Vec, #[wasmer(export)] memory: LazyInit, #[wasmer(export)] sum: LazyInit>, #[wasmer(export)] multiply: LazyInit, #[wasmer(export)] counter: LazyInit, #[wasmer(export)] functions: LazyInit, } #[derive(WasmerEnv, Clone)] struct MyEnvWithLifetime<'a> { name: &'a str, #[wasmer(export(name = "memory"))] memory: LazyInit, } #[derive(WasmerEnv, Clone)] struct MyUnitStruct; #[derive(WasmerEnv, Clone)] struct MyTupleStruct(u32); #[derive(WasmerEnv, Clone)] struct MyTupleStruct2(u32, u32); #[derive(WasmerEnv, Clone)] struct MyTupleStructWithAttribute(#[wasmer(export(name = "memory"))] LazyInit, u32); #[test] fn test_derive_with_attribute() { assert!(impls_wasmer_env::()); assert!(impls_wasmer_env::()); assert!(impls_wasmer_env::()); assert!(impls_wasmer_env::()); assert!(impls_wasmer_env::()); assert!(impls_wasmer_env::()); assert!(impls_wasmer_env::()); assert!(impls_wasmer_env::()); } #[derive(WasmerEnv, Clone)] struct StructWithOptionalField { #[wasmer(export(optional = true))] memory: LazyInit, #[wasmer(export(optional = true, name = "real_memory"))] memory2: LazyInit, #[wasmer(export(optional = false))] memory3: LazyInit, } #[test] fn test_derive_with_optional() { assert!(impls_wasmer_env::()); } #[derive(WasmerEnv, Clone)] struct StructWithAliases { #[wasmer(export(alias = "_memory"))] memory: LazyInit, #[wasmer(export(alias = "_real_memory", optional = true, name = "real_memory"))] memory2: LazyInit, #[wasmer(export(alias = "_memory3", alias = "__memory3"))] memory3: LazyInit, #[wasmer(export(alias = "_memory3", name = "memory4", alias = "__memory3"))] memory4: LazyInit, } #[test] fn test_derive_with_aliases() { assert!(impls_wasmer_env::()); }