9个版本
0.1.8 | 2024年5月28日 |
---|---|
0.1.7 | 2023年11月16日 |
0.1.6 | 2023年9月22日 |
0.1.5 | 2023年4月24日 |
0.1.0 | 2022年6月28日 |
在过程宏中排名34
每月下载量8,844
在37 个crate中使用(直接使用31个)
22KB
473 行
databake
此crate允许数据将自己写入Rust代码(自烘焙)。
实现Bake
特质的类型可以被写入Rust表达式,这使得可以使用Rust代码本身作为零开销的“序列化”策略。
示例
use databake::*;
use alloc::borrow::Cow;
let data = [Some((18, Cow::Borrowed("hi")))];
assert_eq!(
data.bake(&Default::default()).to_string(),
r#"[Some ((18i32 , alloc :: borrow :: Cow :: Borrowed ("hi")))]"#,
);
派生
如果启用了derive
Cargo功能,则可以自动派生Bake
。
use databake::*;
#[derive(Bake)]
#[databake(path = my_crate)]
struct MyStruct {
number: u32,
string: &'static str,
slice: &'static [bool],
}
#[derive(Bake)]
#[databake(path = my_crate)]
struct AnotherOne(MyStruct, char);
测试
可以使用test_bake
宏来断言特定表达式是Bake
的固定点。
test_bake!(
AnotherOne,
const: crate::AnotherOne(
crate::MyStruct {
number: 17u32,
string: "foo",
slice: &[true, false],
},
'b',
),
my_crate,
);
更多信息
有关开发、作者身份、贡献等信息,请访问ICU4X 主页
。
依赖项
~185KB