1 个不稳定版本
0.1.0 | 2020年5月12日 |
---|
#2350 in Rust 模式
12KB
114 行
shpat
我在 Rust 编程中经常遇到的一些模式。我把它们放在一个单一包中,这样其他 Rustaceans 也可以享受它们。
该包有以下目标
- 尽可能轻量,无依赖,
- 将模式相互整合。
当前模式
apply
Rust 中的一些方法不获取所有权,只是获取对象的引用。在某些情况下这可能很好,但这不允许方法链式调用。Apply
特质允许为接受可变引用的方法恢复方法链式调用。
例如,可以轻松创建 HashMap
use std::collections::HashMap;
use shpat::prelude::*;
let map = HashMap::new()
.apply(|m| m.insert("manatee", 42))
.apply(|m| m.insert("horse", 101));
Apply
特质为每个 Sized
类型实现。它还提供了 apply_keep
,它返回内部方法返回的值和对象本身(当想要将值插入到哈希表中,但想要保留返回值时可能很有用),以及 apply_unwrap
,它将调用每个返回值上的 unwrap
。
Unwrappable
Unwrappable
特质是试图统一表示成功或失败二分法的类型的行为,例如 Result
和 Option
。这些类型实现了一个返回成功值的方法,如果失败则引发恐慌。这些行为通过 unwrap
函数统一。
此特质对 Result
和 Option
都实现了。它与标准库中的 Try
特质密切相关。
贡献
欢迎贡献和建议!如果您对功能、代码或其文档有任何评论,请随时打开一个问题,以便我们可以讨论。
shpat
在 MIT 许可证 下分发。任何对代码库的贡献都假定同意此类许可证。