monomorphization

제네릭은 사용된 구체 타입별 코드로 컴파일된다

Rust 제네릭은 런타임 타입 검사보다 컴파일 시점 단형화를 통해 타입별 함수를 만들고 최적화한다.

01 generic fnfn largest<T>

타입 매개변수

02 use sitei32, char 등

구체 타입 등장

03 monomorphize타입별 코드 생성

largest_i32 형태

04 optimize정적 호출 최적화

런타임 비용 감소

구분의미판단
장점동적 디스패치 없음성능 예측 가능
비용코드 크기 증가 가능타입별 생성
trait boundT가 해야 할 일 제한컴파일 시 확인

핵심 단형화는 제네릭을 느슨한 타입으로 남기는 것이 아니라 구체 타입 코드로 바꾸는 컴파일 전략이다.