타입 추정
타입 추정 엔진은 아주 똑똑합니다. 선언할 때의 값만 보는 것이 아니라, 그 변수가 이후 어떻게 이용되는지까지 모두 추적해 타입을 추정합니다. 여기 타입 추정에 대한 고급 예시가 있습니다:
fn main() { // 접미사에 의해 컴파일러는 `elem`이 `u8`임을 확인합니다. let elem = 5u8; // 빈 벡터(늘어날 수 있는 배열) 선언 let mut vec = Vec::new(); // 여기에서 컴파일러는 `vec`이 정확하게 어느 타입인지 모릅니다. 그저 무언가의 // 벡터(`Vec<_>`)라는 것 정도만 확인하죠. // `elem`을 이제 vec에 넣어봅시다. vec.push(elem); // 아하! 이 시점에서 컴파일러는 `vec`이 `u8`의 벡터(`Vec<u8>`)임을 확인합니다. // TODO ^ 위의 `vec.push(elem)` 줄을 주석 처리해보세요 println!("{:?}", vec); }
변수에 대한 타입 선언 없이도, 컴파일러도 행복하고 프로그래머도 행복합니다!