以下の内容はhttps://r9.hateblo.jp/entry/2022/06/12/233434より取得しました。


Rust の WebAssembly(wasm) の web-sys を使うときは Cargo.toml で features を指定する必要あり

Rust で WebAssembly しようとやってみたら最初でつまづいたのでメモ。

Cargo.toml

[dependencies]
web-sys = "0.3.57"

main.rs (trunk 使ってみてるので)

pub func main() {
    let window = web_sys::window().unwrap();
}
error[E0425]: cannot find function `window` in crate `web_sys`
 --> src/main.rs:6:27
  |
6 |     let window = web_sys::window().unwrap();
  |                           ^^^^^^ not found in `web_sys`



どうやら web-sys は膨大な内容を取り扱っているのと、最終成果物の WebAssembly のバイナリをできる限り小さくするために、デフォルトで全部機能をオフにしているらしい。
なので、使うものだけを Cargo の features に列挙していく必要がある。

Cargo.toml

[dependencies.web-sys]
version = "0.3.57"
features = [
  'Window'
]



https://rustwasm.github.io/wasm-bindgen/api/web_sys/

↑ここの Structs からそれっぽいやつを見つけて、詳細ページを見に行くと追加すべき features が書いてあるのでそれを Cargo.toml に追加する。

たとえば window.document() とつなげたければ Struct web_sys::Document を見に行って Document を追加すべきだとわかる。




以上の内容はhttps://r9.hateblo.jp/entry/2022/06/12/233434より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14