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 日 |
#2098 在 编码
被 2 crate 使用
87KB
2K SLoC
Postcard Bindgen
Postcard Bindgen
允许为其他语言生成代码,以便将数据序列化到 postcard 字节格式并从中反序列化。这有助于设置使用 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 License,版本2.0或MIT许可。
除非您明确说明,否则您提交给Postcard Bindgen以供包含在内的任何贡献,如Apache-2.0许可中定义,应以上述双重许可方式许可,不附加任何额外条款或条件
依赖项
~0–405KB