如何在 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 文件中使用导出的结构?的主要内容,如果未能解决你的问题,请参考以下文章

js如何将openlayer地图导出为图片

js如何导出exel文件?

React-如何使导出组件对其目录私有?

navicat怎么导出表结构?mysql用navicat如何导出表结构啊?求解

如何在 store/index.js 中访问导出之外的状态?

如何使用sqlyog导出数据及表结构,数据库名等所有信息