rust中async/await的使用

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

安装依赖:

bash 复制代码
cargo add futures
cargo add async-std

使用示例:

示例1:
rust 复制代码
use async_std::task::block_on;

fn main() {
    block_on(hello());
}

async fn hello() {
    println!("hello , world!!!");
}
示例2:
rust 复制代码
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代码块:

rust 复制代码
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

rust 复制代码
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);
}
相关推荐
techdashen20 分钟前
深入 Rust enum 的内存世界
开发语言·后端·rust
techdashen2 小时前
Rust 模块和文件不是一回事:一次讲清 `mod`、`use`、`pub use`
开发语言·后端·rust
Arman_4 小时前
02 rusty-cat 实战:MeowClient 配置、任务参数、进度回调与暂停恢复
http·https·rust·tokio·文件分片上传·文件分片下载
wzhao1014 小时前
Relink 0.15.1:一个 no_std 的 ELF 加载器/链接器
linux·rust·gnu
yzwlord6 小时前
【无标题】
linux·运维·rust·ssh
Arman_6 小时前
Rust 客户端安全上传下载阿里云 OSS:rusty-cat 预签名 URL 实战
安全·阿里云·rust·oss断点续传
灵机一物6 小时前
灵机一物AI原生电商小程序、PC端(已上线)-【技术深度解析】Bun 6 天 AI 重写 96 万行代码:从 Zig 迁移 Rust 全流程与行业影响
开发语言·人工智能·rust
Arman_6 小时前
03 rusty-cat 进阶解析:架构设计、云存储接入、安全模型与长期维护评估
css·安全·rust·文件分片上传·文件分片下载
techdashen7 小时前
半小时读懂 Rust:从语法符号到所有权思维
开发语言·rust
星栈7 小时前
Rust 全栈 SSR 用了一年,我踩过的 5 个坑和 3 个真香瞬间
rust·开源·全栈