如何接收可选元组 return 值

How to receive optional tuple return values

我有一个看起来像这样的函数:

fn some_func() -> Option<(String, i32)>

当我尝试这样做时:

let (a, b) = some_func();

编译器抛出此错误:

expected enum `Option`, found tuple

如何从函数接收 return 值?

您可以在 some_func() 上调用 Some() 来访问值(或者在没有值的情况下,None())。

在 Rust 中执行此操作的惯用方法是使用 match 语句。

match some_func() {
    Some((x, y)) => println!("{} {}", x, y),
    None => panic!("no vals"),
}

或者如果您想像示例中那样使用赋值(但它不会处理 None):

let (a, b) = some_func().unwrap();
println!("{} {}", a, b);

游乐场here.

更新后的游乐场 .expect() 而不是 .unwrap() here

更重要的一点是,如果 (a, b)None

,那么您不太可能想在此块中继续