구현 재사용
부모 타입의 메서드 구현을 여러 하위 타입에서 다시 쓰고 싶습니다.
러스트는 부모 구조체의 필드와 메서드를 그대로 물려받는 상속 대신, 코드 공유와 다형성의 목적을 별도 도구로 표현합니다.
부모 타입의 메서드 구현을 여러 하위 타입에서 다시 쓰고 싶습니다.
서로 다른 타입을 같은 인터페이스를 가진 값처럼 다루고 싶습니다.
하위 타입에 맞지 않는 메서드까지 함께 노출될 수 있습니다.
단일 상속 구조에서는 조합보다 계층을 먼저 맞추게 됩니다.
Summary처럼 공통 동작을 기본 구현으로 제공하고
필요하면 오버라이드합니다.
필요한 능력만 제약으로 걸어 범주 내 매개변수형 다형성을 얻습니다.
런타임에 여러 구체 타입을 같은 인터페이스 뒤에 숨길 수 있습니다.
캡슐화와 조합을 유지하면서 필요한 동작만 외부에 공개합니다.
러스트의 선택은 상속을 없애는 데서 끝나지 않습니다. 공유할 동작, 대체 가능한 타입, 감출 구현을 각각 다른 문법으로 드러내 설계 의도를 더 좁게 표현합니다.