我创建的struct
应该从ini
文件中获取其值。我有一个load
方法加载文件并返回Option<Settings>
。
失败并中止结构创建的最佳方法是什么?我应该返回无或致电fail!
吗?返回None似乎是处理此问题的惯用方法,但fail!
允许我显示消息。
我如何失败并向我的用户发送消息,或多或少是我对C ++ / Java中的异常所做的事情?
答案 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.")
}
}