Tour of Rust 목차

다형성과 Trait

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) {
        ...
    }
    ... 
}