Учебник Rust, и теперь book утверждают, что существует разница между while true
и loop
, но что это не очень важно понимать на этом этапе.
Если вам нужен бесконечный цикл, у вас может возникнуть соблазн написать следующее:
while true {
Однако у Rust есть выделенное ключевое слово, цикл, чтобы обработать этот случай:
loop {
Анализ контроля потока ржавчины рассматривает эту конструкцию иначе, чем истину, поскольку мы знаем, что она всегда будет циклической. Детали того, что это означает, не очень важны для понимания на данном этапе, но в целом, чем больше информации мы можем предоставить компилятору, тем лучше это может сделать с безопасностью и генерированием кода, поэтому вам всегда следует выбирать цикл, когда вы планируйте бесконечно петлю.
Сделав немного работы с компилятором, мне нужно задаться вопросом, какая возможная семантическая разница существует, так как для компилятора было бы тривиально выяснять, что оба являются бесконечным циклом.
Итак, как компилятор относится к ним по-другому?