타입 추론
타입 추론 엔진은 꽤 영리합니다. 초기화 시 표현식 값의 타입을 알아내는 것을 넘어, 변수가 이후에 어떻게 사용되는지까지 지켜보고 타입을 추론하죠. 다음은 타입 추론의 심화 예시입니다.
fn main() { // 타입 어노테이션이 있으니, 컴파일러는 `elem`이 u8 타입임을 알 수 있습니다 let elem = 5u8; // 빈 벡터(크기가 늘어나는 배열)를 생성합니다. let mut vec = Vec::new(); // 이 시점에서, 컴파일러는 `vec`의 정확한 타입을 알 수 없습니다. // 무언가에 대한 벡터(`Vec<_>`)라는 것만 알 수 있죠. // `elem`을 벡터에 삽입합니다. vec.push(elem); // 이제 컴파일러는 `vec`이 `u8` 타입의 벡터(`Vec<u8>`)임을 알 수 있습니다! // TODO ^ `vec.push(elem)` 줄을 주석 처리해보세요 println!("{:?}", vec); }
변수에 타입 어노테이션을 작성하지 않고도 컴파일 문제가 발생하지 않으면, 프로그래머에게는 행복한 일이죠!