11个版本
0.3.3 | 2024年2月4日 |
---|---|
0.3.2 | 2023年8月20日 |
0.3.0 | 2023年4月30日 |
0.2.0 | 2023年1月19日 |
0.1.2 | 2022年11月26日 |
#956 in 编码
每月 45次下载
110KB
2.5K SLoC
Postcard Bindgen
Postcard Bindgen
允许生成其他语言用于将对象序列化为和反序列化postcard字节格式的代码。这有助于设置例如微控制器和App之间的通信,使用postcard crate
及其轻量级内存格式。
主要类型(结构体和枚举)可以通过添加PostcardBindings
注解来生成它们的代码。生成的代码可以导出为npm包,以便将其导入到javascript项目中。
使用方法
⚠️ 使用rust nightly运行生成绑定的crate。这是必要的,因为这个crate依赖于genco,并且这个crate使用nightly功能来检测列的变化。
需要生成绑定的结构体和枚举必须使用来自serde crate的Serialize
/Deserialize
和来自这个crate的PostcardBindings
宏进行注解。
该过程分为两个步骤。首先,是注解步骤,这通常在库crate中完成。其次,在额外的二进制crate中导入注解的结构体和枚举(这意味着库crate必须定义为依赖项),并添加生成逻辑作为主函数。要生成npm包,必须运行这个额外的二进制crate。
如果将
postcard-bindgen
crate作为依赖项添加到生成二进制crate中,则必须启用未来的generating
。
示例
此示例展示了如何轻松生成npm包。为此,结构体Test
和生成逻辑在同一个rust文件中。
#[derive(Serialize, PostcardBindings)]
struct Test {
name: u8,
other: u16,
}
fn main() {
build_npm_package(
std::env::current_dir().unwrap().as_path(),
PackageInfo {
name: "generation-test".into(),
version: "0.1.0".try_into().unwrap(),
},
generate_bindings!(Test),
)
.unwrap();
}
以下代码现在可以用于在JavaScript中序列化对象。
import { serialize } from "generation-test";
const test = {
name: "test",
other: 23
}
const bytes = serialize("Test", test)
JavaScript类型映射
类型名称 | Rust | Js |
单元类型 |
|
|
新类型 |
|
|
元组结构体 |
|
|
结构体 |
|
|
枚举 |
|
|
Option |
|
|
Map |
|
|
许可证
在您的选择下,受Apache许可证第2版或MIT许可证的许可。
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在Postcard Bindgen中的任何贡献,应如上双许可,没有任何附加条款或条件。
依赖项
~3.5–5.5MB
~98K SLoC