#traits #create #boolean #left #right #maybe #extension

eitherable

扩展特质,用于从布尔值创建 either 类型。(以及可能的其他类型)

1 个不稳定版本

0.1.0 2023 年 9 月 30 日

#12#maybe

MIT/Apache

5KB

eitherable

信息

该软件包扩展了 bool,以简单的方式从 either 软件包创建 Either 类型。

这是一个简单的便利特性和方法,也是我了解 crates.io 和 cargo 的工作方式的一种方式。

为什么这个不在 either 软件包中?

either 软件包强调,Either 的两边,即 LeftRight,没有真实性或虚假性的元素。然而,这里的特质立即将 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