1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#[macro_export]
macro_rules! Require {
[ $lt_p: lifetime, $lt_d: lifetime ] => { $crate::requirements::RequireNil, };
[ $lt_p: lifetime, $lt_d: lifetime, $head: ty ] => { $crate::requirements::RequireOne<$lt_p, $lt_d, $head> };
[ $lt_p: lifetime, $lt_d: lifetime, $head: ty, $($tail: ty), * ] => {
$crate::requirements::RequirePair<
$crate::requirements::RequireOne<$lt_p, $lt_d, $head>,
$crate::Require![ $lt_p, $lt_d, $($tail), *]
> };
[ $lt_p: lifetime, $lt_d: lifetime, $head: ty, $($tail: ty), *, ] => {
$crate::requirements::RequirePair<
$crate::requirements::RequireOne<$lt_p, $lt_d, $head>,
$crate::Require![ $lt_p, $lt_d, $($tail), *]
> };
}