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 在 编码
690,935 每月下载量
在 2,712 个 crate (368 个直接使用) 中使用
140KB
3.5K SLoC
Serde CBOR
项目已存档
经过近 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 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,应如上双许可,不附加任何额外条款或条件。
依赖项
~350–590KB
~13K SLoC