如何在结构创建中失败?

时间:2014-08-08 23:13:30

标签: rust

我创建的struct应该从ini文件中获取其值。我有一个load方法加载文件并返回Option<Settings>

失败并中止结构创建的最佳方法是什么?我应该返回无或致电fail!吗?返回None似乎是处理此问题的惯用方法,但fail!允许我显示消息。

我如何失败并向我的用户发送消息,或多或少是我对C ++ / Java中的异常所做的事情?

1 个答案:

答案 0 :(得分:1)

您想使用标准库中的Result类型。它允许您返回带有值的Ok或带有错误消息的Err(或您想要的任何类型的值)。然后load()的调用者可以处理向用户打印错误消息。

以下是一个例子:

enum DivError {
    DivisionByZero
}

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

fn main() {
    let answer = divide(1, 0);

    match answer {
        Ok(result) => println!("The answer is {}.", result),
        Err(DivisionByZero) => println!("Oops! You divided by zero.")
    }
}