Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

추론

타입 추론 엔진은 꽤 똑똑합니다. 초기화 중에 값 표현식의 타입을 살펴보는 것 이상의 일을 합니다. 또한 변수가 이후에 어떻게 사용되는지를 보고 타입을 추론합니다. 다음은 타입 추론의 심화 예시입니다:

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);
}

변수의 타입 어노테이션이 필요하지 않았습니다. 컴파일러도 만족하고 프로그래머도 행복합니다!