#方便 #结果 #几乎不会失败

this-is-fine

pub type Fine<T, E> = (T, Result<(), E>); ☕🐕

1 个不稳定版本

0.0.1 2021年9月30日

#47#方便

每月 30 次下载
pinus 中使用

MIT/Apache

14KB
165

this-is-fine

Lib.rs Crates.io Docs.rs

Rust 1.51 CI Crates.io - License

GitHub open issues open pull requests good first issues

crev reviews

☕🐕

用于处理 type Fine<T, E> = (T, Result<(), E>) 的实用工具。

它是 map 和 set 插入的有用返回类型。

API 主要是对 Result<T, E> 的移植。

安装

请使用 cargo-edit 以始终添加此库的最新版本

cargo add this-is-fine

示例

这是一个稍不完整的 API 预览。

use this_is_fine::{Fine, prelude::*};

let fine: Fine<_, ()> = ((), Ok(()));

fine.fine(); // Discard any error.
fine.not_fine(); // Convert to `Result`.
fine.ok(); // `.not_fine().ok()`
fine.err(); // `.1.err()`
fine.is_ok(); // `.1.is_ok()`
fine.is_err(); // `.1.is_err()`
fine.as_ref(); // Like `Result::as_ref`.
fine.map(|t| t); // Like `Result::map`.
fine.map_err(|e| e); // Like `Result::map_err`.
fine.expect("message"); // Like `.fine`, but can panic.
fine.unwrap(); // "

let mut fine = fine;
fine.as_mut(); // Like `Result::as_mut`.

// `Some` error is still fine.
let fine = this_is_fine::from_inverse(((), Some(())));
fine.expect_err("message");
fine.unwrap_err();
fine.fine();

// Twice as fine.
let fine_fine: Fine<Fine<_, ()>, ()> = (((), Ok(())), Ok(()));
fine_fine.transpose(); // Exchange `Result`s.

许可协议

在您选择的情况下,受以下任一协议的许可:

贡献

除非您明确声明,否则您提交的任何旨在包含在本作品中的贡献,根据 Apache-2.0 许可协议定义,应按上述方式双重许可,而无需任何额外的条款或条件。

有关更多信息,请参阅 CONTRIBUTING

行为准则

变更日志

版本控制

this-is-fine 严格遵循 语义版本控制 2.0.0,但有以下例外:

  • 在主要版本变更时,次要版本不会重置为 0(除了 v1)。
    将其视为全局功能级别。
  • 在主要版本或次要版本变更时,补丁版本不会重置为 0(除了 v0.1 和 v1)。
    将其视为全局补丁级别。

这包括上述指定的 Rust 版本要求。
早期 Rust 版本可能兼容,但可能随着次要版本或补丁版本的发布而改变。

受功能和补丁影响的版本可以通过CHANGELOG.md中的相应标题确定。

无运行时依赖