Macro count_macro::count
source · [−]count!() { /* proc-macro */ }Expand description
Count without wrapping (panic if counter exceeds usize).
Every instance of _int_ and _int_countername_ will be replaced with the counter value and then the counter will be increased.
Examples
Ident to literal
use count_macro::count;
let a = count!(vec![_int_, _int_, _int_]);
assert_eq!(a, vec![0, 1, 2]);
Ident to ident
use count_macro::count;
count! {
let a_int_ = "Hello";
let a_int_ = "World";
}
assert_eq!(a0, "Hello");
assert_eq!(a1, "World");
In macro
use count_macro::count;
macro_rules! my_macro {
($($v:expr),*) => {
count!{
$(
let _ = $v; // Ignoring $v
println!("{}", _int_);
)*
}
};
}
my_macro!('@', '@', '@', '@'); // Will print from 0 to 3
Multiple counters
use count_macro::count;
// With two different counters
// _int_ does not increment _int_name_
count! {
let a_int_ = _int_name_;
let a_int_ = _int_name_;
let a_int_ = _int_name_;
}
assert_eq!(a0, 0);
assert_eq!(a1, 1);
assert_eq!(a2, 2);