sval 0.3.1

A no-std, object-safe serialization framework
Documentation
#![cfg(feature = "std")]
#![feature(test)]

extern crate sval;
extern crate test;

use sval::value;

use test::{
    black_box,
    Bencher,
};

#[bench]
fn collect_primitive(b: &mut Bencher) {
    b.iter(|| {
        let value = value::OwnedValue::collect(1);

        black_box(value);
    })
}

#[bench]
fn collect_primitive_string(b: &mut Bencher) {
    b.iter(|| {
        let value = value::OwnedValue::collect("A string");

        black_box(value);
    })
}

#[bench]
fn collect_complex(b: &mut Bencher) {
    struct Map;

    impl value::Value for Map {
        fn stream(&self, stream: &mut value::Stream) -> value::Result {
            stream.map_begin(None)?;

            stream.map_key(1)?;

            stream.map_value_begin()?.map_begin(None)?;

            stream.map_key(2)?;

            stream.map_value(42)?;

            stream.map_end()?;

            stream.map_end()
        }
    }

    b.iter(|| {
        let value = value::OwnedValue::collect(Map);

        black_box(value);
    });
}