Vec<Box<dyn Draw>>Button과 SelectBox를 함께 보관트레이트 객체를 사용하여 다른 타입의 값 허용하기
Box<dyn Draw>는 구체 타입이 다른 위젯을 한 컬렉션에
담고, 호출 시점에 각 값의 vtable을 따라 알맞은 draw
구현을 선택합니다.
공통 동작을 트레이트로 정의하고, 트레이트 객체로 서로 다른 타입을 같은 컬렉션에서 다루는 기준을 확인합니다.
data ptrvtable ptr
vtable.draw(data)구체 타입 없이 알맞은 구현 선택
1
공통된 동작을 위한 트레이트 정의하기
러스트는 상속 대신 공통 동작을 트레이트로 정의해 서로 다른 타입을 같은 인터페이스로 다룹니다.
예제 16-3: Draw 트레이트의 정의
2
트레이트 구현하기
그러면 트레이트 객체(trait object)를 담는 벡터를 정의할 수 있습니다.
SpreadsheetCell
3
트레이트 객체는 동적 디스패치를 수행합니다
트레이트 객체는 데이터와 동작을 묶어 런타임에 호출 대상을 결정합니다.
draw