To build a rust_binary
for wasm32-unknown-unknown
target add the --platforms=@rules_rust//rust/platform:wasm
flag.
bazel build @examples//hello_world_wasm --platforms=@rules_rust//rust/platform:wasm
To build a rust_binary
for wasm32-wasi
target add the --platforms=@rules_rust//rust/platform:wasi
flag.
bazel build @examples//hello_world_wasm --platforms=@rules_rust//rust/platform:wasi
rust_wasm_bindgen
will automatically transition to the wasm
platform and can be used when building WebAssembly code for the host target.
Generates javascript and typescript bindings for a webassembly module using wasm-bindgen.
To use the Rust WebAssembly bindgen rules, add the following to your WORKSPACE
file to add the external repositories for the Rust bindgen toolchain (in addition to the Rust rules setup):
load("@rules_rust//wasm_bindgen:repositories.bzl", "rust_wasm_bindgen_repositories") rust_wasm_bindgen_repositories()
For more details on rust_wasm_bindgen_repositories
, see here.
An example of this rule in use can be seen at @rules_rust//examples/wasm
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
bindgen_flags | Flags to pass directly to the bindgen executable. See https://github.com/rustwasm/wasm-bindgen/ for details. | List of strings | optional | [] |
target | The type of output to generate. See https://rustwasm.github.io/wasm-bindgen/reference/deployment.html for details. | String | optional | “bundler” |
wasm_file | The .wasm file or crate to generate bindings for. | Label | required |
The tools required for the rust_wasm_bindgen
rule.
In cases where users want to control or change the version of wasm-bindgen
used by rust_wasm_bindgen, a unique toolchain can be created as in the example below:
load("@rules_rust//bindgen:bindgen.bzl", "rust_bindgen_toolchain") rust_bindgen_toolchain( bindgen = "//my/cargo_raze:cargo_bin_wasm_bindgen", ) toolchain( name = "wasm_bindgen_toolchain", toolchain = "wasm_bindgen_toolchain_impl", toolchain_type = "@rules_rust//wasm_bindgen:toolchain_type", )
Now that you have your own toolchain, you need to register it by inserting the following statement in your WORKSPACE
file:
register_toolchains("//my/toolchains:wasm_bindgen_toolchain")
For additional information, see the Bazel toolchains documentation.
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
bindgen | The label of a wasm-bindgen-cli executable. | Label | optional | None |
Declare dependencies needed for the rules_rust
wasm-bindgen rules.
Registers the default toolchains for the rules_rust
wasm-bindgen rules.
PARAMETERS
Name | Description | Default Value |
---|---|---|
register_toolchains | Whether or not to register toolchains. | True |