You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中break跳出带标签外层循环时如何返回值

Rust 带标签循环break是否支持返回值

答案是完全支持,语法和普通无标签循环的break返回值规则一致,只需要在标签后紧跟要返回的值即可,整个带标签的循环会作为表达式把这个值返回出来。


基础用法回顾

普通loop循环中,可以直接在break后携带返回值,循环的执行结果可以直接赋值给变量,示例:

fn main() {
    let mut counter = 0;

    let result = loop {
        counter += 1;

        if counter == 10 {
            break counter * 2;
        }
    };

    println!("The result is {result}");
}

这段代码运行后会输出The result is 20,循环在counter到10时跳出,把计算结果返回给了result变量。


带标签break返回值的写法

跳出带标签的外层循环时,只需要把要返回的值写在标签名后面即可,不需要额外语法。针对示例代码,修改后就可以实现跳出外层循环同时返回值:

fn main() {
    let mut count = 0;
    // 把带标签的循环整体作为表达式赋值给变量接收返回值
    let outer_result = 'counting_up: loop {
        println!("count = {count}");
        let mut remaining = 10;

        loop {
            println!("remaining = {remaining}");
            if remaining == 9 {
                break;
            }
            if count == 2 {
                // 跳出外层'counting_up循环,同时返回count * 100作为循环表达式的值
                break 'counting_up count * 100;
            }
            remaining -= 1;
        }

        count += 1;
    };
    println!("End count = {count}, returned value from outer loop = {outer_result}");
}

运行这段代码,执行到count == 2时会直接终止两层循环,最终输出:End count = 2, returned value from outer loop = 200。


注意事项

  • 同一个循环(无论是否带标签)中,所有指向它的break返回的值类型必须完全一致,否则会触发编译错误。
  • 只有loop无限循环支持break携带返回值,for循环和while循环不支持该特性。

内容的提问来源于stack exchange,提问作者Amr Salama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:18:03