返回Result <(),Error>是否正确处理错误?

时间:2019-02-05 09:59:08

标签: error-handling rust rust-result

我目前正在从发生错误的位置上对错误进行管理。

我正在使用?运算符来传播void函数的错误,但是会导致以下返回类型:

fn my_fn() -> Result<(), Error>

由于这是一个void函数,因此我需要明确声明我要为成功的情况返回unit

所以我不得不将返回值声明为Ok(()),这不是必须的,但是看起来像是事实上的标准用法。

有没有更好的用法,而不是明确地说成功与否?

fn main() {
    if let Err(my_error) = void_function() {
        println!("Error occurred : {:?}", my_error)
    }
}

fn do_something() -> Result<(), MyError> {
    // ... logic;
    // If error case 
    // Could throw different error and mapped to MyError also.
    return Err(MyError::MyError1);
}

fn void_function() -> Result<(), MyError> {
    // Do Something and thwrow error to upper level.
    do_something()?;
    Ok(()) // Do I really need to give this return value explicitly?
}

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

Playground

0 个答案:

没有答案