一文读懂Rust的async

本文详细介绍如何在Rust中实现异步编程,包括选择运行时、生成Future、处理阻塞和CPU密集型任务,以及如何创建Web请求的示例。

一文读懂Rust的async

不同的编程语言表现异步编程的方式可能不一样,Rust跟JavaScript的async/await类似:使用的关键字啊,编程模型啊都差不多啦! 也有些不一样的地方,毕竟Rust是重新设计的语言嘛,比如:在JavaScript中使用Promise表示需要延迟异步执行的计算,在Rust中使用的是Future.在JavaScript中不需要选择指定运行异步代码的运行时,在Rust中需要. Rust还更麻烦了?还得选择指定运行时?

这是因为Rust是可以面向硬件、嵌入式设备的操作系统级别的编程语言就像C++,并且零抽象成本.这就需要Rust需要有选择地把功能包含进标准库里.简单来说,为了满足不同的编程场景Rust标准库就没有包含指定异步代码运行时,我们可以根据具体的场景选择不同的运行时。

是不是感觉还有点晕乎?没关系,下面我们会介绍怎么在Rust中编写异步(async)代码.知道了怎么编写异步代码,也就知道async是什么了.如果你是第一次使用Rust编写异步代码或者第一次使用异步代码库正在迷茫从何入手,那恭喜你,这篇文档特别适合你.开始之前我们先快速的介绍下异步编程的基本要素.

基本要素

编写异步的应用,至少需要俩个crate:

  1. futures:这个是Rust官方团队提供维护的crate.
  2. 异步代码运行时crate: 可以自己选择,比如:Tokio, async_std, smol等等.

你可能不想在项目中引入过多依赖,但这些依赖就像chronolog是比较基础的依赖.唯一的不同是这些依赖是面向异步编程的.

我们接下来会使用Tokio做为运行时,刚开始你最好也先了解熟悉使用一种运行时,然后再尝试使用其它运行时。

因为这些运行时之间有很多相通的地方,熟悉了一个再去熟悉其它的就简单了。就像我们学习编程语言一样,学好学深一门编程语言,再去学习其它的语言就快了。不要一开始就几门语言一起学,这样很可能实际开发时这也不行那也不行换来换去还是不能开发出东西.

我们可以像下面这样引入依赖:

[dependencies]
futures = { version = "0.3.*" }
tokio = {version = "0.2.*", features = ["full"] }

main.rs中敲入以下代码:

use futures::prelude::*;
use tokio::prelude::*;

fn main() {
    todo!();
}

可以执行下cargo check如果没什么报错信息,依赖配置就完成了.接下来我们介绍怎么使用运行时。

运行时

像我们先前说

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoderFusionZhu

不要打赏太多哦!我喝速溶就行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值