cbor_core/macros.rs
1/// Construct a CBOR array from a list of expressions.
2///
3/// Each element is converted into a [`Value`](crate::Value).
4///
5/// ```
6/// # use cbor_core::{array, Value};
7/// let v = array![1, "hello", true];
8/// assert!(v.data_type().is_array());
9/// ```
10#[macro_export]
11macro_rules! array {
12 () => {
13 $crate::Value::Array(::std::vec::Vec::new())
14 };
15 ($($x:expr),+ $(,)?) => {
16 $crate::Value::array([$($crate::Value::from($x)),+])
17 };
18}
19
20/// Construct a CBOR map from a list of `key => value` pairs.
21///
22/// Keys and values are converted into [`Value`](crate::Value).
23///
24/// ```
25/// # use cbor_core::{map, Value};
26/// let m = map! { "x" => 1, "y" => 2 };
27/// assert!(m.data_type().is_map());
28/// ```
29#[macro_export]
30macro_rules! map {
31 () => {
32 $crate::Value::Map(::std::collections::BTreeMap::new())
33 };
34 ($($k:expr => $v:expr),+ $(,)?) => {{
35 let mut map = ::std::collections::BTreeMap::new();
36 $(map.insert($crate::Value::from($k), $crate::Value::from($v));)+
37 $crate::Value::Map(map)
38 }};
39}