추론 타입

추론 타입 (Inferred type)

타입을 직접 다 쓰지 않고, "컴파일러가 알아서 정해줘" 하고 맡기는 자리, 그게 바로 추론 타입(inferred type) 이에요. 타입 위치에 밑줄 _ 를 쓰면 주변 정보를 바탕으로 컴파일러가 타입을 추론해 줘요. 어떤 상황에서 유용한지 살펴볼게요.

출처: Rust Reference

본문

문법 (Syntax)

InferredType → _

어려울 게 없어요. 추론 타입은 그냥 _ 하나예요.

의미 (Semantics)

추론 타입은 사용 가능한 주변 정보를 바탕으로 가능하면 타입을 추론하도록 컴파일러에게 요청해요.

추론 타입은 제네릭 인자(generic arguments) 에서 자주 쓰여요. 다음 예시를 볼게요.

#![allow(unused)]
fn main() {
let x: Vec<_> = (0..10).collect();
}

여기서 Vec<_>_ 에는 collect 의 결과 타입이 들어가요. 타입을 명시하지 않아도 Vec<i32> 같은 구체적인 타입으로 추론되는 거죠.

제약 (Constraint)

하지만 어디서나 쓸 수 있는 건 아니에요. 아이템의 시그니처(signature) 에서는 추론 타입을 사용할 수 없어요. 시그니처는 문맥 없이 그 자체로 타입이 결정되어야 하니까요.

더 알아보기 (Learn more)