1个不稳定版本
2020.1.1 |
|
---|---|
0.0.1 | 2022年8月29日 |
#72 在 #byte-buffer
22 每月下载量
在 oxid 中使用
15KB
382 行
rwasm
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