要在 Rust 中编写 WebAssembly (WASM) 代码,您需要遵循以下步骤:
-
安装 Rust 工具链:首先,确保您已经安装了 Rust。这将安装
rustc
(编译器)、cargo
(包管理器)和wasm32-unknown-unknown
目标(用于生成 WASM 二进制文件)。 -
创建一个新的 Rust 项目:打开终端,运行以下命令以创建一个名为
wasm_example
的新项目:
cargo new wasm_example --lib
这将在 wasm_example
目录中生成一个包含库文件(lib.rs
)的新项目。
- 进入项目目录:
cd wasm_example
- 编写 Rust 代码:打开
lib.rs
文件并编写您的 WASM 代码。例如,以下代码将一个简单的加法函数编译为 WASM:
#[no_mangle] pub extern "C" fn add(a: i32, b: i32) -> i32 { a + b }
这里,#[no_mangle]
属性确保函数名不会被改编,以便在 WASM 代码中使用。pub extern "C"
表示该函数可以被其他语言调用。
- 构建 WASM 代码:在项目目录中运行以下命令以构建 WASM 代码:
cargo build --target wasm32-unknown-unknown --release
这将在 target/wasm32-unknown-unknown/release
目录中生成一个名为 libwasm_example.wasm
的 WASM 文件。
- 在 Web 页面中使用 WASM 代码:要将生成的 WASM 文件嵌入到 Web 页面中,您需要使用 JavaScript API。首先,创建一个名为
index.html
的文件,其中包含以下内容:
WASM Example
这里,我们使用 fetch
API 从服务器获取 WASM 文件,然后使用 WebAssembly.compile
和 WebAssembly.instantiate
API 编译和实例化 WASM 模块。最后,我们调用 add
函数并将结果输出到控制台。
- 启动一个简单的 Web 服务器:要运行此示例,您需要一个简单的 Web 服务器。您可以使用 Python 内置的
http.server
模块,或者使用其他 Web 服务器软件(如 Nginx 或 Apache)。
在项目目录中运行以下命令以启动一个简单的 Web 服务器:
python -m http.server 8000
这将启动一个运行在端口 8000 上的简单 Web 服务器。
- 在浏览器中打开 Web 页面:在浏览器中访问
http://localhost:8000
,您应该看到控制台输出 “1 + 2 = 3”,表示 WASM 代码已成功运行。
这就是使用 Rust 编写和运行 WebAssembly 代码的基本过程。您可以根据需要编写更复杂的 Rust 代码并将其编译为 WASM。