`| _ |和有什么不一样?异步移动{}`和`异步移动| _ | {}`

dronte7

让我们考虑以下示例:

use futures::executor::block_on;
use futures::future::{FutureExt, TryFutureExt};


async fn fut1() -> Result<String, u32> {
  Ok("ok".to_string())
}

fn main() {
    println!("Hello, world!");
    match block_on(fut1().and_then(|x| async move { Ok(format!("{} is \"ok\"", x)) })) {
      Ok(s) => println!("{}", s),
      Err(u) => println!("{}", u)
    };
}

货代

[dependencies]
futures = "^0.3"

我要问的是表达式|x| async move {}而不是async move |x| {}后者更为明显,但是会遇到编译错误:

error[E0658]: async closures are unstable

然后我想知道async move || {}之间有什么区别|| async move {}它们似乎都是使用move关键字的闭包

$ rustc --version
rustc 1.39.0 (4560ea788 2019-11-04)
爱德华

一个是异步块(确切地说是一个以异步块为主体的闭包),而另一个是异步闭包。每次异步/等待RFC

async || 关闭

除了功能之外,异步还可以应用于闭包。与异步函数类似,异步闭包的返回类型为impl Future<Output = T>,而不是T

另一方面:

async

您可以使用async直接将Future创建为表达式这种形式几乎等同于立即调用的async闭包:

 async { /* body */ }

 // is equivalent to

 (async || { /* body */ })()

除了像这样的控制流构造returnbreak并且continue在体内不允许使用。

move此处关键字表示异步闭包和块将捕获其关闭的变量的所有权。

显然,异步关闭仍然被认为是不稳定的。它具有此跟踪问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

with和env和有什么不一样

来自分类Dev

“ |”和有什么不一样 和“或”?

来自分类Dev

:和true和有什么不一样?

来自分类Dev

"this" 和 "::" 和有什么不一样?

来自分类Dev

线程和有什么不一样

来自分类Dev

未来和异步行为是不一样的,我不明白

来自分类Dev

ls和有什么不一样?grep * e *和ls | grep e

来自分类Dev

“ ||”和有什么不一样 和“或”在PHP中?

来自分类Dev

javascript Promise和q promise和有什么不一样

来自分类Dev

phpinfo()和有什么不一样?和PHP -i?

来自分类Dev

&!和有什么不一样?和&| 在zsh中?

来自分类Dev

warden.authenticate和有什么不一样?和user.valid_password?

来自分类Dev

红宝石-uniq和有什么不一样!和uniq

来自分类Dev

.nil和有什么不一样?和== nil

来自分类Dev

ubuntu 13.10 amd 12.04 LTS和有什么不一样???和

来自分类Dev

char array [100]和有什么不一样?和char array [100] =“”;?

来自分类Dev

ubuntu 13.10 amd 12.04 LTS和有什么不一样???和

来自分类Dev

'$和有什么不一样?foo”和“ $ ./foo”?

来自分类Dev

char name [11]和有什么不一样?和char * name;

来自分类Dev

$ man和mac上的man和有什么不一样

来自分类Dev

self.save和有什么不一样!和self.update_attributes

来自分类Dev

.enabled和set enabled和有什么不一样

来自分类Dev

RECEIVE_MMS 和 RECEIVE_WAP_PUSH 和有什么不一样?

来自分类Dev

unbound 和 unwind 和有什么不一样?

来自分类Dev

dash 和 Dock 和有什么不一样?

来自分类Dev

ssh proxycommand -W,nc,exec nc和有什么不一样

来自分类Dev

plpython,plpythonu,plpython2u和有什么不一样

来自分类Dev

c中&a,&a [0],a和有什么不一样

来自分类Dev

qpid-proton-c vs qpid-cpp和有什么不一样

Related 相关文章

  1. 1

    with和env和有什么不一样

  2. 2

    “ |”和有什么不一样 和“或”?

  3. 3

    :和true和有什么不一样?

  4. 4

    "this" 和 "::" 和有什么不一样?

  5. 5

    线程和有什么不一样

  6. 6

    未来和异步行为是不一样的,我不明白

  7. 7

    ls和有什么不一样?grep * e *和ls | grep e

  8. 8

    “ ||”和有什么不一样 和“或”在PHP中?

  9. 9

    javascript Promise和q promise和有什么不一样

  10. 10

    phpinfo()和有什么不一样?和PHP -i?

  11. 11

    &!和有什么不一样?和&| 在zsh中?

  12. 12

    warden.authenticate和有什么不一样?和user.valid_password?

  13. 13

    红宝石-uniq和有什么不一样!和uniq

  14. 14

    .nil和有什么不一样?和== nil

  15. 15

    ubuntu 13.10 amd 12.04 LTS和有什么不一样???和

  16. 16

    char array [100]和有什么不一样?和char array [100] =“”;?

  17. 17

    ubuntu 13.10 amd 12.04 LTS和有什么不一样???和

  18. 18

    '$和有什么不一样?foo”和“ $ ./foo”?

  19. 19

    char name [11]和有什么不一样?和char * name;

  20. 20

    $ man和mac上的man和有什么不一样

  21. 21

    self.save和有什么不一样!和self.update_attributes

  22. 22

    .enabled和set enabled和有什么不一样

  23. 23

    RECEIVE_MMS 和 RECEIVE_WAP_PUSH 和有什么不一样?

  24. 24

    unbound 和 unwind 和有什么不一样?

  25. 25

    dash 和 Dock 和有什么不一样?

  26. 26

    ssh proxycommand -W,nc,exec nc和有什么不一样

  27. 27

    plpython,plpythonu,plpython2u和有什么不一样

  28. 28

    c中&a,&a [0],a和有什么不一样

  29. 29

    qpid-proton-c vs qpid-cpp和有什么不一样

热门标签

归档