Result例子

use std::fmt;

#[derive(Debug)]
enum MyError {
    DivisionByZero,
    InvalidInput,
}

impl fmt::Display for MyError {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match *self {
            MyError::DivisionByZero => write!(f, "Cannot divide by zero"),
            MyError::InvalidInput => write!(f, "Invalid input"),
        }
    }
}

fn divide(a: i32, b: i32) -> Result<i32, MyError> {
    if b == 0 {
        Err(MyError::DivisionByZero)
    } else {
        Ok(a / b)
    }
}

fn main() {
    let result = divide(10, 0);

    match result {
        Ok(value) => println!("Result: {}", value),
        Err(e) => println!("Error: {}", e),
    }
}

posted @ 2024-12-01 16:14  悲三乐二  阅读(29)  评论(0)    收藏  举报