匹配错误结果并退出程序变量赋值

Mic*_*ael 1 rust

我确实使用match语句检查赋值时的函数结果。在某些情况下,我想退出程序并显示一条错误消息panic!()。但是我如何创建一个可以在任何地方使用的函数或宏?

例子:

let args = match args::Args::parse() {
    Ok(args) => args,
    Err(e) => someerror("bla")
};
let mut statedoc = match state_loader.load() {
    Ok(states) => states,
    Err(e) => someerror("blub")
};
Run Code Online (Sandbox Code Playgroud)

someerror()各地复工需要什么?

小智 6

一种方法是使用发散函数。使用以下语法:

fn someerror(msg: &str) -> ! { // Note the `-> !` here
    eprintln!("Error: {}", msg);
    panic!();
}

fn main() {
    let r: Result<i32, &str> = Err("hello");
    let x = match r {
        Ok(x) => x,
        Err(e) => someerror(e),
    };
    println!("x = {}", x);
}
Run Code Online (Sandbox Code Playgroud)