1 个不稳定版本
0.1.0 | 2023 年 9 月 30 日 |
---|
#12 在 #maybe
5KB
eitherable
信息
该软件包扩展了 bool
,以简单的方式从 either
软件包创建 Either
类型。
这是一个简单的便利特性和方法,也是我了解 crates.io 和 cargo 的工作方式的一种方式。
为什么这个不在 either
软件包中?
either
软件包强调,Either
的两边,即 Left
和 Right
,没有真实性或虚假性的元素。然而,这里的特质立即将 Left
分配为真实值。因此,这并不完全适合 either
软件包。
我选择将 Left
作为真实值的原因很简单:它保留了与 if
语句相同的顺序。以下两个语句是等效的。
let fst_example = if my_cond { Either::Left(left) } else { Either::Right(right) };
let snd_example = my_cond.either(left, right);
如果您认为 Right
应该是真实值,您可以使用 .flip()
。
用法
依赖项
将库作为依赖项添加到您的项目,通过将以下内容
eitherable = "0.1.0"
插入到您的 Cargo.toml 文件的 [dependencies]
部分。
示例
use eitherable::*;
let x = true;
assert_eq!(x.either(1, "right"), Either::Left(1));
let x = false;
assert_eq!(x.either(1, "right"), Either::Right("right"));
let x = true;
assert_eq!(x.either_else(|| 1,|| "right"), Either::Left(1));
let x = false;
assert_eq!(x.either_else(|| 1,|| "right"), Either::Right("right"));
依赖项
~46KB