1个不稳定版本
0.1.0 | 2022年8月29日 |
---|
121 在 #minimalist
每月下载 28 次
在 2 个crate中使用 (通过 rwasm)
5KB
85 行
rwasm
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