
109
2
장
트레이트
CHAPTER
트레이트
2
러스트 타입 시스템의 또 다른 핵심은 트레이트
trait
를 이용해 서로 다른 타입 사이의 공통 동작
을 인코딩하는 것이다. 러스트의 트레이트는 다른 언어의 인터페이스
interface
와 거의 같지만
제네
릭
generic
(아이템
12
)과 연계되어 런타임 오버헤드 없이 재사용할 수 있다.
이 장에서는 컴파일러를 비롯한 러스트 툴체인에서 제공하는 여러 가지 표준 트레이트를 살펴
보고, 원하는 동작을 트레이트로 인코딩해서 사용하는 방법에 대해 조언한다.
아이템
10
: 표준 트레이트를 잘 익혀둬라
러스트는 타입 시스템의 동작을 세밀하게 표현하도록 제공하는 표준 트레이트를 통해 타입 시
스템의 핵심 동작을 타입 시스템 자체에 인코딩한다 (아이템
2
).
C
++에 익숙한 프로그래머라면 복사 생성자
copy
-
constructor
, 소멸자
destructor
, 동등 연산자
equality
operator
와 대입 연산자
assignment
operator
등과 상당히 비슷하다고 느낄 것이다.
C
++와 마찬가지로 사용자 정의 타입을 구현할 때 이런 표준 트레이트를 활용하면 좋다. 그러
면 사용자 정의 타입에 있어야 할 연산이 없을 때 그 연산이 속한 트레이트를 러스트 컴파일러
가 알아내 오류 메시지를 구체적으로 출력할 수 있다.