Building Rust Code into JavaScript Using wasm-pack
#rust
#wasm
#js
1. Installing Rust and wasm-pack
- If you don't have Rust installed on your machine, you can install it using the Rustup tool.
- To install
wasm-pack
, follow the instructions from Wasm-Pack Installer.
2. Creating a Rust Template Using Cargo
cargo new --lib my-lib
Running this command will create a new directory called
my-lib
with a Rust template for a library.3. Writing the Cargo.toml File
[package] name = "<name>" version = "<version>" authors = ["<author>"] edition = "<year>" description = "<description>" [lib] crate-type = ["cdylib", "rlib"] [dependencies] wasm-bindgen = "0.2.63"
For more detailed information about
Cargo.toml
, refer to this guide: Wasm-Pack Cargo.toml Deep Dive.4. Writing the Rust Code to Export to JavaScript
lib.rs
extern crate wasm_bindgen; #[wasm_bindgen] pub fn add(x: i32, y: i32) -> i32 { x + y }
Here, we use
wasm_bindgen
to define a Rust function add(x, y)
that will be callable from JavaScript.5. Building with wasm-pack
wasm-pack build
After running
wasm-pack build
, a pkg
directory will be generated. This contains the compiled WASM file along with JavaScript and TypeScript bindings created by wasm-bindgen
.6. Importing the Compiled Code into JavaScript
In your
package.json
, you can link the compiled package:{ "dependencies": { "rust-wasm": "file:../pkg", ... } }
Now, you can import the Rust function in your JavaScript/TypeScript code:
import * as wasm from "rust-wasm/rust_wasm"; alert(wasm.add(1, 2)); // Alerts: 3
References:
- rust-wasm-ts-template by utilForever
- Official wasm-pack documentation