6个版本
新增 0.2.3 | 2024年8月22日 |
---|---|
0.2.2 | 2022年5月21日 |
0.2.1 | 2022年2月22日 |
0.1.1 | 2022年1月9日 |
72 在 #count 中
每月115次下载
在 2 个crate中使用(通过 bool_vec)
10KB
107 行
计数宏
一个允许编译时计数的宏
如何使用
_int_
的每个实例都将被替换为一个字面量或一个标识符。
在调试模式下,如果计数器超过 usize,count_macro::count
将会panic。
如果您希望回绕到0,请使用 count_macro::wrapping_count
。
示例
标识符到字面量
use count_macro::count;
let a = count!(vec![_int_, _int_, _int_]);
assert_eq!(a, vec![0, 1, 2]);
标识符到标识符
use count_macro::count;
count! {
let a_int_ = "Hello";
let a_int_ = "World";
}
assert_eq!(a0, "Hello");
assert_eq!(a1, "World");
在宏中
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
多个计数器
使用 _int_countername_
,您将能够创建一个名为 "countername" 的新计数器。
这不会通过 _int_
或任何其他计数器(如 _int_0_ 或
_int_x_
)增加。
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);
依赖项
~2.2–3MB
~54K SLoC