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 中处理引用和所有权的关键概念,通过正确使用生命周期符号和遵循相关规律,你可以编写出安全、高效的 Rust 代码,这篇文章主要介绍了Rust 生命周期符号使用的方法和规律,需要的朋友可以参考下
    2024-03-03
  • 深入了解Rust的生命周期

    深入了解Rust的生命周期

    生命周期指的是引用保持有效的作用域,Rust的每个引用都有自己的生命周期。本文将通过示例和大家详细说说Rust的生命周期,需要的可以参考一下
    2022-12-12
  • 前端基于Rust实现的Wasm进行图片压缩的技术文档(实现方案)

    前端基于Rust实现的Wasm进行图片压缩的技术文档(实现方案)

    在现代Web开发中,利用Rust编写的图片压缩代码可以编译成WebAssembly(Wasm)模块,Rust的内存安全特性和Wasm的跨平台能力,使得这种方案既高效又安全,对Rust Wasm图片压缩实现方案感兴趣的朋友一起看看吧
    2024-09-09
  • Rust数据类型之结构体Struct的使用

    Rust数据类型之结构体Struct的使用

    结构体是Rust中非常强大和灵活的数据结构,可以用于组织和操作各种类型的数据,本文就来介绍一下Rust数据类型之结构体Struct的使用,感兴趣的可以了解一下
    2023-12-12
  • Rust 实现 async/await的详细代码

    Rust 实现 async/await的详细代码

    异步编程在 Rust 中的地位非常高,很多 crate 尤其是多IO操作的都使用了 async/await,这篇文章主要介绍了Rust 如何实现 async/await,需要的朋友可以参考下
    2022-09-09
  • Rust实现面向对象的方法

    Rust实现面向对象的方法

    这篇文章主要介绍了Rust实现面向对象的方法,Rust 并不是面向对象的语言,但是面向对象的功能都可以通过自身的特点来实现,本文通过示例代码给大家详细讲解,需要的朋友可以参考下
    2022-10-10
  • 浅谈Rust += 运算符与 MIR 应用

    浅谈Rust += 运算符与 MIR 应用

    这篇文章主要介绍了Rust += 运算符与 MIR 应用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • Rust如何使用Sauron实现Web界面交互

    Rust如何使用Sauron实现Web界面交互

    Sauron 是一个多功能的 Web 框架和库,用于构建客户端和/或服务器端 Web 应用程序,重点关注人体工程学、简单性和优雅性,这篇文章主要介绍了Rust使用Sauron实现Web界面交互,需要的朋友可以参考下
    2024-03-03
  • Rust语言之trait中的个方法可以重写吗

    Rust语言之trait中的个方法可以重写吗

    在Rust中,trait定义了一组方法,这些方法可以被一个或多个类型实现,当你为某个类型实现一个trait时,你可以为该trait中的每个方法提供自己的具体实现,本文将给大家介绍一下trait中的个方法是否可以重写,需要的朋友可以参考下
    2023-10-10
  • 详解Rust中的所有权机制

    详解Rust中的所有权机制

    Rust 语言提供了跟其他系统编程语言相同的方式来控制你使用的内存,但拥有数据所有者在离开作用域后自动清除其数据的功能意味着你无须额外编写和调试相关的控制代码,这篇文章主要介绍了Rust中的所有权机制,需要的朋友可以参考下
    2022-10-10

最新评论