1个不稳定版本

0.1.0 2022年8月29日

121#minimalist

每月下载 28
2 个crate中使用 (通过 rwasm)

MIT 许可证

5KB
85

rwasm

Github actions Crate version NPM version License

Rust的极简WASM库。

核心概念

远程过程调用

所有从Rust到JavaScript的用户定义通信都通过远程过程调用进行。要执行的反向调用作为期望单个 Uint8Array 参数的常规函数,被提供给 rwasm JS实例。用户可以将要执行的功能名称和作为字节数据的数据一起发送。可以通过 rwasm 执行两种类型的RPC,下面将进行描述。

"发送" RPC

send RPC类型将数据发送到JavaScript,并期望不返回任何内容。

"请求" RPC

request RPC类型将数据发送到JavaScript,并期望返回一个 usize 值。该 usize 值表示写入由 u32 值标识的缓冲区的数据的长度(以字节为单位),该值必须在 request RPC中作为参数提供。

数据缓冲区

rwasm 库定义了一个类型为 <u32, [u8; BUFFER_SIZE]> 的哈希表(其中 BUFFER_SIZE 是等于 128k 的常量),允许插入新值,并通过 u32 键检索值的指针,该键可以从JavaScript调用,并用于将数据写入由 request RPC请求的特定缓冲区。

构建

rustup target add wasm32-unknown-unknown
cargo build --release --target=wasm32-unknown-unknown

服务

您可以使用cargo运行一个简单的静态服务器

cargo install basic-http-server
basic-http-server .

运行示例

# Go to the rust project.
cd rs
# Build the main example.
rustup target add wasm32-unknown-unknown
cargo build --release --example main
# Go back to the root folder.
cd ../
# Serve files statically from root.
cargo install basic-http-server
basic-http-server .
# Open localhost:PORT/examples/main

无运行时依赖