1个不稳定版本

2020.1.1 2020年12月19日
0.0.1 2022年8月29日

#72#byte-buffer

22 每月下载量
oxid 中使用

MIT 许可证

15KB
382

rwasm

Github actions Crate version NPM version License

Rust的简约WASM库。

核心概念

远程过程调用

所有从Rust到JavaScript的用户定义通信都通过远程过程调用进行。要执行的RPC作为期望单个Uint8Array参数的常规函数提供给rwasm JS实例。用户可以发送要执行函数的名称以及作为字节的请求数据。通过rwasm可以执行两种类型的RPC,如下所述。

"send" RPC

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

"request" RPC

request RPC类型将数据发送到JavaScript,并期望返回一个usize值。该usize值表示写入由u32值标识的Buffer的数据长度,该值必须在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

依赖项

~2.5–3.5MB
~73K SLoC