macro_rules! len {
() => { 0 };
($($i:tt $j:tt)*) => { len!($($i)*) * 2 };
($j:tt $($i:tt)*) => { len!($($i)*) + 1 };
}
fn main() {
assert_eq!(5, len!(0 0 0 0 0));
assert_eq!(3, len!(0 0 0));
assert_eq!(10, len!(0 0 0 0 0 0 0 0 0 0));
assert_eq!(0, len!());
assert_eq!(11, len!(0 0 0 0 0 0 0 0 0 0 0));
}
If you want to count a comma separated list
macro_rules! len {
() => { 0 };
($($i:expr, $j:expr),* $(,)?) => { len!($($i),*) * 2 };
($j:expr $(,$i:expr)* $(,)?) => { len!($($i),*) + 1 };
}
This post you linked is old and out dated.