1 个不稳定版本

0.12.0-dev2022年9月16日

#1873 in 编码

Download history 18424/week @ 2024-04-23 17528/week @ 2024-04-30 18717/week @ 2024-05-07 16410/week @ 2024-05-14 25614/week @ 2024-05-21 16578/week @ 2024-05-28 17803/week @ 2024-06-04 22490/week @ 2024-06-11 14989/week @ 2024-06-18 21197/week @ 2024-06-25 14049/week @ 2024-07-02 18448/week @ 2024-07-09 14244/week @ 2024-07-16 16065/week @ 2024-07-23 18803/week @ 2024-07-30 18767/week @ 2024-08-06

71,366 每月下载次数
用于 13 个crate (6 直接)

MIT/Apache

140KB
3.5K SLoC

Serde CBOR

Build Status Crates.io Documentation

项目已归档

经过近6年的发展,这个用于serde的CBOR实现已经在数百个具有不同需求的项目中使用。除了标准功能外,它还包含no-std环境、打包编码和CBOR标签。然而,由于这些功能有时会与其他功能或serde的选项相互影响,因此我作为此库的维护者,不愿意接受任何更改或新增功能。鉴于这种情况短期内不太可能改变,且没有人愿意承担维护此库的责任,我今天决定归档此仓库。如果你使用此库没有遇到问题,那么没有必要切换到其他实现。然而,如果你遇到问题或正在开发新项目,我建议你考虑使用以下crate:

~~ Pyfisch 2021年8月

此crate实现了RFC 7049中的 Concise Binary Object Representation (CBOR)。它基于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类型。

许可

许可协议为MIT/Apache。

任您选择。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交给作品的所有贡献,将按上述方式双重授权,不附加任何额外条款或条件。

依赖项

约350–590KB
约13K SLoC