如何在 JS 文件中使用导出的结构?
Posted
技术标签:
【中文标题】如何在 JS 文件中使用导出的结构?【英文标题】:How to use exported struct in JS file? 【发布时间】:2021-12-10 03:01:37 【问题描述】:我在 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
我在 JS 文件中记录了创建的对象:
let p = new Point(23, 34);
console.log(p);
但是它给了我一个带有原型的指针值,我不知道如何使用它。
如何通过原型获得像 x: 23, y: 34 这样的 JS 对象?
【问题讨论】:
【参考方案1】:默认情况下,wasm_bindgen
在将结构传递给 JS 时不包含结构的实际字段,而是生成一个包装对象,该对象仅包含指向 (WASM) 堆上数据的指针,并使用以下方法公开方法/属性原型。您应该能够使用标准 JS 语法访问(公共)字段并调用方法,如 here in the wasm-bindgen reference 所示。
如果你真的想把实际的内容传回来,你可以使用JsValue::from_serde
,它允许将任何实现Serialize
的类型序列化成一个JS对象。但是请注意,此对象不会公开方法 - 它旨在跨 JS/WASM 边界传递纯数据。这记录在here in the wasm-bindgen reference。
【讨论】:
以上是关于如何在 JS 文件中使用导出的结构?的主要内容,如果未能解决你的问题,请参考以下文章
navicat怎么导出表结构?mysql用navicat如何导出表结构啊?求解