arr_rs/macros/
single.rs

1/// Create a single array
2///
3/// # Examples
4///
5/// ```
6/// use arr_rs::prelude::*;
7///
8/// let arr = array_single!(i32, 8);
9/// assert_eq!(vec![1], arr.get_shape().unwrap());
10/// let arr = array_single!(f64, 8.);
11/// assert_eq!(vec![1], arr.get_shape().unwrap());
12/// ```
13#[macro_export]
14macro_rules! array_single {
15    (Tuple2<$t1:ty, $t2:ty>, ($val1:expr, $val2:expr)) => {{
16        let val1 = $val1.to_string().parse().unwrap();
17        let val2 = $val2.to_string().parse().unwrap();
18        Array::<Tuple2<$t1, $t2>>::single(Tuple2(val1, val2))
19    }};
20    (Tuple3<$t1:ty, $t2:ty, $t3:ty>, ($val1:expr, $val2:expr, $val3:expr)) => {{
21        let val1 = $val1.to_string().parse().unwrap();
22        let val2 = $val2.to_string().parse().unwrap();
23        let val3 = $val3.to_string().parse().unwrap();
24        Array::<Tuple3<$t1, $t2, $t3>>::single(Tuple3(val1, val2, val3))
25    }};
26    (List<$tt:ty>, vec![$($x:expr),*]) => {{
27        let values = vec![$($x),*]
28            .into_iter()
29            .map(|i| i.to_string().parse().unwrap())
30            .collect::<Vec<_>>();
31        Array::<List<$tt>>::single(List(values))
32    }};
33    ($tt:ty, $x:expr) => {{
34        let value = $x.to_string().parse().unwrap();
35        Array::<$tt>::single(value)
36    }};
37}