Rust 异步编程:错误处理的艺术与实践
异步错误的本质与分类
在 Rust 同步编程中,错误通常通过 Result<T, E> 返回,程序会阻塞直到操作完成。而在异步场景下,结果是一个 Future<Output = Result<T, E>>,任务暂停等待,可能遇到 IO、超时或取消等特有错误。
同步与异步的差异
同步读取文件时,线程会被阻塞:
use std::fs::File;
use std::io::Read;
fn read_file_sync() -> Result<String, std::io::Error> {
let mut file = File::open("test.txt")?;
let mut content = String::new();
file.read_to_string(&mut content)?;
Ok(content)
}
fn main() {
match read_file_sync() {
Ok(content) => println!("File content: {}", content),
Err(e) => println!("Error reading file: {}", e),
}
}
异步版本则使用 .await 挂起任务:
use tokio::fs::File;
use tokio::io::AsyncReadExt;
async fn read_file_async() -> Result<String, std::io::Error> {
let mut file = File::().?;
= ::();
file.(& content).?;
(content)
}
() {
(). {
(content) => (, content),
(e) => (, e),
}
}


