3 个稳定版本
1.0.2 | 2023年11月12日 |
---|---|
1.0.1 | 2023年11月11日 |
#3 在 #pickle
320KB
3.5K SLoC
Serde Pickle 序列化库
此 crate 是一个 Rust 库,用于解析和生成 Python pickle 流,从 serde-pickle 分支而来。该 crate 一段时间没有更新,并且不支持 pickle 规范的一些部分(例如 PERSID),这是解析 Meta LlaMA 模型所必需的。
它基于 Serde,一个高性能的通用序列化框架。
安装
此 crate 与 Cargo 一起工作,可以在 crates.io 上找到,其中包含一个 Cargo.toml
,如下所示:
[dependencies]
serde = "1.0.192"
serde-pickle-rs = "1.0.1"
要求
最低支持的 Rust 版本是 1.73.0。
使用
与其他 serde 序列化实现一样,此库提供了对支持的对象进行简单编解码的顶层函数。
示例
use std::collections::BTreeMap;
fn main() {
let mut map = BTreeMap::new();
map.insert("x".to_string(), 1.0);
map.insert("y".to_string(), 2.0);
// Serialize the map into a pickle stream.
// The second argument are serialization options.
let serialized = serde_pickle_rs::to_vec(&map, Default::default()).unwrap();
// Deserialize the pickle stream back into a map.
// Because we compare it to the original `map` below, Rust infers
// the type of `deserialized` and lets serde work its magic.
// The second argument are additional deserialization options.
let deserialized = serde_pickle_rs::from_slice(&serialized, Default::default()).unwrap();
assert_eq!(map, deserialized);
}
支持序列化和反序列化实现 serde 提供的特质的结构和枚举,并且与其他 crate(使用 serde_derive
)类似。
依赖项
~0.9–1.6MB
~35K SLoC