#toggle #bool #false #true #enums #bivalent

condition

true 和 false 的常用同义词

1 个不稳定版本

0.1.0 2020年2月10日

#15 in #toggle

MIT 许可证

5KB
77

概述

提供了一种 trait,以便更容易地表达(和消费)功能、开关、复选框、设置、选项或其他所谓的 二元 对。

条件通常成对出现(例如,{Deny, Allow}{No, Yes} 等)

prelude 模块中提供了一个 derive 宏。如果不需要将宏放入作用域,只需使用 crate 即可。

自定义 Derive

目前自定义 derive 宏仅适用于具有两个字段的枚举。第一个字段将被视为 false 状态,第二个字段将被视为 true 状态。

路线图

目前计划

  • #[true]#[false] 属性以允许更改顺序,以及为 true 或 false 使用多个名称。
  • 为解析自动生成 FromStr

lib.rs:

此库提供 condition::Condition 一个 trait,以便更容易地表达(和消费)功能、开关、复选框、设置、选项或其他 二元 对。

注意:此 crate 最终将支持 no-std,但目前在此时不支持

条件通常成对出现。(例如,{Allow, Deny}{Yes, No}{With, Without}。此库默认提供几种类型。要导入它们,请使用 prelude 模块。如果您只想使用 trait,则只需导入它。

在任何可能接受布尔值的地方使用 impl Condition。然后,使用任何实现了此条件的类型。

在函数中,根据提供的条件分支

use condition::prelude::*;

#[derive(Condition)]
enum Answer {
  No,
  Yes
}

pub fn verbose(v: impl Condition) { assert!(v.is(false)); }

/* ... */

use Answer::No;
verbose(No);

依赖关系

~1.5MB
~35K SLoC