728x90
반응형
Rust에서 Trait은 다른 언어에서 인터페이스나 추상 클래스와 비슷한 역할을 합니다.
Trait은 메서드와 관련된 동작을 정의하며, 구조체, 열거형, 또는 다른 Trait 등과 함께 사용될 수 있습니다.
Trait을 사용하여 코드를 더 모듈화하고, 코드 재사용성을 높이고, 다형성을 제공할 수 있습니다.
다음은 간단한 예제입니다. 이 예제에서는 Trait을 사용하여 구조체가 지정된 Trait에 해당하는 메서드를 구현할 수 있도록합니다.
trait Animal {
fn name(&self) -> &'static str;
fn make_sound(&self);
}
struct Dog {
name: &'static str,
}
struct Cat {
name: &'static str,
}
impl Animal for Dog {
fn name(&self) -> &'static str {
self.name
}
fn make_sound(&self) {
println!("{} says woof!", self.name);
}
}
impl Animal for Cat {
fn name(&self) -> &'static str {
self.name
}
fn make_sound(&self) {
println!("{} says meow!", self.name);
}
}
fn main() {
let dog = Dog { name: "Buddy" };
let cat = Cat { name: "Fluffy" };
let animals: [&dyn Animal; 2] = [&dog, &cat];
for animal in &animals {
animal.make_sound();
}
}
결과
Buddy says woof!
Fluffy says meow!
위의 코드에서 Animal Trait은 name()과 make_sound() 메서드를 정의합니다. Dog와 Cat 구조체는 이러한 메서드를 구현하여 각 동물이 어떤 소리를 내는지 알려줍니다.
마지막으로, main() 함수에서는 Dog와 Cat 객체를 만들고, 이들을 &dyn Animal Trait으로 캐스팅합니다. 그러면 make_sound() 메서드를 사용하여 각 객체의 소리를 출력할 수 있습니다.
728x90
728x90
BIG
'Programming > Rust' 카테고리의 다른 글
Rust match (0) | 2023.03.16 |
---|---|
Rust 매크로 macro_rules! (0) | 2023.03.15 |
Rust 의 소유권(ownership)이란? (0) | 2023.03.13 |
Rust 의 type : Some 에 대해.. (0) | 2023.03.10 |
maturin, PyO3 - Rust 를 Python 에서 사용하자 (0) | 2023.03.09 |
댓글