binding choice

값 선언은 “바꿀 수 있나”와 “새 이름인가”를 먼저 고른다

Rust는 값을 저장하는 문법에 변경 의도를 같이 적게 한다. 그래서 읽는 사람도 컴파일러도 같은 기준으로 코드를 판단한다.

1

기본은 불변

let x = 5;

값을 다시 대입하면 컴파일 단계에서 막힌다.

2

변경은 표시

let mut x = 5;

값이 바뀌는 이름에는 `mut`이 붙어 의도가 보인다.

3

상수는 고정

const MAX: u32 = 100;

타입과 값을 명시하고 컴파일 시점에 결정되는 이름이다.

4

섀도잉은 새 바인딩

let x = x + 1;

같은 이름을 다시 묶어 변환 단계를 불변 값으로 남긴다.

판단 질문

question

값이 정말 바뀌어야 하나?

아니면 `let`, 맞으면 `let mut`을 선택한다.

question

프로그램 전반의 고정값인가?

그렇다면 타입을 붙인 `const`가 읽기 쉽다.

섀도잉이 유용한 순간

형태 변환

`spaces: &str`을 `spaces: usize`로 바꿔도 새 바인딩이라 안전하다.

스코프 제한

안쪽 스코프의 `x`가 끝나면 바깥 `x`가 다시 보인다.

설계 원칙

Rust의 기본값은 “안 바뀐다”입니다. 바뀌는 값, 전역 고정값, 변환된 새 값을 문법으로 구분하면 작은 예제에서도 소유권과 타입 규칙을 읽기 쉬워집니다.