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日 |
#5 in #postcard
每月 57 次下载
用于 postcard-bindgen
100KB
2K SLoC
Postcard Bindgen
Postcard Bindgen
允许为其他语言生成代码,以将对象序列化和反序列化为 postcard 字节格式。这有助于设置例如微控制器和 App 之间的通信,使用 postcard crate
和其轻量级内存格式。
可以通过为主要的类型结构体和枚举添加 PostcardBindings
注解来生成它们的代码。生成的代码可以导出为 npm 包,以便将其导入到 JavaScript 项目中。
用法
⚠️ 使用 rust nightly 运行生成绑定的包。这是必要的,因为此包依赖于 genco,并且此包使用 nightly 功能来检测列变化。
应生成绑定的结构体和枚举必须使用 serde crate 中的 Serialize
/Deserialize
以及此包中的 PostcardBindings
宏进行注解。
此过程分为两个步骤。首先,是注解步骤。这通常在库包中完成。其次,在额外的二进制包中导入注解的结构体和枚举(这意味着库包必须定义为依赖项),并添加生成逻辑作为主函数。要生成 npm 包,必须运行此额外的二进制包。
如果将
postcard-bindgen
包添加为生成二进制包的依赖项,则必须启用未来的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 |
单元类型 |
|
|
新类型 |
|
|
元组结构体 |
|
|
结构体 |
|
|
枚举 |
|
|
选项 |
|
|
映射 |
|
|
许可
在您的选择下,受Apache License,Version 2.0或MIT许可的约束。
除非您明确表示,否则您故意提交给Postcard Bindgen以包含在内的任何贡献,根据Apache-2.0许可定义,应按上述方式双重许可,不附加任何额外的条款或条件。
依赖关系
~3.5–5.5MB
~96K SLoC