#serialization #python #pickle #serde

serde-pickle

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

14个版本 (3个稳定版)

1.1.1 2022年5月21日
1.1.0 2021年9月22日
0.6.3 2021年9月3日
0.6.2 2020年11月18日
0.2.0 2016年7月30日

#59编码

Download history 17487/week @ 2024-03-14 14986/week @ 2024-03-21 16281/week @ 2024-03-28 14258/week @ 2024-04-04 19440/week @ 2024-04-11 15611/week @ 2024-04-18 19328/week @ 2024-04-25 14982/week @ 2024-05-02 20965/week @ 2024-05-09 19833/week @ 2024-05-16 14877/week @ 2024-05-23 23466/week @ 2024-05-30 21760/week @ 2024-06-06 19169/week @ 2024-06-13 18537/week @ 2024-06-20 11677/week @ 2024-06-27

每月下载量77,270
用于 76 个crate (55个直接使用)

MIT/Apache

320KB
3K SLoC

Serde Pickle序列化库

Build status Latest Version

文档

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

安装

这个crate与Cargo一起工作,可以在crates.io上找到,其Cargo.toml文件如下

[dependencies]
serde = "1.0"
serde-pickle = "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 = serde_pickle::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::from_slice(&serialized, Default::default()).unwrap();
    assert_eq!(map, deserialized);
}

支持序列化和反序列化实现了serde提供的特质的结构和枚举,并且与其他crate类似(使用serde_derive)。

依赖

~0.6–11MB
~110K SLoC