Crates.io | not-found-error |
lib.rs | not-found-error |
version | 0.2.3 |
source | src |
created_at | 2024-07-30 07:06:04.782818 |
updated_at | 2024-09-12 05:27:35.998283 |
description | Convert Option to Result using convenient functions |
homepage | https://github.com/DenisGorbachev/not-found-error |
repository | https://github.com/DenisGorbachev/not-found-error |
max_upload_size | |
id | 1319521 |
size | 35,417 |
// Convert Option<i32> to Result<i32, NotFoundError<i32>>
assert_eq!(Some(10).require(), Ok(10));
assert_eq!(None.require(), Err(NotFoundError::<i32>::new()));
This crate provides a generic NotFoundError<T>
type and associated
utilities for handling “not found” scenarios in a type-safe and ergonomic manner.
You can convert Option<T>
to Result<T, NotFoundError<T>
using require
function or Require
extension trait.
You can convert Option<T>
to Result<T, NotFoundError<AnotherType>
using not_found
function or OkOrNotFound
extension trait.
NotFoundError<T>
typeOption<T>
into Result<T, NotFoundError<T>>
Option<T>
into 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
Like the project? ⭐ Star this repo on GitHub!
Apache License 2.0 or MIT License at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.