macro_rules! constraints {
    () => { ... };
    ($key:tt == $value:expr $(,)*) => { ... };
    ($key:tt == $value:expr , $($r:tt)*) => { ... };
    ($key:tt != $value:expr $(,)*) => { ... };
    ($key:tt != $value:expr , $($r:tt)*) => { ... };
    ($key:tt < $value:expr $(,)*) => { ... };
    ($key:tt < $value:expr , $($r:tt)*) => { ... };
    ($key:tt > $value:expr $(,)*) => { ... };
    ($key:tt > $value:expr , $($r:tt)*) => { ... };
    ($key:tt $(,)*) => { ... };
    ($key:tt , $($r:tt)*) => { ... };
    ($t:expr $(,)*) => { ... };
    ($t:expr , $($r:tt)*) => { ... };
}