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
/*
[dependencies]
proc-macro-hack = "0.5"
count-tys = "0.1"
*/
```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,