跳出特定循环并返回一个值

Pyn*_*hia 5 rust

我刚刚开始学习 Rust,到达我读到的控制流部分break可以返回一个值(循环是一个表达式),它也可以使用标签突破特定循环,例如break 'counting_up

所以我的问题是:

是否可以将两者结合起来?即通过命名它来打破特定的循环返回一个值?

如果是这样,分配+声明循环的语法是什么?

的语法是什么break

以下是两种可能性,但两种语法都无法编译:

fn main() {
    let mut count = 0;
    // would this do?
    let result = 'counting_up: loop {
        println!("count = {count}");
        let mut remaining = 10;

        loop {
            println!("remaining = {remaining}");
            if remaining == 9 {
                break;
            }
            if count == 2 {
                // break count*10, 'counting_up;
                // or should it be:
                break 'counting_up, count*10;
            }
            remaining -= 1;
        }

        count += 1;
    };
    println!("End count = {count}");
}
Run Code Online (Sandbox Code Playgroud)

Cha*_*man 8

是的,没有分隔符,只是break 'label value

fn main() {
    let mut count = 0;
    let result = 'counting_up: loop {
        println!("count = {count}");
        let mut remaining = 10;

        loop {
            println!("remaining = {remaining}");
            if remaining == 9 {
                break;
            }
            if count == 2 {
                break 'counting_up count*10;
            }
            remaining -= 1;
        }

        count += 1;
    };
    println!("End count = {count}");
}
Run Code Online (Sandbox Code Playgroud)