G.ASY.05 避免在异步处理过程中包含阻塞操作

【级别】 建议

【描述】

避免在异步编程中使用阻塞操作。

【反例】

不要在异步流程中使用阻塞操作函数


#![allow(unused)]
fn main() {
use std::error::Error;
use std::{fs, io};
    
async fn read_file() -> Result<String, std::io::Error> {
    fs::read_to_string("test.txt") // 不符合
}
}

【正例】

使用异步运行时,如tokio提供的非阻塞函数


#![allow(unused)]
fn main() {
use tokio::fs;

async fn read_file() -> std::io::Result<()> {
    let _ = fs::read_to_string("test.txt").await?; // 符合
    Ok(())
}
}