use std::error::Error;
use std::fmt;
// 自定义错误类型
#[derive(Debug)]
struct MyError {
message: String,
}
impl fmt::Display for MyError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.message)
}
}
impl Error for MyError {}
// 第一个可能返回错误的函数
fn function1() -> Result<i32, MyError> {
Err(MyError {
message: "Function 1 error".to_string(),
})
}
// 第二个可能返回错误的函数,调用function1
fn function2() -> Result<i32, MyError> {
let result = function1()?;
Ok(result + 1)
}
// 主函数,调用function2并处理错误
fn main() {
match function2() {
Ok(result) => println!("Result: {}", result),
Err(e) => eprintln!("Error: {}", e),
}
}