macro_rules! zerror {
(($errno:expr) $source: expr => $($t: tt)*) => { ... };
(($errno:expr) $t: literal) => { ... };
(($errno:expr) $t: expr) => { ... };
(($errno:expr) $($t: tt)*) => { ... };
($source: expr => $($t: tt)*) => { ... };
($t: literal) => { ... };
($t: expr) => { ... };
($($t: tt)*) => { ... };
}