deep-flatten2

Crates.iodeep-flatten2
lib.rsdeep-flatten2
version0.1.0
created_at2024-12-30 00:48:47.214618+00
updated_at2024-12-30 00:48:47.214618+00
descriptionUseful utility for deep flattening nested Options and Result.
homepagehttps://github.com/doraemonkeys/deep-flatten2
repositoryhttps://github.com/doraemonkeys/deep-flatten2
max_upload_size
id1498688
size7,494
Ricky (doraemonkeys)

documentation

https://docs.rs/deep-flatten2

README

deep-flatten2

A Rust utility crate for deep flattening nested Option and Result types.

Installation

cargo add deep-flatten2

Example

use deep_flatten2::{OptionDeepFlatten, ResultDeepOk};

fn main() {
    let x: Result<Result<i32, &str>, &str> = Ok(Ok(1));
    let y: Result<Result<Result<i32, &str>, String>, bool> = Ok(Ok(Ok(1)));

    assert_eq!(x.deep_ok(), Some(1));
    assert_eq!(y.deep_ok(), Some(1));

    let x = Some(Some(Some(Some(Some(Some(Some(Some(Some(())))))))));
    let flattened = x.deep_flatten();

    assert_eq!(flattened, Some(()));
}
Commit count: 4

cargo fmt