// 예제 프로젝트 생성
$ cargo new --bin variables
fn main() {
let x = 5;
println!("The value of x is: {}", x);
x = 6;
println!("The value of x is: {}", x);
}

에러가 발생하는 원인은 빨간색으로 표시되어 있듯 ‘불변성 변수에 두 번의 할당이 이루어졌기 때문이다.
불변으로 선언된 변수의 값을 변경하고자 하면 컴파일 타임에 에러가 발생한다.
공식문서에서는 ‘가끔 값을 변경하는 경우’ 나중에 버그의 원인을 추적하기가 어렵다고 한다.
러스트는 컴파일러가 변경되지 않는 값에 대한 보증을 해주기 때문에 코드를 작성하거나 분석할 때에도 변수의 값이 어떻게 변경되는지 추적할 필요가 없다.
하지만 가변성은 여전히 매우 유용하게 사용된다. 접두어로 mut 을 추가하는 것으로 가변성 변수를 선언할 수 있다.
이것은 향후 코드를 보는 사람에게 코드의 다른 부분에서 해당 변수의 값이 변경될 것이라는 것을 알려준다.
src/main.rs 를 아래와 같이 변경하여 실행하면 정상적으로 작동하는 것을 알 수 있다.
fn main() {
let mut x = 5;
println!("The value of x is: {}", x);
x = 6;
println!("The value of x is: {}", x);