Rust 异步编程:时间管理大师
异步编程允许程序在等待耗时操作(如 IO)完成时,去执行其他任务,而不是阻塞在那里。
⏳ async 和 .await
使用 async 标记的代码块会返回一个 Future,它是一个“承诺”,代表未来会产生一个值。
// 定义异步函数
async fn solve_case() {
println!("案子破了!");
}
async fn main_work() {
// 调用异步函数,如果不 await,它什么都不做!
let future = solve_case();
// 等待结果
future.await;
}
🏃♂️ 运行时 (Runtime)
Rust 标准库没有内置异步运行时,通常使用社区库 Tokio。
use tokio;
#[tokio::main]
async fn main() {
println!("开始工作...");
let f1 = solve_case_1();
let f2 = solve_case_2();
// 并发执行
tokio::join!(f1, f2);
println!("全部搞定!");
}
async fn solve_case_1() {
// 模拟耗时操作
tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
println!("案子 1 破了");
}
async fn solve_case_2() {
println!("案子 2 破了");
}