# wasm模块 # wasm # 套件 # 工具 # 预备 # JavaScript # 导出

rust-wasm-prelude

用于编写 WebAssembly 模块的 Rust 和 JavaScript 工具套件

1 个不稳定版本

使用旧的 Rust 2015

0.3.0 2018年1月19日

#导出 中排名第 22

MIT 许可证

3KB

rust-wasm

Build Status

用于编写 WebAssembly 模块的 Rust 和 JavaScript 工具套件。

  • 编写具有近似自动字符串处理和内存管理的函数
  • 如果您想避免不必要的分配,则具有人体工程学内存管理 API
  • 无需额外的构建时工具——使用 Cargo 和您的 JavaScript 打包器

注意: 这处于早期阶段,目前预计 API 将频繁更改。


lib.rs

extern crate rust_wasm_prelude;
use rust_wasm_prelude::*;

pub use rust_wasm_prelude::exports::*;

#[no_mangle]
pub fn to_uppercase(ptr: JsString) -> JsString {
    let mut s: String = js_string_input(ptr);
    s = s.to_uppercase();
    js_string_output(s)
}

index.js

import { Prelude, types } from '@rust-wasm/prelude'
import loadWasm from './lib.rs'

const prelude = new Prelude()

loadWasm()
  .then(module => module.instance.exports)
  .then(exports => {
    prelude.withExports(exports)

    const toUppercase = prelude.wrap(
      types.string,
      types.string,
      exports.to_uppercase
    )

    console.log('uppercase of `test` is', toUppercase('test'))
  })

安装

将 Rust 依赖项添加到您的 Cargo.toml

rust-wasm-prelude = "0.3.0"
rust-wasm-utils = "0.3.0"

使用 yarn/npm 安装 JavaScript 依赖项

yarn add @rust-wasm/prelude @rust-wasm/utils

示例

  • 基本示例:一个可构建的演示项目,展示了 API 的基本功能
  • 内存管理示例:与 basic 相同,但展示了如何在 JS 端手动管理内存

致谢

  • HelloRust 展示了字符串传递函数如何由 JavaScript 和 Rust 使用

依赖项

~0–1.4MB
~32K SLoC