#result #tool #options

not-found-error

使用方便的函数将 Option 转换为 Result

9 个版本

0.2.1 2024 年 8 月 5 日
0.2.0 2024 年 8 月 1 日
0.1.6 2024 年 7 月 31 日

#365 in Rust 模式

Download history 708/week @ 2024-07-30 54/week @ 2024-08-06

762 每月下载量

Apache-2.0 OR MIT

17KB
181

将 Option 转换为 Result

Build Documentation

概述

// Convert Option<i32> to Result<i32, NotFoundError<i32>>

assert_eq!(Some(10).require(), Ok(10));

assert_eq!(None.require(), Err(NotFoundError::<i32>::new()));

此软件包提供了一种通用的 NotFoundError<T> 类型和相关实用工具,以类型安全和易用方式处理“找不到”场景。

您可以使用 require 函数或 Require 扩展特质将 Option<T> 转换为 Result<T, NotFoundError<T>

您可以使用 not_found 函数或 OkOrNotFound 扩展特质将 Option<T> 转换为 Result<T, NotFoundError<AnotherType>

功能

  • 泛型 NotFoundError<T> 类型
  • 转换函数和特质将 Option<T> 转换为 Result<T, NotFoundError<T>>
  • 转换函数和特质将 Option<T> 转换为 Result<T, NotFoundError<AnotherType>

示例

use not_found_error::{NotFoundError, Require, locate, require};

// Using the `require` function
let item = require([1, 2, 3].into_iter().next());
assert_eq!(item, Ok(1));

// Using the `require` function
let item = require([].into_iter().next());
assert_eq!(item, Err(NotFoundError::<i32>::new()));

// Using the `require` extension method
let item = [1, 2, 3].into_iter().next().require();
assert_eq!(item, Ok(1));

// Using the `require` extension method
let item = [].into_iter().next().require();
assert_eq!(item, Err(NotFoundError::<i32>::new()));

// Try to find a number greater than 10 (which doesn't exist in our list)
let numbers = &[1, 2, 3];
let result = locate(numbers, |&&n| n == 0);
assert_eq!(result, Err(NotFoundError::new()));

安装

cargo add not-found-error

感谢

喜欢这个项目? ⭐ 在 GitHub 上 star 这个仓库

许可证

Apache License 2.0MIT License 由您自行选择。

除非您明确表示,否则您按照 Apache-2.0 许可证定义的,有意提交以包含在本软件包中的任何贡献,将按上述方式双授权,没有任何额外条款或条件。

无运行时依赖