参考章节《Tokio官方文档》Setup
参考章节《Tokio官方文档》Hello Tokio
参考章节《Rust语言圣经(Rust Course)》第4.2章 Tokio 使用指南
Async Rust
,最最重要的莫过于底层的异步运行时
,它提供了执行器、任务调度、异步 API 等核心服务。
async/await
特性编写的异步代码要运行起来,就必须依赖于异步运行时
,否则这些代码将毫无用处。
Tokio 是由 社区驱动的
Rust 中最有名的异步运行时
,也是目前Rust 异步运行时
的事实标准
那么从这一节开始,我们将一起学习 Tokio
的常见用法,让我们开始吧
准备工作
我们将根据《Tokio官方文档》 的例子来学习
首先,我们安装 mini-redis
服务器,它用于测试我们的客户端,项目地址
|
|
启动服务器
|
|
然后,在一个单独的终端窗口中,尝试使用 mini-redis-cli
获取 foo
|
|
你应该看到(nil)
。
Hello Tokio
我们新建一个工程 my-redis
,并在 Cargo.toml
中引入 tokio
|
|
features = ["full"]
表示引入所有特性
,Tokio 有很多功能和特性,例如 TCP,UDP,Unix sockets,同步工具,多调度类型等等
不是每个应用都需要所有的这些特性。为了优化编译时间和最终生成可执行文件大小、内存占用大小,应用可以对这些特性进行可选引入。
然后我们在 main.rs
中写入如下代码
|
|
以上代码中,我们比较陌生的是 async fn main
和 #[tokio::main]
,我们来看看它们的作用
.await
只能在async
函数中使用,如果是以前的fn main
,那它内部是无法直接使用async函数的
- 异步运行时本身是需要初始化的,而
#[tokio::main]
宏会将async fn main
隐式的转换为fn main
的同时还会对整个异步运行时进行了初始化。
例如
|
|
将被转换成:
|
|