#serialization #python #pickle

serde-pickle

A serde-based serialization library for Python's pickle format

14 releases (3 stable)

1.1.1 May 21, 2022
1.1.0 Sep 22, 2021
0.6.3 Sep 3, 2021
0.6.2 Nov 18, 2020
0.2.0 Jul 30, 2016

#65 in Encoding

Download history 10552/week @ 2023-11-21 9991/week @ 2023-11-28 15990/week @ 2023-12-05 10390/week @ 2023-12-12 8928/week @ 2023-12-19 3664/week @ 2023-12-26 11109/week @ 2024-01-02 11727/week @ 2024-01-09 10061/week @ 2024-01-16 10181/week @ 2024-01-23 9803/week @ 2024-01-30 10563/week @ 2024-02-06 10524/week @ 2024-02-13 10480/week @ 2024-02-20 15546/week @ 2024-02-27 16154/week @ 2024-03-05

54,140 downloads per month
Used in 67 crates (49 directly)

MIT/Apache

320KB
3K SLoC

Serde Pickle Serialization Library

Build status Latest Version

Documentation

This crate is a Rust library for parsing and generating Python pickle streams. It is built upon Serde, a high performance generic serialization framework.

Installation

This crate works with Cargo and can be found on crates.io with a Cargo.toml like:

[dependencies]
serde = "1.0"
serde-pickle = "1.0"

Requirements

Minimum supported Rust version is 1.41.1.

Usage

As with other serde serialization implementations, this library provides toplevel functions for simple en/decoding of supported objects.

Example:

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);
}

Serializing and deserializing structs and enums that implement the serde-provided traits is supported, and works analogous to other crates (using serde_derive).

Dependencies

~0.6–4MB
~70K SLoC