Rust编译到WebAssembly可以在浏览器中获得接近原生的性能。本文介绍Rust + Wasm开发流程。 ## 环境搭建 ```bash rustup target add wasm32-unknown-unknown cargo install wasm-pack ``` ## 创建项目 ```bash cargo new --lib wasm-game cd wasm-game ``` ```toml [lib] crate-type = ["cdylib"] [dependencies] wasm-bindgen = "0.2" js-sys = "0.3" web-sys = { version = "0.3", features = ["Window", "Document", "Element", "HtmlCanvasElement"] } ``` ## 导出函数给JavaScript ```rust use wasm_bindgen::prelude::*; #[wasm_bindgen] pub fn fibonacci(n: u32) -> u32 { if n <= 1 { return n; } let (mut a, mut b) = (0, 1); for _ in 2..=n { let temp = b; b = a + b; a = temp; } b } ``` ## 调用JavaScript API ```rust use wasm_bindgen::prelude::*; use web_sys::{window, Document}; #[wasm_bindgen] pub fn create_element() -> Result<(), JsValue> { let document: Document = window() .unwrap() .document() .unwrap(); let p = document.create_element("p")?; p.set_text_content(Some("Hello from Rust!")); document.body().unwrap().append_child(&p)?; Ok(()) } ``` ## 构建与部署 ```bash wasm-pack build --target web ``` Rust + Wasm特别适合图像处理、加密计算、游戏引擎等计算密集型场景。