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:

toml [dependencies] serde = "*" serde-pickle = "*"

Requirements

Minimum supported Rust version is 1.31.0.

Usage

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

Example:

```rust use std::collections::BTreeMap;

fn main() { let mut map = BTreeMap::new(); map.insert("x".tostring(), 1.0); map.insert("y".tostring(), 2.0);

// Serialize the map into a pickle stream.
// The second argument selects pickle version 3.
let serialized = serde_pickle::to_vec(&map, true).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.
let deserialized = serde_pickle::from_slice(&serialized).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).