oop in rust

러스트의 객체지향은 상속보다 경계와 동작 공유에 가깝다

구조체는 데이터와 메서드를 묶고, 캡슐화는 공개 범위로 지키며, 코드 공유는 트레이트와 제네릭으로 풀어낸다.

data

데이터와 동작

struct와 impl 블록으로 상태와 메서드를 한 타입 주변에 모은다.

struct + impl
private

캡슐화

필드는 기본 비공개이고 pub 메서드로 유효한 사용 경로만 공개한다.

visibility
trait

공통 동작

여러 타입이 같은 메시지에 반응해야 하면 trait으로 동작 계약을 만든다.

shared behavior
generic

코드 재사용

상속 계층 대신 제네릭과 trait bound로 재사용 범위를 표현한다.

composition
dyn

다형성

런타임에 다른 타입을 섞어야 할 때 trait object를 선택한다.

dyn Trait