Type Map

타입은 추론으로 시작하고, 모호하면 명시로 확정한다

값의 모양과 사용 위치를 보고 컴파일러가 타입을 정한다. 후보가 여러 개면 어노테이션으로 방향을 알려준다.

타입 선택 흐름

compile time first
1

값과 사용처 확인

정수, 실수, bool, char처럼 하나인지 먼저 보고 기본 타입을 추론한다.

let x = 2.0;
2

모호하면 명시

parse처럼 가능한 결과가 많으면 원하는 타입을 직접 적는다.

let guess: u32 = parse();
3

묶음 형태 선택

서로 다른 값은 튜플, 같은 타입의 고정 길이 값은 배열로 묶는다.

(i32, f64, u8) / [i32; 5]
4

인덱스는 실행 중 검사

배열 인덱스가 사용자 입력이면 길이보다 작은지 런타임에 확인된다.

let element = a[index];
기억할 점

러스트의 타입 안정성은 컴파일 시점 확정에서 시작하지만, 배열 범위처럼 실행 전에는 알 수 없는 값은 런타임 검사로 이어진다.