#interfacing #emscripten #javascript #rsjs

nightly rsjs

简化Rust和JavaScript之间的接口

3个版本

使用旧的Rust 2015

0.1.2 2017年8月11日
0.1.1 2017年8月9日
0.1.0 2017年8月4日

WebAssembly中排名1164

Apache-2.0

26KB
334

rsjs是一个小型库,旨在提供一个方便的方式来连接Rust和JavaScript的世界。

它目前需要使用rust nightly通道和asmjs-unknown-emscriptenwasm-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(索引)

从对象表中删除对象。仅用于JSObjectDrop实现。释放仍然由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字符串。转换后内存将被释放,因此调用者应认为指针无效。

无运行时依赖