macro_rules! poly {
({ $($traits:tt)+ }, $v:ident, $alloc:ident) => { ... };
($trait:path, $v:ident, $alloc:ident) => { ... };
({ $($traits:tt)+ }, $poly:ident) => { ... };
($trait:path, $poly:ident) => { ... };
([$($x:expr),* $(,)?], $alloc:ident) => { ... };
}