#serialization #cbor #serde #binary-encoding #no-std

停止维护 no-std serde_cbor

为 serde 提供的 CBOR 支持

23 个版本

0.11.2 2021 年 8 月 15 日
0.11.1 2020 年 1 月 12 日
0.10.2 2019 年 10 月 3 日
0.10.1 2019 年 7 月 11 日
0.1.0 2015 年 9 月 29 日

#2321编码

Download history 136249/week @ 2024-04-08 148480/week @ 2024-04-15 148693/week @ 2024-04-22 149127/week @ 2024-04-29 147193/week @ 2024-05-06 169817/week @ 2024-05-13 192172/week @ 2024-05-20 180810/week @ 2024-05-27 196655/week @ 2024-06-03 185253/week @ 2024-06-10 175212/week @ 2024-06-17 172341/week @ 2024-06-24 155135/week @ 2024-07-01 173440/week @ 2024-07-08 182750/week @ 2024-07-15 171121/week @ 2024-07-22

690,935 每月下载量
2,712 个 crate (368 个直接使用) 中使用

MIT/Apache

140KB
3.5K SLoC

Serde CBOR

Build Status Crates.io Documentation

项目已存档

经过近 6 年,是时候让这个 crate 退役了。这个 serde 的 CBOR 实现被成百上千个项目使用,这些项目有着广泛不同的需求。除了标准功能外,它还包含 no-std 环境的代码、压缩编码和 CBOR 标签。然而,虽然这些功能对许多人来说很有用,但它们有时会相互以及与 serde 的可选功能不兼容。由于我不使用这个 crate,并且由于可能出现新的错误,我一直不愿意接受对 crate 的任何更改或新增功能。鉴于这种情况在不久的将来不太可能改变,而且没有人站出来维护这个 crate,我今天将其存档。如果这个 crate 对您来说没问题,您没有必要切换到另一个实现。然而,如果您遇到问题或开始新项目,我建议您看看这些 crate:

~~ Pyfisch,2021 年 8 月

该 crate 实现了来自 RFC 7049 的 Concise Binary Object Representation。它基于 Serde,Rust 的通用序列化框架。CBOR 为 JSON 数据模型的一个超集提供了二进制编码,该编码体积小,解析速度快。

使用方法

Serde CBOR 支持 Rust 1.40 及以上版本。将以下内容添加到您的 Cargo.toml

[dependencies]
serde_cbor = "0.11.2"

存储和加载 Rust 类型非常简单,只需对程序代码进行最小修改。

use serde_derive::{Deserialize, Serialize};
use std::error::Error;
use std::fs::File;

// Types annotated with `Serialize` can be stored as CBOR.
// To be able to load them again add `Deserialize`.
#[derive(Debug, Serialize, Deserialize)]
struct Mascot {
    name: String,
    species: String,
    year_of_birth: u32,
}

fn main() -> Result<(), Box<dyn Error>> {
    let ferris = Mascot {
        name: "Ferris".to_owned(),
        species: "crab".to_owned(),
        year_of_birth: 2015,
    };

    let ferris_file = File::create("examples/ferris.cbor")?;
    // Write Ferris to the given file.
    // Instead of a file you can use any type that implements `io::Write`
    // like a HTTP body, database connection etc.
    serde_cbor::to_writer(ferris_file, &ferris)?;

    let tux_file = File::open("examples/tux.cbor")?;
    // Load Tux from a file.
    // Serde CBOR performs roundtrip serialization meaning that
    // the data will not change in any way.
    let tux: Mascot = serde_cbor::from_reader(tux_file)?;

    println!("{:?}", tux);
    // prints: Mascot { name: "Tux", species: "penguin", year_of_birth: 1996 }

    Ok(())
}

有很多选项可以自定义格式。要操作未类型化的 CBOR 值,请查看 Value 类型。

许可证

根据您选择以下任一许可证进行许可:

由您选择。

贡献

除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,应如上双许可,不附加任何额外条款或条件。

依赖项

~350–590KB
~13K SLoC