https://stackoverflow.com/questions/28892351/what-is-the-difference-between-loop-and-while-true


let x;

loop { x = 1; break; }

println!("{}", x)


위의 코드는 loop내 바디가 반드시 실행된다는 보장이 있음

따라서 x는 무조건 초기화될 것이므로 println!에서 x가 안전하게 쓰인다는 보장이 있음




let x;

while true { x = 1; break; }

println!("{}", x);


반면 위의 경우는 우리야 true 보고 반드시 바디가 실행될거라는 걸 알지만

컴파일러는 조건에 따라 안될 수도 있다고 판단함

따라서 println!에서 x가 초기화되지 않은 상태일 수 있다고 보고 컴파일 실패시켜버림