如何使用WebAssembly构造函数定义Rust结构?

马修斯

我正在尝试将一个结构从Rust导出到WebAssembly,但是出现以下错误:

未捕获(承诺)TypeError:wasm.Test不是构造函数

锈:

use wasm_bindgen::prelude::*;

#[wasm_bindgen]
extern "C" {
    #[wasm_bindgen(js_namespace = console)]
    fn log(s: &str);
}

#[wasm_bindgen]
pub struct Test {
    pub x: i32,
}

#[wasm_bindgen]
impl Test {
    #[wasm_bindgen(constructor)]
    pub fn new() -> Self {
        Self {
            x: 0,
        }
    }
}

JS:

import init from './wasm.js'

async function run() {
    const wasm = await init().catch(console.error);
    console.log(wasm);

    let test = new wasm.Test();

    console.log(test);
}

run();

导出结构的正确方法是什么?

瓦伦丁

请注意,init()解决后,将返回WASM模块的导出。所以你不会找到Test,而是可以test_new代表Test::new执行完后,这应该在控制台中可见console.log(wasm);

要解决您的问题,您需要Test在最初导入的位置进行导入init

import init, { Test } from './wasm.js';

async function run() {
    const wasm = await init().catch(console.error);
    console.log(wasm);

    let test = new Test();
    console.log(test);
}

run();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何定义构造函数?

使用Kotlin定义recyclerView时如何定义ViewHolder的构造函数

获取UndefVarError:尝试在Julia中使用内部构造函数定义结构时未定义新

使用宏定义结构和函数,如何停止多个定义

使用Swift结构构造函数作为函数

Nim如何定义构造函数?

如何使用类型别名定义类型构造函数

如何使用类构造函数为类实例定义接口

SQL Server-如何使用表构造函数定义查询

如何在宏中使用类型(ty)在Rust中构造结构实例?

使用构造函数初始化指向已定义结构的指针数组

如何在Rust中为函数请求和使用结构(无结构实例!)?

C使用构造函数创建结构数组

Java:如何从构造函数定义函数?

如何使用函数成员和默认公共构造函数创建 F# 结构?

如何使用户定义的空默认构造函数的行为类似于编译器定义的空构造函数

使用结构构造函数在 C++ 中创建结构实例

在结构内定义没有默认构造函数的类

在类构造函数中定义结构变量的参数

使用基类构造函数的子类构造函数的轮廓定义

如何在 java 构造函数中使用 List<CustomType> 参数创建树状结构

如何在c ++中使用构造函数初始化结构列表

复制结构的结构的构造函数

如何使用 VSCode 和 CodeLLDB 调试 Rust 和 WebAssembly 程序?

结构构造函数调用this()

C ++结构构造函数

如何正确定义move构造函数?

我应该如何定义构造函数(JS)

如何使用与其父类构造函数不同的参数创建自定义(ElevatedButton)类构造函数?