Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

В чем разница между loop и while true?

#while #rust


В чем разница между loop и while true в rust?


  В документации написано что:

loop {}

  
  Интерпретируется по другому компилятором чем:

 while true {}

  
  Хотел бы понять в чем эта разница и на сколько плохо использовать не loop, а while true


версия вопроса на Английском от @aij
    


Ответы

Ответ 1



На такой вопрос был дан ответ в Reddit. Разница заключается в том, что в случае while true все переменные должны быть инициализированы до цикла, а в случае loop это не обязательно: Пример с loop let x; loop { x = 1; break; } println!("{}", x) этот код отлично работает, однако следующий let x; while true { x = 1; break; } println!("{}", x); покажет ошибку компиляции "use of possibly uninitialised variable" с указанием на x в println. Во втором случае компилятор не определяет, что тело цикла всегда выполнится хотя бы один раз. перевод ответа @telotortium

Ответ 2



Сейчас есть еще одно отличие - из loop можно вернуть значение: let x; let y = loop { x = 1; break 42;}; println!("x={} y={}", x, y); Returning from loops

Комментариев нет:

Отправить комментарий