• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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