WebAssembly (WASM) 是一種用于現代Web瀏覽器的二進制指令格式。Rust 是一種系統編程語言,可以編譯成 WASM 以在Web上運行。要在Web瀏覽器中運行 Rust 編譯的 WASM 代碼,請按照以下步驟操作:
安裝 Rust 工具鏈:首先,確保已安裝 Rust。這將安裝 cargo
(Rust 的包管理器和構建系統)和 rustc
(Rust 編譯器)。
創建一個新的 Rust 項目:使用 cargo new wasm_example
命令創建一個新的 Rust 項目。這將生成一個包含基本代碼結構的項目。
進入項目目錄:使用 cd wasm_example
命令進入項目目錄。
添加 WebAssembly 目標:在項目根目錄下創建一個名為 Cargo.toml
的文件(如果尚未存在),并添加以下內容:
[package]
name = "wasm_example"
version = "0.1.0"
authors = ["Your Name <your.email@example.com>"]
edition = "2018"
[lib]
crate-type = ["cdylib"]
[dependencies]
wasm-bindgen = "0.2"
這將添加 wasm-bindgen
庫,用于在 Rust 和 JavaScript 之間進行交互。
編寫 Rust 代碼:在 src/lib.rs
文件中編寫以下代碼:
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
這段代碼定義了一個名為 add
的函數,該函數接受兩個整數參數并返回它們的和。使用 #[wasm_bindgen]
屬性將該函數暴露給 JavaScript。
構建 WASM 代碼:在項目根目錄下運行 cargo build --target wasm32-unknown-unknown --release
命令。這將生成一個名為 pkg/wasm_example.wasm
的 WASM 文件。
創建一個 HTML 文件:創建一個名為 index.html
的文件,并添加以下內容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WASM Example</title>
</head>
<body>
<script type="module">
import init, { add } from './pkg/wasm_example.js';
async function run() {
await init();
const result = add(1, 2);
console.log('Result:', result);
}
run();
</script>
</body>
</html>
這個 HTML 文件包含一個名為 init
的函數,用于加載 WASM 模塊。它還調用 add
函數并將結果輸出到控制臺。
使用一個簡單的 Web 服務器運行:為了在本地運行此示例,可以使用一個簡單的 Web 服務器。在項目根目錄下運行 python -m http.server
(如果已安裝 Python)或 npm install -g serve
(如果已安裝 Node.js 和 npm)。
在瀏覽器中打開 HTML 文件:在瀏覽器中打開 http://localhost:8000
,你應該看到控制臺中輸出的結果(在這種情況下為 “Result: 3”)。
這就是使用 Rust 和 WebAssembly 在瀏覽器中運行代碼的基本過程。你可以根據需要擴展此示例,以創建更復雜的應用程序。