invert_map (for placeholder en/decode conversion)

This commit is contained in:
Tony Garnock-Jones 2019-09-17 09:57:44 +01:00
parent 6775868272
commit 199ce1fdba
2 changed files with 14 additions and 9 deletions

View File

@ -212,6 +212,7 @@ mod samples_tests {
use crate::value::DecodePlaceholderMap;
use crate::value::to_value;
use crate::value::from_value;
use crate::value::invert_map;
use std::collections::BTreeMap;
#[derive(Debug, serde::Serialize, serde::Deserialize)]
@ -236,16 +237,13 @@ mod samples_tests {
#[test] fn run() {
let mut d = Decoder::new(std::fs::File::open("../../tests/samples.bin").unwrap(), None);
let v = d.next().unwrap();
// println!("{:#?}", v);
let tests: TestCases = from_value(&d.next().unwrap()).unwrap();
let decode_placeholders = tests.decode_placeholders.0;
let encode_placeholders = invert_map(&decode_placeholders);
let tests: TestCases = from_value(&v).unwrap();
println!("{:#?}", tests);
// let mut buf = Vec::new();
// let mut e = Encoder::new(&mut buf, None);
// e.write(&v).unwrap();
// println!("{:?}", Value::from(buf))
// println!("{:#?}", tests);
println!("{:#?}", decode_placeholders);
println!("{:#?}", encode_placeholders);
}
#[test] fn simple_to_value() {

View File

@ -18,3 +18,10 @@ pub use value::AValue;
pub use value::Dictionary;
pub use value::Set;
pub use value::Value;
pub fn invert_map<A, B>(m: &std::collections::BTreeMap<A, B>) -> std::collections::BTreeMap<B, A>
where A: Clone, B: Clone + Ord
{
use std::iter::FromIterator;
std::collections::BTreeMap::from_iter(m.iter().map(|(a, b)| (b.clone(), a.clone())))
}