[Rust] 트레잇 제약

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


image

image 이런식으로 해두면 Bar를 구현한 타입만 Foo를 구현할 수 있다는 것이다.

그래서 시키는대로 하면 잘 돌지만 image

image

image

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

image

image

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

image

image


그렇다.


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