Rust中无限循环的可用性

Fus*_*ion 4 infinite-loop rust

Rust contains loop,专为无限循环而设计:

使用关键字loop,Rust提供了一种无限循环的方法,直到达到一些终止语句(如程序退出)

当我希望我的循环永远运行时,我无法想到一个场景.有无限循环可能有用的情况吗?

Fra*_*gné 10

loop通常用于循环,我们想要在循环体的中间打破.也就是说,您希望在测试任何条件之前执行某些操作,然后在满足某些条件时退出循环,然后执行其他必须仅在测试条件后执行的操作,然后重复.在其他语言中,这通常表示为while (true)for (;;).这种情况很常见,Rust决定通过保留一个关键字来声明没有条件的循环来接受这种模式.

另外,Rust没有等效的C do..while循环,它在迭代结束时测试条件,但在第一次迭代之前不测试.在Rust中,你可以在循环结束时使用a loopif condition { break }语句来模拟它.do..while在实践中,循环是相对罕见的,比我经验中的"中间突破"循环更为罕见.


lje*_*drz 5

我经常loop在我期望用户输入不断的程序中使用,例如在命令行游戏中:

fn play() {
    let mut game = Game::new();

    loop { game.turn() }
}
Run Code Online (Sandbox Code Playgroud)

由于可能的输入错误,它也很有用 - 在每个回合中它们可以打印到玩家,并且只要玩家想要游戏就可以继续游戏,直到胜利,失败或辞职为止break.

  • 我实际上期待一些`while Some Some(xx)= user.input(){game.turn(); 在这里,因为我希望在某些时候用户会想要退出... (2认同)