러스트식 객체 지향은 데이터, 공개 범위, 동작 공유를 따로 설계한다
클래스 하나에 모든 것을 넣기보다 struct, impl, pub, trait가 각각 다른 책임을 맡는다.
- struct 필드
- pub/private 경계
- 불변식 보호
- impl 메서드
- trait 계약
- generic 또는 dyn 선택
| 구분 | 의미 | 판단 |
|---|---|---|
| 상태 보관 | struct | 필드 소유 |
| 메서드 | impl | 타입에 동작 연결 |
| 공개 경계 | pub | 사용 가능한 표면 제한 |
| 대체 가능성 | trait | 동작 계약 |
핵심 Rust OOP는 상속이 없다는 결론보다 각 책임을 어떤 언어 장치에 둘지 보는 것이다.