#pickle #serialization #python #serde

pickled

基于 serde 的 Python pickle 格式序列化库

1 个稳定版本

1.2.0 2024 年 1 月 3 日

#915 in 编码


用于 wowsunpack

MIT/Apache

320KB
3.5K SLoC

Serde Pickle 序列化库

这是基于 https://crates.io/crates/serde-pickle 的一个分支,支持递归数据结构,并支持 variantly 以便更轻松地处理 pickled 数据。

此 CRATE 不适用于广泛使用,并且我不保证能成为一个好的项目负责人 (尽管我不会做坏事,但我不能保证我能支持这个 CRATE)

Latest Version

文档

这是一个 Rust 库,用于解析和生成 Python pickle 流。它基于 Serde,一个高性能的泛型序列化框架。

安装

此 CRATE 与 Cargo 一起工作,可以在 crates.io 上找到,其中包含一个 Cargo.toml 文件。

[dependencies]
serde = "1.0"
pickled = "1.0"

需求

最低支持的 Rust 版本是 1.41.1。

使用

与其他 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 = pickled::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 = pickled::from_slice(&serialized, Default::default()).unwrap();
    assert_eq!(map, deserialized);
}

支持序列化和反序列化实现 serde 提供的特质的结构和枚举,其工作方式类似于其他 CRATE(使用 serde_derive)。

依赖项

~3–13MB
~157K SLoC