#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
Комментариев нет:
Отправить комментарий