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

Download history 1415/week @ 2024-04-26 1181/week @ 2024-05-03 1211/week @ 2024-05-10 2323/week @ 2024-05-17 1665/week @ 2024-05-24 1471/week @ 2024-05-31 1031/week @ 2024-06-07 2020/week @ 2024-06-14 2866/week @ 2024-06-21 1903/week @ 2024-06-28 1965/week @ 2024-07-05 1895/week @ 2024-07-12 1236/week @ 2024-07-19 2482/week @ 2024-07-26 2045/week @ 2024-08-02 2668/week @ 2024-08-09

每月下载量8,844
37crate中使用(直接使用31个)

Unicode-3.0

22KB
473

databake crates.io

此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