Rust中能否结合标签break跳出指定循环并返回值?
Rust中带标签的
break同时返回值的正确用法 当然可以同时实现带标签跳出指定循环和返回值,你之前的尝试出错是因为用了错误的语法——Rust里不需要用逗号分隔标签和返回值,正确的写法是把标签放在break后面,空格隔开后直接跟返回值。
正确的语法规则
- 带标签的循环声明与赋值:和普通带标签循环、普通返回值的
loop表达式写法一致,依然是'标签名: loop { ... }作为表达式赋值给变量,比如:let result = 'counting_up: loop { // 循环逻辑 }; - 带标签且返回值的
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
相关产品推荐
相关产品推荐

