1 个不稳定版本
0.1.0 | 2020年2月10日 |
---|
#15 in #toggle
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