Rust:如何指定一种可能的返回类型?

ilm*_*moi 1 rust

我有一个函数,它根据某些逻辑返回两个结构之一。我需要将返回类型指定为两个之一。我怎么做?

struct A {}

struct B {}

fn picky() -> ??? {
    let a = A{};
    let b = B{};
    if 1 < 10 {
        a
    } else {
        b
    }
}

fn main() {
    picky();
}
Run Code Online (Sandbox Code Playgroud)

这感觉应该是微不足道的,但在谷歌上几个小时后我仍然无法弄清楚。我是 Rust 的新手。

Den*_*ret 5

您的函数只有一种返回类型,但此类型可能是enum

struct A {}
struct B {}

enum AB {
    A(A),
    B(B),
}

fn picky() -> AB {
    let a = A{};
    let b = B{};
    if 1 < 10 {
        AB::A(a)
    } else {
        AB::B(b)
    }
}
Run Code Online (Sandbox Code Playgroud)

这正是ResultRust 中的工作方式:您得到所需的值或错误,因为结果是具有两个变体的枚举。