1个不稳定发布
0.1.0 | 2020年6月19日 |
---|
枚举中的变体名
每月下载量约8,703次
用于oq3_semantics
8KB
包括注释的代码行数:71行
boolenum
BoolEnum
是一个 derive 宏,用于创建具有更少模板的易于操作的布尔枚举。
use boolenum::BoolEnum;
// Variant names can be Yes and No (in any order) ...
#[derive(BoolEnum)]
enum UseColors {
No,
Yes,
}
// or True and False
#[derive(BoolEnum)]
enum ShowExpired {
True,
False,
}
fn print_things(use_colors: UseColors, show_expired: ShowExpired) {
if use_colors.into() { // Into<bool>
// ...
}
}
fn main() {
print_things(UseColors::Yes, ShowExpired::False)
}
布尔枚举对于区分函数的布尔参数很有用,因此您可以像这样编写代码:encode
(...,而不是 encode
(...)。
与 structopt 一起使用,可以安全地处理命令行标志
use boolenum::BoolEnum;
use structopt::StructOpt;
#[derive(BoolEnum)]
enum Verbose { No, Yes }
#[derive(BoolEnum)]
enum Colors { No, Yes }
#[derive(StructOpt)]
struct Opt {
#[structopt(short, long, parse(from_flag))]
verbose: Verbose, // works because Verbose implements From<bool>
#[structopt(short, long, parse(from_flag))]
colors: Colors,
}
fn main() {
let opt = Opt::from_args();
do_thing(opt.verbose, opt.colors);
}
fn do_thing(verbose: Verbose, colors: Colors) {
if verbose.into() { }
if colors.into() { }
}
枚举中的变体名称的顺序不重要。
许可证:MIT 或 Apache-2.0
依赖项
~1.5MB
估计的额外代码行数:36K