변수

변수 선언

let: 불변 변수를 선언

let mut: 가변 변수를 선언

const: 상수를 선언. 반드시 타입을 명시. 각 호출부에 값이 인라이닝됨.

static: 정적 수명을 갖는 불변 변수

static mut: 정적수명을 갖는 가변 변수. 접근시 unsafe 문맥에서 접근해야함.

섀도잉

let v = 10; // 불변 변수 선언

let v = 11; // 재선언

불변변수는 값의 재할당이 불가능하지만 같은이름의 변수를 재선언 할 수 있다.(물론 가변변수도 가능)

가변변수를 사용하는 것과 다른점은 완전히 새로운 변수를 만드는 것이기 때문에 타입을 변경할 수 있고 let으로 재선언하기 때문에 불변성이 유지된다는 점이다.

또한 섀도잉은 스코프내에서만 효과가 있기때문에 스코프를 벗어나면 이전 변수가 유효한 반면 가변변수는 스코프를 나가도 변경된 값이 유지된다.