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

Rust中能否结合标签break跳出指定循环并返回值?

Rust中带标签的break同时返回值的正确用法

当然可以同时实现带标签跳出指定循环和返回值,你之前的尝试出错是因为用了错误的语法——Rust里不需要用逗号分隔标签和返回值,正确的写法是把标签放在break后面,空格隔开后直接跟返回值。

正确的语法规则

  1. 带标签的循环声明与赋值:和普通带标签循环、普通返回值的loop表达式写法一致,依然是'标签名: loop { ... }作为表达式赋值给变量,比如:
    let result = 'counting_up: loop {
        // 循环逻辑
    };
    
  2. 带标签且返回值的break语法:break '标签名 返回值;,标签紧跟break,之后用空格分隔返回值。

修改后的可编译代码

把你代码里错误的break语句改成正确写法即可:

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}");
    println!("Result from loop: {result}"); // 会输出20
}

这段代码运行后,当count等于2时,会直接跳出外层的'counting_up循环,同时把count*10(也就是20)作为循环表达式的结果赋值给result。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 01:17:06