参考章节《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的同时还会对整个异步运行时进行了初始化。
例如
|
|
将被转换成:
|
|