#[macro_export]
macro_rules! union {
($a:expr $(,)?) => {
$a
};
($a:expr, $b:expr $(,)?) => {
$crate::union($a, $b)
};
($a:expr, $b:expr, $c:expr $(,)?) => {
$crate::union3($a, $b, $c)
};
($a:expr, $b:expr, $c:expr, $d:expr $(,)?) => {
$crate::union($crate::union($a, $b), $crate::union($c, $d))
};
($a:expr, $b:expr, $c:expr, $d:expr, $e:expr $(,)?) => {
$crate::union($crate::union3($a, $b, $c), $crate::union($d, $e))
};
($a:expr, $b:expr, $c:expr, $d:expr, $e:expr, $f:expr $(,)?) => {
$crate::union($crate::union3($a, $b, $c), $crate::union3($d, $e, $f))
};
($a:expr, $b:expr, $c:expr, $d:expr, $e:expr, $f:expr, $($rest:expr),+ $(,)?) => {
$crate::union(
$crate::union!($a, $b, $c, $d, $e, $f),
$crate::union!($($rest),+),
)
};
}