wasm_bindgen_duck_type
Macro to automatically generate duck type interfaces with wasm_bindgen
Why
For most cases, Serde should be used to serialize and deserialize objects passed between JavaScript and Rust. Additionally, if the JavaScript object is an instance of a class, this crate is not necessary, as the implementation of the class can be used.
However, some types, such as a web_sys::Element or js_sys::Function, cannot be serialized as text, so this approach will not work. In these cases, this macro can be used to provide a typed interface for interaction, when the JavaScript object is untyped.
How
This crate generates a Duck Typed interface based on the given struct definition, as well as a new constructor and Default trait implementation.
Usage
The [wasm_bindgen_duck_type] attribute macro can be applied to structs to generate the duck type interface for the struct.
Example
JavaScript:
Rust:
use wasm_bindgen_duck_type;
use *;
extern "C"