[Rust] trait object에 Clone 구현하기
이런 트레잇이 있고

이걸 Box에 trait object로 구조체필드에 넣은 다음, 그 구조체에 Clone을 구현시킨다고 가정하자.

사실 그렇게 특별한 사용 케이스도 아니라고 할 수 있다. Box도 Clone이 가능하기 때문이다.
하지만 이 경우에는 오류를 던진다.
Box는 문제가 없지만, dyn IExpression이라는 dyn 표현식 자체에 대해서는 Clone이 구현되어있지 않다는 것이다.
그렇다고 해서 trait bound로 Clone을 준다고 해서 해결되는 문제도 아니다.
이걸 해결하려면 dyn_clone이라는 외부 크레잇을 사용해주면 된다.
딱 이러한 케이스를 해결하기 위한 목적에서 존재하는 모듈이다.
DynClone이란 트레잇을 trait bount로 걸어주고, 매크로 호출 한번만 해주면 된다.

그럼 잘 될 것이다.

참조
https://stackoverflow.com/questions/30353462/how-to-clone-a-struct-storing-a-boxed-trait-object