birkenfeld/serde-pickle


Rust (de)serialization for the Python pickle format.

License: Other

Language: Rust


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 = "*"
serde-pickle = "*"

Usage

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

Example:

extern crate serde;
extern crate serde_pickle;

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 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).

Project Statistics

Sourcerank 6
Repository Size 88.9 KB
Stars 42
Forks 4
Watchers 2
Open issues 0
Dependencies 5
Contributors 2
Tags 6
Created
Last updated
Last pushed

Top Contributors See all

Georg Brandl waymost

Packages Referencing this Repo

serde-pickle
A serde-based serialization library for Python's pickle format
Latest release 0.5.0 - Updated - 42 stars

Recent Tags See all

v0.5.0 March 28, 2019
v0.4.1 May 01, 2018
v0.4.0 May 14, 2017
v0.3.0 January 28, 2017
v0.2.0 July 30, 2016
v0.1.0 April 22, 2016

Something wrong with this page? Make a suggestion

Last synced: 2019-03-28 13:47:53 UTC

Login to resync this repository