相关疑难解决方法(0)

我如何有条件地退回不同类型的期货?

我有一个方法,根据谓词,将返回一个未来或另一个.换句话说,返回未来的if-else表达式:

extern crate futures; // 0.1.23

use futures::{future, Future};

fn f() -> impl Future<Item = usize, Error = ()> {
    if 1 > 0 {
        future::ok(2).map(|x| x)
    } else {
        future::ok(10).and_then(|x| future::ok(x + 2))
    }
}
Run Code Online (Sandbox Code Playgroud)

这不编译:

error[E0308]: if and else have incompatible types
  --> src/lib.rs:6:5
   |
6  | /     if 1 > 0 {
7  | |         future::ok(2).map(|x| x)
8  | |     } else {
9  | |         future::ok(10).and_then(|x| future::ok(x + 2))
10 | |     }
   | |_____^ expected …
Run Code Online (Sandbox Code Playgroud)

asynchronous future control-flow rust

13
推荐指数
1
解决办法
1463
查看次数

标签 统计

asynchronous ×1

control-flow ×1

future ×1

rust ×1