#枚举 #布尔 # derive #过程宏 #变体名

boolenum

为你的布尔枚举实现 Derive From<bool> 和 Into<bool>

1个不稳定发布

0.1.0 2020年6月19日

枚举中的变体名

Download history 1377/week @ 2024-03-14 1455/week @ 2024-03-21 1356/week @ 2024-03-28 1623/week @ 2024-04-04 1165/week @ 2024-04-11 1334/week @ 2024-04-18 1867/week @ 2024-04-25 2262/week @ 2024-05-02 1950/week @ 2024-05-09 1431/week @ 2024-05-16 1034/week @ 2024-05-23 1358/week @ 2024-05-30 2002/week @ 2024-06-06 1758/week @ 2024-06-13 2404/week @ 2024-06-20 2226/week @ 2024-06-27

每月下载量约8,703次
用于oq3_semantics

MIT/Apache许可证

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