trait polymorphism

러스트 다형성은 트레이트 구현, 제네릭, 트레이트 객체로 나뉜다

상속 계층 대신 목적에 따라 기본 구현, 정적 디스패치, 동적 디스패치를 선택한다.

기본 구현공통 동작 제공

필요 시 override

제네릭컴파일 시 구체 타입

빠른 정적 디스패치

dyn Trait런타임에 타입 선택

컬렉션/플러그인

구분의미판단
코드 공유trait default method상속보다 좁은 공유
성능 중시impl Trait / <T: Trait>단형화
타입 혼합Box<dyn Trait>vtable 호출
데이터 소유struct동작은 impl/trait

핵심 러스트 다형성은 “부모 클래스 찾기”가 아니라 호출 시점과 타입 고정 시점을 고르는 것이다.