Rust OOP

러스트는 상속 대신 트레이트로 코드 공유와 다형성을 나눈다

부모 클래스를 물려받는 방식보다 기본 트레이트 구현, 제네릭, 트레이트 객체를 목적별로 선택한다.

상속 대체 선택지

trait first

코드 공유

공통 동작은 트레이트 기본 구현으로 제공하고 타입별로 필요하면 오버라이드한다.

제네릭

컴파일 시점에 타입을 정하면서 trait bound로 필요한 능력을 제한한다.

트레이트 객체

런타임에 여러 구현체를 같은 인터페이스로 다루고 싶을 때 사용한다.

설계 효과

상속 계층보다 필요한 능력 단위로 조합해 결합도를 낮춘다.

traitboundobjectdispatch
읽는 법

러스트에서 OOP를 해석할 때 핵심은 “부모 타입”이 아니라 타입이 제공해야 하는 행동 계약을 먼저 잡는 것이다.