[Rust] 트레잇 제약
트레잇을 선언할때 옆에 :트레잇을 붙이면, 해당 트레잇을 가지는 타입만 이 트레잇을 구현할 수 있다.

이런식으로 해두면 Bar를 구현한 타입만 Foo를 구현할 수 있다는 것이다.
그래서 시키는대로 하면 잘 돌지만



Bar를 구현하지 않고 Foo만 두면 에러를 던진다.



근데 이건 단순히 제약만 있는게 아니다.
기능도 있다.
예를들어 위의 트레잇 구조에선, Foo는 반드시 Bar도 구현하므로, Foo의 구현부에서 Bar의 메서드를 호출할 수 있다.



그렇다.
참조
https://doc.rust-lang.org/book/ch19-03-advanced-traits.html