bson 0.3.0

Encoding and decoding support for BSON in Rust
Documentation
#[macro_use]
extern crate bson;
use bson::{Encoder, Decoder};

extern crate serde;
use serde::{Serialize, Deserialize};

use std::collections::BTreeMap;

#[test]
fn test_ser_vec() {
    let vec = vec![1, 2, 3];

    let mut encoder = Encoder::new();
    vec.serialize(&mut encoder).unwrap();

    let expected = bson!([1, 2, 3]);
    assert_eq!(expected, encoder.bson().unwrap());
}

#[test]
fn test_ser_map() {
    let mut map = BTreeMap::new();
    map.insert("x", 0);
    map.insert("y", 1);

    let mut encoder = Encoder::new();
    map.serialize(&mut encoder).unwrap();

    let expected = bson!({ "x" => 0, "y" => 1 });
    assert_eq!(expected, encoder.bson().unwrap());
}

#[test]
fn test_de_vec() {
    let bson = bson!([1, 2, 3]);

    let mut decoder = Decoder::new(bson);
    let vec = Vec::<i32>::deserialize(&mut decoder).unwrap();

    let expected = vec![1, 2, 3];
    assert_eq!(expected, vec);
}

#[test]
fn test_de_map() {
    let bson = bson!({ "x" => 0, "y" => 1 });

    let mut decoder = Decoder::new(bson);
    let map = BTreeMap::<String, i32>::deserialize(&mut decoder).unwrap();

    let mut expected = BTreeMap::new();
    expected.insert("x".to_string(), 0);
    expected.insert("y".to_string(), 1);
    assert_eq!(expected, map);
}