Function cov::deserializer::with_interner
[−]
[src]
pub fn with_interner<'de, D: Deserializer<'de>>(
deserializer: D,
interner: &RefCell<Interner>
) -> WithInterner<D>
Adorns a deserializer with a string interner.
The resulting deserializer will parse a string whenever a Symbol
is expected.
Examples
extern crate cov; extern crate serde; extern crate serde_json; use cov::{Interner, Symbol, deserializer_with_interner}; use serde::Deserialize; use std::cell::RefCell; // Prepare the JSON input. let input = r#"["hello", "world", "hello", "everyone"]"#; let mut json_de = serde_json::de::Deserializer::from_str(input); // Include a string interner. let interner = RefCell::new(Interner::new()); let de = deserializer_with_interner(&mut json_de, &interner); // Deserialize the JSON into a vector of Symbols let result = Vec::<Symbol>::deserialize(de)?; // Compare with expected output. let mut interner = interner.borrow_mut(); let hello = interner.intern("hello"); let world = interner.intern("world"); let everyone = interner.intern("everyone"); assert_eq!(result, vec![hello, world, hello, everyone]);