rust中async/await的使用示例详解

 更新时间:2024年10月12日 09:26:48   作者:UDAIOT1000  
在Rust中,async/await用于编写异步代码,使得异步操作更易于理解和编写,通过使用await,在async函数或代码块中等待Future完成,而不会阻塞线程,允许同时执行其他Future,这种机制简化了异步编程的复杂性,使代码更加直观

在Rust中,async/await 用于编写异步代码。它允许您以同步的方式编写异步代码,使得异步操作更易于理解和编写。

安装依赖:

cargo add futures
cargo add async-std

使用示例:

示例1:

use async_std::task::block_on;
fn main() {
    block_on(hello());
}
async fn hello() {
    println!("hello , world!!!");
}

 示例2:

use std::time::Duration;
use async_std::task::{block_on, sleep};
fn main() {
    let future = hello();
    block_on(future); // 会阻塞线程等待异步任务完成
    println!("hello main");
}
async fn hello() {
    println!("hello , world!!!");
    // 使用async_std运行时的sleep,不要使用线程的sleep,睡眠3秒
    sleep(Duration::from_secs(3)).await;
}

示例3:

 async代码块:

use std::{future::Future, time::Duration};
use async_std::task::{block_on, sleep};
fn main() {
    let future = hello();
    block_on(future); // 会阻塞线程等待异步任务完成
    println!("hello main");
}
fn hello() -> impl Future<Output = ()> {
    async {
        println!("hello , world!!!");
        // 使用async_std运行时的sleep,不要使用线程的sleep,睡眠3秒
        sleep(Duration::from_secs(3)).await;
    }
}

 使用await:

使用await,

它只能在async函数或者async代码块中用,

它会等待Future代码直到完成,

它不会阻塞当前线程,线程还可以执行其他的Future

use std::time::Duration;
use async_std::task::{block_on, sleep};
fn main() {
    block_on(order());
}
async fn cook() -> String {
    sleep(Duration::from_secs(3)).await;
    "糖醋排骨".to_string()
}
async fn order() {
    println!("来一份糖醋排骨!!!");
    let paigu = cook().await;
    println!("{:?}", paigu);
}

到此这篇关于rust中async/await的使用的文章就介绍到这了,更多相关rust async/await使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 深入了解Rust中引用与借用的用法

    深入了解Rust中引用与借用的用法

    这篇文章主要为大家详细介绍了Rust语言中引用与借用的使用,文中的示例代码讲解详细,具有一定的借鉴价值,需要的小伙伴可以了解一下
    2022-11-11
  • Rust生命周期之验证引用有效性与防止悬垂引用方式

    Rust生命周期之验证引用有效性与防止悬垂引用方式

    本文介绍了Rust中生命周期注解的应用,包括防止悬垂引用、在函数中使用泛型生命周期、生命周期省略规则、在结构体中使用生命周期、静态生命周期以及如何将生命周期与泛型和特质约束结合,通过这些机制,Rust在编译时就能捕获内存安全问题
    2025-02-02
  • Rust之Substrate框架中的pallet详解

    Rust之Substrate框架中的pallet详解

    Pallet是Substrate区块链的基础模块,它定义了区块链的业务逻辑和状态转换规则。开发人员可以使用现有的Pallet来快速构建区块链,也可以开发自定义的Pallet来实现特定的功能,感兴趣的小伙伴可以参考阅读下
    2023-05-05
  • Rust编写自动化测试实例权威指南

    Rust编写自动化测试实例权威指南

    这篇文章主要为大家介绍了Rust编写自动化测试实例权威指南详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Rust中实例化动态对象的示例详解

    Rust中实例化动态对象的示例详解

    这篇文章主要为大家详细介绍了Rust中实例化动态对象的多种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-02-02
  • Rust 中的 Packages 与 Crates模块化构建的基础及开发流程

    Rust 中的 Packages 与 Crates模块化构建的基础及开发流程

    Rust中的Crate是编译器处理的最小代码单元,可以是二进制或库,每个Crate由一个CrateRoot文件(通常是src/main.rs或src/lib.rs)定义,本文给大家介绍Rust 中的 Packages 与 Crates模块化构建的基础及开发流程,感兴趣的朋友一起看看吧
    2025-02-02
  • 使用Rust语言管理Node.js版本

    使用Rust语言管理Node.js版本

    这篇文章主要介绍一个使用 Rust 进行编写的一体化版本管理工具 Rtx,比如使用它来管理 Node.js 版本,它很简单易用,使用了它,就可以抛弃掉 nvm 了,文中通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Rust中字符串类型String的46种常用方法分享

    Rust中字符串类型String的46种常用方法分享

    Rust主要有两种类型的字符串:&str和String,本文主要为大家介绍的是String类型的字符串以及它常用的46种方法,感兴趣的小伙伴可以了解一下
    2023-06-06
  • Rust中的Vector多值存储使用方法

    Rust中的Vector多值存储使用方法

    Vector在Rust中是一个非常灵活和强大的数据结构,通过有效利用它,我们可以更加方便地处理和操作多个值,使得代码更加清晰和易于维护,这篇文章主要介绍了Rust中的Vector多值存储的利器,需要的朋友可以参考下
    2024-02-02
  • 详解Rust 修改源

    详解Rust 修改源

    这篇文章主要介绍了Rust 修改源的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01

最新评论