1 个不稳定版本

0.1.0 2020年5月12日

#2350 in Rust 模式

MIT 许可证

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 特质是试图统一表示成功或失败二分法的类型的行为,例如 ResultOption。这些类型实现了一个返回成功值的方法,如果失败则引发恐慌。这些行为通过 unwrap 函数统一。

此特质对 ResultOption 都实现了。它与标准库中的 Try 特质密切相关。

贡献

欢迎贡献和建议!如果您对功能、代码或其文档有任何评论,请随时打开一个问题,以便我们可以讨论。

shpatMIT 许可证 下分发。任何对代码库的贡献都假定同意此类许可证。

无运行时依赖