Rustでfutures 0.3をfuture 0.1に変換してand_thenを動かす

当初future 0.1でand_thenをうまく動かせないと言われたので、動かせるコードを書いた。ほらちゃんと動くやんかああ。

#![allow(stable_features)]
#![feature(async_await, async_closure)]

use futures::prelude::*;
use futures::compat::*;
use futures01::Future as Future01;
use std::result::Result;

#[runtime::main]
async fn main() -> Result<(), ()> {

    let hoge = (async || -> Result<u32, ()> {
        Ok(1)
    })().boxed().compat().and_then(|r| {
        Ok(r + 1)
    });

    dbg!(hoge.compat().await.unwrap());

    Ok(())
}

前者の boxed().compat() でfuture01に変換され、後者の compat() でfuture03に再変換されているという流れ。そろそろnightly手に馴染んできた。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA