Search

다형성을 사용하기 위한 Trait 개념 예제

다형성을 활용하기 위한 Rust의 Trait(트레이트) 개념을 배워봅시다. Trait은 Rust에서 유용하게 사용되며, 다른 언어에서 인터페이스와 유사한 역할을 합니다.
Trait 개념 에 대해 참조하면 더 이해하기 쉽습니다.
trait Shape { fn area(&self) -> f64; } struct Rectangle { width: f64, height: f64, } impl Shape for Rectangle { fn area(&self) -> f64 { self.width * self.height } } struct Circle { radius: f64, } impl Shape for Circle { fn area(&self) -> f64 { std::f64::consts::PI * self.radius * self.radius } } fn main() { let rect = Rectangle { width: 10.0, height: 20.0 }; let circle = Circle { radius: 5.0 }; println!("The area of the rectangle is {}", rect.area()); println!("The area of the circle is {}", circle.area()); }
Rust
복사
The area of the rectangle is 200 The area of the circle is 78.53981633974483
Shell
복사
먼저, Shape trait를 정의합니다. 이 traitarea 메소드를 가지며, 이는 구체적인 구현에 따라 다른 반환값을 가질 수 있습니다.
그 후, RectangleCircle 구조체를 각각 정의합니다. 이 구조체들은 Shape trait를 구현합니다. 각 구조체는 Shape trait가 요구하는 area 메소드를 구현합니다. Rectangle 구조체는 widthheight 필드를 가지며, area 메소드는 너비와 높이를 곱한 값을 반환합니다. Circle 구조체는 반지름(radius) 필드를 가지며, area 메소드는 반지름을 제곱하여 원의 면적을 계산합니다.
마지막으로, main 함수에서 RectangleCircle 구조체를 생성하고, 각각의 area 메소드를 호출하여 면적을 출력합니다.
이 예제를 통해 Rust에서 Trait을 활용하여 다형성을 구현하는 방법을 배웠습니다. Trait은 Rust에서 매우 유용하며, 추상화를 가능하게 하여 코드 재사용성을 높이는 데에 큰 역할을 합니다.

컬렉션 찾아보기

시리즈