MST

星途 面试题库

面试题:Rust中WebAssembly模块如何进行函数导出

请描述在Rust中,如何将函数导出为WebAssembly可调用的接口。包括必要的宏、函数定义及编译设置等关键步骤。
19.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
  1. 添加依赖: 在 Cargo.toml 文件中添加 wasm - bindgen 依赖,这是用于将Rust函数导出为WebAssembly可调用接口的重要工具。
    [dependencies]
    wasm - bindgen = "0.2"
    
  2. 宏与函数定义: 使用 wasm - bindgen 提供的 wasm_bindgen 宏来标记需要导出的函数。例如:
    use wasm_bindgen::wasm_bindgen;
    
    #[wasm_bindgen]
    pub fn add_numbers(a: i32, b: i32) -> i32 {
        a + b
    }
    
    这里定义了一个简单的 add_numbers 函数,接收两个 i32 类型的参数并返回它们的和,#[wasm_bindgen] 宏将这个函数标记为可导出为WebAssembly接口的函数。
  3. 编译设置: 确保安装了 wasm32 - unknown - unknown 目标:
    rustup target add wasm32 - unknown - unknown
    
    编译时,使用 wasm - bindgen 工具将生成的WebAssembly文件进一步处理,使其能在JavaScript环境中调用。编译命令如下:
    cargo build --target wasm32 - unknown - unknown
    wasm - bindgen target/wasm32 - unknown - unknown/debug/<your - crate - name>.wasm --out - dir pkg
    
    上述命令中,首先使用 cargo build 构建针对 wasm32 - unknown - unknown 目标的WebAssembly文件,然后 wasm - bindgen 工具将该WebAssembly文件处理后输出到 pkg 目录,生成的文件可以在JavaScript项目中导入和使用。