rust 如果可能,如何将具体返回类型设置为范围?[duplicate]

qxgroojn  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(184)
    • 此问题在此处已有答案**:

Is there a way to "return" from a block expression?(4个答案)
4天前关闭。
我在print宏中有这个作用域,它试图找到1到10亿之间的整数。如果失败,它应该会死机。

fn main() {
    println!(
        "{}",
        {
            for i in 0..1000000000 {
                if i == 100 {
                    Some(i)
                }
            }
            None
        }
        .unwrap()
    );
}

Some(i)所在的行,出现错误:

mismatched types
expected unit type `()`
        found enum `Option<{integer}>`

我该怎么补救呢?

tag5nh1u

tag5nh1u1#

如果你想使用if作为表达式,你还必须提供else。我认为你想要其他的东西,尽早地打破这个区块。你可以用最近稳定的命名区块来做到这一点:

fn main() {
    println!(
        "{}",
        'bl: {
            for i in 0..1000000000 {
                if i == 100 {
                    break 'bl Some(i);
                }
            }
            None
        }
        .unwrap()
    );
}

相关问题