1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#[macro_export]
macro_rules! collection {
($($k:expr => $v:expr),* $(,)?) => {{
std::collections::HashMap::from([$(($k.into(), $v.into()),)*])
}};
($($v:expr),* $(,)?) => {{
core::convert::From::from([$($v,)*])
}};
}
#[macro_export]
macro_rules! record {
("id" => $id:expr) => {{
$crate::record::Record {
id: $id.into(),
fields: std::collections::HashMap::with_capacity(0)
}
}};
("id" => $id:expr, $($k:expr => $v:expr),* $(,)?) => {{
$crate::record::Record {
id: $id.into(),
fields: std::collections::HashMap::from([$(($k.into(), $v.into()),)*])
}
}};
}
pub use collection;
pub use record;
#[cfg(test)]
macro_rules! cbor_buffer {
($($tokens:tt)*) => {{
use ciborium::{ cbor, ser::into_writer };
let mut output: Vec<u8> = vec![];
let value = cbor!($($tokens)*).expect("Failed to create cbor");
into_writer(&value, &mut output).expect("Failed to serialize cbor");
output
}};
}
#[cfg(test)]
pub(crate) use cbor_buffer;
pub type StdError = Box<dyn std::error::Error>;