컴파일 변환 흐름
monomorphization
generic fn<T>타입 매개변수를 가진 함수나 구조체를 작성합니다.
call sitesi32, f64 같은 구체 타입으로 호출됩니다.
monomorphize컴파일러가 타입별 버전을 생성합니다.
typed machine code각 타입에 맞는 코드가 최적화됩니다.
runtime실행 중 동적 타입 비용 없이 호출됩니다.
제네릭→호출 타입→단형화→코드 생성→실행
트레이드오프
perf
빠른 실행동적 디스패치 비용 없이 구체 타입 코드가 실행됩니다.
코드 크기많은 타입으로 쓰면 생성 코드가 늘 수 있습니다.
컴파일 시간특화 코드 생성은 컴파일 시간을 늘릴 수 있습니다.
트레이트 객체동적 디스패치가 필요할 때는 trait object를 고려합니다.