3个版本
使用旧的Rust 2015
| 0.1.2 | 2017年8月11日 |
|---|---|
| 0.1.1 | 2017年8月9日 |
| 0.1.0 | 2017年8月4日 |
在WebAssembly中排名1164
26KB
334 行
rsjs是一个小型库,旨在提供一个方便的方式来连接Rust和JavaScript的世界。
它目前需要使用rust nightly通道和asmjs-unknown-emscripten或wasm-unknown-emscripten目标。有关设置开发环境的任何帮助,请参阅README。
JavaScript辅助工具
RSJS提供了一些JavaScript辅助函数来存储和转换JavaScript对象,以便从Rust中使用。所有这些都可以通过JavaScript全局对象RSJS在调用init之后访问。
RSJS全局
RSJS是由init创建的全局JavaScript对象。它包含所有辅助JavaScript函数以及一个对象表,用于保存Rust代码持有的JavaScript对象。有关更多详细信息,请参阅JSObject。
RSJS.loadObject(索引)
从对象表中加载一个JavaScript对象并返回它。
RSJS.storeObject(js_object)
将对象存储到对象表中并返回索引。结果通常由js_obj!包装成JSObject。
私有辅助函数
RSJS.releaseObject(索引)
从对象表中删除对象。仅用于JSObject的Drop实现。释放仍然由JSObject引用的对象将导致问题。
RSJS.copyStringToHeap(js_string)
将JavaScript字符串复制到Rust堆中并返回地址。字符串存储为一个32位无符号整数,包含缓冲区中16位代码单元(不是字节或字符!)的数量,后跟该数量个16位代码单元从UTF-16字符串。
由 js_string! 和 std::convert::From<JSObject> for String 实现。
RSJS.copyStringFromHeap(指针)
将存储在Rust堆上的String(如copyStringToHeap所述)转换为JavaScript字符串。转换后内存将被释放,因此调用者应认为指针无效。