Returns the count of comma-delimited [:ty
]s (types) in the given [TokenStream
]
as a constant expression of type [usize
]
input
- A [TokenStream
] in which comma-delimited [:ty
]s (types) must be countedrust
// count_tys!($($ty:ty),*)
```rust extern crate procmacrohack; use procmacrohack::procmacrohack;
use counttts::counttys;
// It not necessarily must be a struct, it could be a generic // Read more about macrorules! here: // https://doc.rust-lang.org/rust-by-example/macros.html macrorules! declarevariadicstruct { ($structname:ident, <$($ty:ty),*>) => { struct $structname { // fields }
impl $struct_name {
pub const fn count() -> usize {
// count_tys!() can be used in an expression and even
// const expression context
// unlike macros without proc_macro_hack
// note: see issue #54727
// <https://github.com/rust-lang/rust/issues/54727>
// for more information.
count_tys!($($ty:ty),*)
}
}
};
}
// declarevariadicstruct!(VariadicStruct,