Rust에서 다중 경계를 가진 트레이트 객체: 놀라운 제약
2025-03-27
이 글에서는 Rust 트레이트 객체에서 다중 트레이트 경계의 제한 사항에 대해 자세히 살펴봅니다. 저자는 트레이트 객체 내에서 여러 트레이트 제약 조건(예: `Mammal + Clone`)을 동시에 사용하려고 하면 컴파일 오류가 발생한다는 것을 발견했습니다. 이 글에서는 Rust와 C++에서 동적 디스패치의 기본 메커니즘을 조사하고 각각의 vtable 구현을 비교합니다. 또한 이 제한을 우회하기 위한 트레이트 상속의 사용과 고유한 제한 사항에 대해서도 살펴봅니다. 결론적으로 저자는 다중 트레이트 경계를 허용하려면 여러 vtable 포인터가 필요하다고 제안합니다. 이는 중복성을 초래하지만, 형 변환 문제를 효율적으로 해결합니다.