Rust는 trait으로 다형성을 지원합니다. trait은 메소드의 집합을 struct 자료형에 연결할 수 있게 해줍니다.
먼저 trait 안에 메소드 원형을 정의합니다:
trait MyTrait {
fn foo(&self);
...
}
struct가 trait을 구현할 때, 실제 자료형이 무엇인지 알지 못하더라도
그 trait 자료형을 통해 간접적으로 struct와 상호작용할 수 있도록 (예: &dyn MyTrait
) 협약을 맺게 됩니다.
struct의 구현된 trait 메소드들은 구현 블록 안에 정의됩니다:
impl MyTrait for MyStruct {
fn foo(&self) {
...
}
...
}