1

単純に追加するconsole_error_panic_hook::set_once()と、エラーが発生します。

[WARN]: :-) origin crate has no README
[INFO]: Installing wasm-bindgen...
error: cannot shadow already defined class `Error`
Error: Running the wasm-bindgen CLI
Caused by: failed to execute `wasm-bindgen`: exited with exit code: 1

はい、私は独自のError構造体を持っていますが、この関数を使用すると「シャドウ」エラーが発生するのはなぜですか?

Errorで構造体をエクスポートした場合にのみ、エラーが発生し[wasm_bindgen]ます。

実行後にエラーが発生するwasm-pack build --target web

再生

# cargo.toml
[package]
name = "testing"
version = "0.1.0"
edition = "2021"

[lib]
crate-type = ["cdylib", "rlib"]

[dependencies]
console_error_panic_hook = "0.1.7"
wasm-bindgen = { version = "0.2.76" }
// lib.rs

use wasm_bindgen::prelude::wasm_bindgen;
// Adding this does not help:
// extern crate console_error_panic_hook;

#[wasm_bindgen] // Works if either this line is remove...
struct Error {}

#[wasm_bindgen]
pub fn main() {
    console_error_panic_hook::set_once(); // ... or this one
    println!("Hello, world!");
}

バージョン

wasm-pack 0.10.2
cargo 1.58.0 (f01b232bc 2022-01-19)
rustc 1.58.1 (db9d1b20b 2022-01-20)
4

1 に答える 1

0

このコード:

#[wasm_bindgen]
struct Error {}

...独自のものをJavaScriptタイプstruct Errorへの WASM バインディングとして処理することを意味します。JavaScript にもバインドする必要があるため、これにより競合が発生します。複数のバインドがあると、JavaScript がWASM 関数に渡すときに、Rust でどの構造体を作成する必要があるかが不明です。Errorconsole_error_panic_hookErrorError

于 2022-02-10T03:32:18.177 に答える