return 和无限循环中的中断有什么区别?

What is the difference between a return and a break in an infinite loop?

在做 Rust Book 的猜谜游戏时(我不会放 link 因为它可能在几周内不存在),有一点你使用 return突破loop。我用 break 代替:

loop {
    guess = guesser();
    guess_cast = guess.trim().parse();

    let guess_num = match guess_cast {
        Ok(num) => num,
        Err(_) => {
            println!("Guess was not a number, try again");
            continue;
        },
    };

    if guess_num < answer {
        println!("Too low");
    } else if guess_num > answer {
        println!("Too high");
    } else {
        println!("You guessed it!");
        break;
    }
}

在这种情况下,使用 returnbreak 真的有区别吗?想跳出死循环的其他情况怎么办?

如果循环是函数中的最后一条语句,那么break;return;之间显然没有功能上的区别。如果这个条件不成立,显然是有区别的,因为return终止执行函数,而break只终止的执行]loop.

在功能相同的情况下,您使用的可能会因上下文(在这个特定位置感觉哪个更好)、个人喜好以及您早餐吃什么(如果有的话)而有所不同。