async-std

Rust async/.await内幕

时光总嘲笑我的痴心妄想 提交于 2020-08-09 16:35:37
在这个教程中我们将详细分析rust异步代码async/.await的内部运行机制。我们将使用async-std库而不是tokio,因为这是第一个支持async/.await语法的rust库。async/.await原理解析教程分为两部分,这是第一部分。 区块链开发教程链接: 以太坊 | 比特币 | EOS | Tendermint | Hyperledger Fabric | Omni/USDT | Ripple 0、准备Rust练习环境 首先让我们先创建一个Cargo项目: ~$ cargo new --bin sleepus-interruptus 如果你期望和教程使用的编译器保持一致,可以添加一个内容为1.39.0的rust-toolchain文件。 在继续下面的内容之前,先运行 cargo run 确保环境没有问题。 1、一个交替显示的Rust程序 我们要写一个简单的程序,它可以显示10次Sleepus消息,每次间隔0.5秒;同时显示5次Interruptus消息,每次间隔1秒。下面是相当简单的rust实现代码: use std::thread::{sleep}; use std::time::Duration; fn sleepus() { for i in 1..=10 { println!("Sleepus {}", i); sleep(Duration::from