#future #mapping #async #executor #block #u32 #ideomatic

future-result

将Result映射到Result的Future的惯用方式

2个不稳定版本

0.1.0 2020年8月8日
0.0.0 2020年8月8日

#1769 in 异步

MIT/Apache

7KB

future-result

一个Rust crate,提供将Result映射到FutureResult的惯用方式。

示例用法

use future_result::FutureResult;

async fn add_1(x: u32) -> u32 {
    x + 1
}

fn main() {
    let fut = async {
        let ok: Result<u32, ()> = Ok(41);
        let ok = ok.then_map(add_1).await;

        assert_eq!(Ok(42), ok);

        // ...

        let err: Result<(), u32> = Err(9);
        let err = err.then_map_err(add_1).await;

        assert_eq!(Err(10), err);
    };

    futures::executor::block_on(fut);
}

lib.rs:

Result映射到FutureResult的惯用方式。

示例用法

use future_result::FutureResult;

async fn add_1(x: u32) -> u32 {
    x + 1
}

fn main() {
    let fut = async {
        let ok: Result<u32, ()> = Ok(41);
        let ok = ok.then_map(add_1).await;

        assert_eq!(Ok(42), ok);

        // ...

        let err: Result<(), u32> = Err(9);
        let err = err.then_map_err(add_1).await;

        assert_eq!(Err(10), err);
    };

    futures::executor::block_on(fut);
}

依赖关系

~300–760KB
~18K SLoC