9 个版本
0.2.1 | 2024 年 8 月 5 日 |
---|---|
0.2.0 | 2024 年 8 月 1 日 |
0.1.6 | 2024 年 7 月 31 日 |
#365 in Rust 模式
762 每月下载量
17KB
181 行
将 Option 转换为 Result
概述
// 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.0 或 MIT License 由您自行选择。
除非您明确表示,否则您按照 Apache-2.0 许可证定义的,有意提交以包含在本软件包中的任何贡献,将按上述方式双授权,没有任何额外条款或条件。