環境
wasm-packをインストール
Wasmをビルドするためのツールcargo install wasm-packgenerateをインストール
プロジェクトテンプレートから初期ファイルを生成するためのツールcargo install cargo-generate- テンプレートからプロジェクトを生成
cargo generate --git https://github.com/rustwasm/wasm-pack-templateInfo
ここでプロジェクト名が聞かれるので入力
依存関係を追加
Cargo.toml に
[dependencies]
wasm-bindgen = "0.2"
[dependencies.web-sys]
version = "0.3.4"
features = [
'Document',
'Element',
'HtmlElement',
'Window',
'console',
]がもし無ければ追加する
Rustコードを実装
Todo
詳しい詳細は後で書くかもしれないし、書かないかもしれない。
ここで実際にwasmで行う処理を書く。
私は苦しんでwasmを作った
use wasm_bindgen::prelude::*;
use web_sys::{HtmlElement, window};
// Wasmの初期化時に一度だけ実行される関数
#[wasm_bindgen(start)]
pub fn run() -> Result<(), JsValue> {
let window = window().expect("windowオブジェクトを取得できませんでした");
let document = window.document().expect("documentオブジェクトを取得できませんでした");
/* some code */
Ok(())
}ビルド
wasm-pack build --target webJavaScriptから呼び出す
<script type="module">
import init from './pkg/[project name].js';
async function run() {
await init();
console.log("Wasmロード完了");
}
run();など