WebAssembly(Wasm)是一种面向栈式虚拟机的二进制指令格式。它能让代码在浏览器里以接近原生的速度执行,也越来越多被用在性能敏感的场景中。Rust 自带内存安全保证,对 WebAssembly 的支持也相当成熟,因此很适合用来编写 Wasm 模块。

为什么选 Rust 做 WebAssembly?可以从几个方面看:

  • 内存安全,且不需要垃圾回收器
  • 强大的宏系统,便于代码生成
  • 通过 wasm-pack 提供的完善 WebAssembly 工具链
  • Wasm 开发上有活跃的社区支持

动手之前先把环境装好。如果还没装 Rust,先执行安装脚本;随后用 cargo 安装 wasm-pack:

  • cargo install wasm-pack

接着写一个最简单的 WebAssembly 模块——一个把两个数相加的 Rust 函数。它接收两个 i32 参数并返回它们的和。#[no_mangle] 属性确保函数名不被改写,extern "C" 则让它可以从 JavaScript 中调用。

编译成 WebAssembly 用一条命令:wasm-pack build --target web。执行后会生成一个 pkg 目录,里面是 Wasm 文件和对应的 JavaScript 绑定。

在 JavaScript 里使用这个模块,先引入初始化函数和 add,调用 init 完成加载,再传入参数计算结果。示例中传入 5 和 7,控制台会打印出 5 + 7 = 12。

Rust 加 WebAssembly 的组合,可以用来构建高性能的 Web 应用。加法只是入门示例,更复杂的场景还包括游戏引擎、图像处理以及加密运算。Rust 的安全性与 Wasm 的性能叠加,为 Web 开发打开了更多可能。