В чем разница между loop и while true в rust?
В документации написано что:
loop {}
Интерпретируется по другому компилятором чем:
while true {}
Хотел бы понять в чем эта разница и на сколько плохо использовать не loop, а while true
версия вопроса на Английском от @aij
Ответ
На такой вопрос был дан ответ в 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
Комментариев нет:
Отправить комментарий