macro_rules! access_and_or { (|| $tt:tt) => { ... }; (|| $right1:ident $right2:tt) => { ... }; (|| $right:tt && $($rest:tt)+) => { ... }; (|| $right:tt || $($rest:tt)+) => { ... }; (|| $right1:ident $right2:tt && $($rest:tt)+) => { ... }; (|| $right1:ident $right2:tt || $($rest:tt)+) => { ... }; (&& $tt:tt) => { ... }; (&& $right1:ident $right2:tt) => { ... }; (&& $right:tt && $($rest:tt)+) => { ... }; (&& $right:tt || $($rest:tt)+) => { ... }; (&& $right1:ident $right2:tt && $($rest:tt)+) => { ... }; (&& $right1:ident $right2:tt || $($rest:tt)+) => { ... }; }