Tengo las siguientes definiciones en el código de Rust:
#[wasm_bindgen] pub struct Point { x: i32, y: i32, } #[wasm_bindgen] impl Point { #[wasm_bindgen(constructor)] pub fn new(x: i32, y: i32) -> Point { Point { x, y } } }Registré el objeto creado en el archivo JS:
let p = new Point(23, 34); console.log(p);Pero me está dando un valor de puntero con el prototipo, no sé cómo usarlo.
¿Cómo puedo obtener un objeto JS como {x: 23, y: 34} con el prototipo?
De manera predeterminada, wasm_bindgen no incluye los campos reales de las estructuras cuando los pasa a JS, sino que genera un objeto contenedor que simplemente tiene un puntero a los datos en el montón (WASM) y expone los métodos/propiedades usando el prototipo. Debería poder acceder a campos (públicos) e invocar métodos utilizando la sintaxis estándar de JS, como se muestra aquí en la referencia de wasm-bindgen .
Si realmente desea devolver el contenido real, puede usar JsValue::from_serde , que permite serializar cualquier tipo que implemente Serialize en un objeto JS. Tenga en cuenta que este objeto no expondrá los métodos; sin embargo, está diseñado para pasar datos sin formato a través del límite JS/WASM. Esto se documenta aquí en la referencia de wasm-bindgen .