首页 > 编程语言 >012 Rust 异步编程,在 async 块中使用?

012 Rust 异步编程,在 async 块中使用?

时间:2022-11-07 11:40:53浏览次数:43  
标签:编程 Ok futures 012 Rust async foo fn


在Rust异步编程中能否像在同步编程中一样使用问号呢?我们来试试。

示例

  • 源码
[dependencies]
futures = "0.3"
  • 配置文件
use futures;

async fn foo() -> Result<(), String>{
"foo";
Ok(())
}

async fn func() -> Result<(), String>{

let fut = async {
foo().await?;
Ok::<(), String>(()) // <- note the explicit type annotation here
//Ok(()) // <- note the explicit type annotation here
};

fut.await
}

fn main() {
let _ = futures::executor::block_on(func());
println!("Hello, world!");

}


标签:编程,Ok,futures,012,Rust,async,foo,fn
From: https://blog.51cto.com/u_15862521/5828334

相关文章

  • 013 Rust 异步编程,Send trait 相关
    asyncfnFuture是否为Send的取决于是否在.await点上保留非Send类型。编译器尽其所能地估计值在.await点上的保存时间。示例源码usestd::rc::Rc;#[derive(Default)]struct......
  • 011 Rust 异步编程,返回错误
    在Rust异步块中,当发生返回错误的时,会是怎么样的呢?本节就这个知识点进行讲解。示例源码usefutures;asyncfnfoo(){"foo"}fnmain(){futures::executor::block_on......
  • 010 Rust 异步编程,使用 select 宏的条件
    使用select宏select中使用的Future必须实现Unpintrait和FusedFuturetrait。必须实现unpin的原因是,select中使用的future不是按值获取的,而是按照可变引用获取的,通过不获取f......
  • rustyline 介绍
    最近在写区块链的教学demo的时候,需要编写一个cli客户端和用户进行交互,最终找到了rustyline,按照官方的例子敲了一遍,觉得使用起来非常的舒适,因此推荐给大家。示例配置文件修改......
  • 009 Rust 异步编程,select 宏中的使用 default 和 complete
    说明在前一节,我们简单介绍了select宏。其实在select宏中,还可使用default和complete,前者表示没有分支完成,而后者则表示所有的分支都已经完成并且不会再取得进展的情况。示例......
  • 008 Rust 异步编程,select 宏介绍
    select宏select宏也允许并发的执行Future,但是和join、try_join不同的是,select宏只要有一个Future返回,就会返回。示例源码usefutures::{select,future::FutureExt,pin_mut......
  • 007 Rust 异步编程,通过 join 执行 Future
    前言在之前我们主要介绍了通过await和block_on执行Future,但是这两种方式实际上都是顺序执行的方式。.await是在代码块中按顺序执行,会阻塞后面的代码,但是此时会让出线程;block......
  • 006 Rust 异步编程,Stream 介绍
    Stream介绍​​Stream​​​和​​Future​​​类似,但是​​Future​​​对应的是一个​​item​​​的状态的变化,而​​Stream​​​则是类似于​​iterator​​​,在结束......
  • 005 Rust异步编程,Pin介绍
    为了对Future调用poll,需要使用到Pin的特殊类型。本节就介绍一下Pin类型。异步背后的一些原理例子1源码//文件src/main.rsusefutures::executor;asyncfnasync_function1()......
  • Rust 编程中使用 leveldb 的简单例子
    前言最近准备用Rust写一个完善的blockchain的教学demo,在持久化时考虑到使用leveldb。通过查阅文档,发现Rust中已经提供了使用leveldb的接口。将官方的例子修改了下,能够运行通......