[rust] 제네릭 타입 추론

제네릭 함수나 메서드를 호출할 때 매개변수의 타입을 명시하지 않아도 컴파일러가 대부분의 경우에는 타입을 추론할 수 있습니다. 이를 제네릭 타입 추론이라고 합니다.

제네릭 타입 추론 원리

컴파일러는 변수나 함수의 반환값을 통해 제네릭 타입을 추론합니다. 예를 들어, 아래와 같은 함수가 있다고 가정해 봅시다.

fn choose_first<T>(a: T, b: T) -> T {
    a
}

이 함수를 호출할 때 매개변수의 타입을 명시하지 않아도 컴파일러는 대부분의 경우 타입을 추론할 수 있습니다.

let result = choose_first(10, 20); // result의 타입은 i32

이처럼 컴파일러는 함수의 반환 값이 a의 타입과 같다는 원리를 활용하여 T의 타입을 추론합니다.

제네릭 타입 추론의 제한

하지만 모든 경우에 제네릭 타입을 추론할 수 있는 것은 아닙니다. 특히 함수의 매개변수나 반환 값의 타입이 명확하지 않을 때에는 제네릭 타입 추론이 실패합니다. 이런 경우, 명시적으로 타입을 지정해 주어야 합니다.

요약

제네릭 타입 추론은 Rust에서 매우 유용한 기능입니다. 대부분의 경우에는 타입을 명시하지 않아도 되어 코드가 간결해지고 가독성이 좋아집니다. 하지만 제한적인 상황에서는 명시적인 타입 지정이 필요한 점을 유의해야 합니다.

이상으로 Rust의 제네릭 타입 추론에 대해 알아보았습니다.

자세한 내용은 Rust 공식 문서를 참고하세요.