匯出的 struct Whatever
Rust 型別
T 參數 | &T 參數 | &mut T 參數 | T 回傳值 | Option<T> 參數 | Option<T> 回傳值 | JavaScript 表示法 |
---|---|---|---|---|---|---|
是 | 是 | 是 | 是 | 是 | 是 | 由 wasm-bindgen 產生的 JavaScript class Whatever { ... } 的實例 |
注意:實作
Copy
的公開欄位會自動產生 getter/setter。若要為非Copy
的公開欄位產生 getter/setter,請對結構使用#[wasm_bindgen(getter_with_clone)]
或手動實作 getter/setter。
Rust 使用範例
#![allow(unused)] fn main() { use wasm_bindgen::prelude::*; #[wasm_bindgen] pub struct ExportedNamedStruct { // pub value: String, // This won't work. See working example below. pub inner: u32, } #[wasm_bindgen(getter_with_clone)] pub struct ExportedNamedStructNonCopy { pub non_copy_value: String, pub copy_value: u32, } #[wasm_bindgen] pub fn named_struct_by_value(x: ExportedNamedStruct) {} #[wasm_bindgen] pub fn named_struct_by_shared_ref(x: &ExportedNamedStruct) {} #[wasm_bindgen] pub fn named_struct_by_exclusive_ref(x: &mut ExportedNamedStruct) {} #[wasm_bindgen] pub fn return_named_struct(inner: u32) -> ExportedNamedStruct { ExportedNamedStruct { inner } } #[wasm_bindgen] pub fn named_struct_by_optional_value(x: Option<ExportedNamedStruct>) {} #[wasm_bindgen] pub fn return_optional_named_struct(inner: u32) -> Option<ExportedNamedStruct> { Some(ExportedNamedStruct { inner }) } #[wasm_bindgen] pub struct ExportedTupleStruct(pub u32, pub u32); #[wasm_bindgen] pub fn return_tuple_struct(x: u32, y: u32) -> ExportedTupleStruct { ExportedTupleStruct(x, y) } }
JavaScript 使用範例
import {
ExportedNamedStruct,
named_struct_by_value,
named_struct_by_shared_ref,
named_struct_by_exclusive_ref,
return_named_struct,
named_struct_by_optional_value,
return_optional_named_struct,
ExportedTupleStruct,
return_tuple_struct
} from './guide_supported_types_examples';
let namedStruct = return_named_struct(42);
console.log(namedStruct instanceof ExportedNamedStruct); // true
console.log(namedStruct.inner); // 42
named_struct_by_shared_ref(namedStruct);
named_struct_by_exclusive_ref(namedStruct);
named_struct_by_value(namedStruct);
let optionalNamedStruct = return_optional_named_struct(42);
named_struct_by_optional_value(optionalNamedStruct);
let tupleStruct = return_tuple_struct(10, 20);
console.log(tupleStruct instanceof ExportedTupleStruct); // true
console.log(tupleStruct[0], tupleStruct[1]); // 10, 20