동적 vs 정적 디스패치
메소드는 다음의 두 가지 방식으로 실행됩니다:
- 정적 디스패치 (static dispatch) - 인스턴스의 자료형을 알고 있는 경우, 어떤 함수룰 호출해야 하는지 정확히 알고 있습니다.
- 동적 디스패치 (dynamic dispatch) - 인스턴스의 자료형을 모르는 경우, 올바른 함수를 호출할 방법을 찾아야 합니다.
trait 자료형인 &dyn MyTrait
은 동적 디스패치를 통해 객체의 인스턴스들을 간접적으로 작동시킬 수 있게 해줍니다.
동적 디스패치를 사용할 경우, Rust에서는 사람들이 알 수 있도록 trait 자료형 앞에 dyn
을 붙일 것을 권고합니다.
메모리 상세:
- 동적 디스패치는 실제 함수 호출을 위한 포인터 추적으로 인해 조금 느릴 수 있습니다.