1 #![allow(unused_macro_rules)] 2 3 use serde_test::Token; 4 use std::iter; 5 6 macro_rules! btreeset { 7 () => { 8 BTreeSet::new() 9 }; 10 ($($value:expr),+) => {{ 11 let mut set = BTreeSet::new(); 12 $(set.insert($value);)+ 13 set 14 }}; 15 } 16 17 macro_rules! btreemap { 18 () => { 19 BTreeMap::new() 20 }; 21 ($($key:expr => $value:expr),+) => {{ 22 let mut map = BTreeMap::new(); 23 $(map.insert($key, $value);)+ 24 map 25 }}; 26 } 27 28 macro_rules! hashset { 29 () => { 30 HashSet::new() 31 }; 32 ($($value:expr),+) => {{ 33 let mut set = HashSet::new(); 34 $(set.insert($value);)+ 35 set 36 }}; 37 ($hasher:ident @ $($value:expr),+) => {{ 38 use std::hash::BuildHasherDefault; 39 let mut set = HashSet::with_hasher(BuildHasherDefault::<$hasher>::default()); 40 $(set.insert($value);)+ 41 set 42 }}; 43 } 44 45 macro_rules! hashmap { 46 () => { 47 HashMap::new() 48 }; 49 ($($key:expr => $value:expr),+) => {{ 50 let mut map = HashMap::new(); 51 $(map.insert($key, $value);)+ 52 map 53 }}; 54 ($hasher:ident @ $($key:expr => $value:expr),+) => {{ 55 use std::hash::BuildHasherDefault; 56 let mut map = HashMap::with_hasher(BuildHasherDefault::<$hasher>::default()); 57 $(map.insert($key, $value);)+ 58 map 59 }}; 60 } 61 62 pub trait SingleTokenIntoIterator { into_iter(self) -> iter::Once<Token>63 fn into_iter(self) -> iter::Once<Token>; 64 } 65 66 impl SingleTokenIntoIterator for Token { into_iter(self) -> iter::Once<Token>67 fn into_iter(self) -> iter::Once<Token> { 68 iter::once(self) 69 } 70 } 71 72 macro_rules! seq { 73 ($($elem:expr),* $(,)?) => {{ 74 use crate::macros::SingleTokenIntoIterator; 75 let mut vec = Vec::new(); 76 $(<Vec<Token> as Extend<Token>>::extend(&mut vec, $elem.into_iter());)* 77 vec 78 }}; 79 } 80