错误类型定义
// 定义NetworkError枚举,包含ConnectError和TimeoutError变体
#[derive(Debug)]
pub enum NetworkError {
ConnectError,
TimeoutError,
}
send_request
函数定义与文档注释
/// 发送网络请求
///
/// # 可能返回
/// `Ok(_)`:网络请求成功
/// `Err(NetworkError::ConnectError)`:连接错误
/// `Err(NetworkError::TimeoutError)`:超时错误
pub fn send_request() -> Result<(), NetworkError> {
// 实际网络请求逻辑
// 这里假设随机返回一个错误,仅作示例
if rand::random::<bool>() {
Err(NetworkError::ConnectError)
} else {
Err(NetworkError::TimeoutError)
}
}
perform_operation
函数定义与文档注释
use std::fmt::Debug;
use std::time::Duration;
use std::thread;
/// 执行高层操作,调用send_request并处理不同错误
///
/// 此函数会根据`send_request`返回的`NetworkError`进行不同处理:
/// - `ConnectError`:重试3次,每次间隔1秒
/// - `TimeoutError`:记录日志并返回特定错误给调用者
///
/// # 返回
/// `Ok(_)`:操作成功
/// `Err(OperationError)`:操作失败
pub fn perform_operation() -> Result<(), OperationError> {
for _ in 0..3 {
match send_request() {
Ok(_) => return Ok(()),
Err(NetworkError::ConnectError) => {
println!("ConnectError, retrying...");
thread::sleep(Duration::from_secs(1));
}
Err(NetworkError::TimeoutError) => {
println!("TimeoutError, logging...");
return Err(OperationError::Timeout);
}
}
}
Err(OperationError::ConnectFailed)
}
// 定义高层操作的错误类型
#[derive(Debug)]
pub enum OperationError {
ConnectFailed,
Timeout,
}