An object-safe equivalent of Serde's Serialize
trait.
Any implementation of Serde's Serialize
converts seamlessly to an
&erased_serde::Serialize
or Box<erased_serde::Serialize>
trait object.
extern crate erased_serde;
extern crate serde_json;
extern crate serde_cbor;
use std::collections::BTreeMap as Map;
use std::io;
use erased_serde::{Serialize, Serializer};
fn main() {
let json = &mut serde_json::ser::Serializer::new(io::stdout());
let cbor = &mut serde_cbor::ser::Serializer::new(io::stdout());
let mut formats: Map<&str, Box<Serializer>> = Map::new();
formats.insert("json", Box::new(Serializer::erase(json)));
formats.insert("cbor", Box::new(Serializer::erase(cbor)));
let mut values: Map<&str, Box<Serialize>> = Map::new();
values.insert("vec", Box::new(vec!["a", "b"]));
values.insert("int", Box::new(65536));
let format = formats.get_mut("json").unwrap();
let value = values.get("vec").unwrap();
value.erased_serialize(format).unwrap();
}
Loading content...Serialize this value into the given Serde serializer. Read more
Serialize this value into the given Serde serializer. Read more
Serialize this value into the given Serde serializer. Read more
Serialize this value into the given Serde serializer. Read more
Loading content...