15 releases (4 stable)

1.2.0 Nov 22, 2024
1.1.1 May 21, 2022
1.1.0 Sep 22, 2021
0.6.3 Sep 3, 2021
0.2.0 Jul 30, 2016

#113 in Encoding

Download history 17823/week @ 2024-12-01 16822/week @ 2024-12-08 14362/week @ 2024-12-15 6544/week @ 2024-12-22 9043/week @ 2024-12-29 13207/week @ 2025-01-05 15484/week @ 2025-01-12 16098/week @ 2025-01-19 15669/week @ 2025-01-26 41487/week @ 2025-02-02 44076/week @ 2025-02-09 47164/week @ 2025-02-16 62211/week @ 2025-02-23 65007/week @ 2025-03-02 71000/week @ 2025-03-09 56645/week @ 2025-03-16

257,097 downloads per month
Used in 93 crates (63 directly)

MIT/Apache

320KB
3.5K 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.1"

Requirements

Minimum supported Rust version is 1.63.0.

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–10MB
~104K SLoC