Programming

Rust기초 알기 - 6.1 트레이트 개념과 사용법

IT오이시이 2023. 7. 11. 05:35
728x90

 

Rust기초알기(6) - 트레이트와 제네릭

6.1 트레이트 개념과 사용법
6.2 제네릭 타입과 함수
6.3 트레이트의 상속과 구현

 

[목차] Rust Programming - Rust 기초 알기 목차.Zip

#Rust프로그래밍  #Rust언어기초 #Rust기초문법 #Rust기초알기


 
 

Rust기초 알기 - 6.1 트레이트 개념과 사용법

Rust 언어의 트레이트(trait)는 인터페이스와 비슷한 개념입니다. 트레이트는 메서드의 집합을 정의하며, 이러한 메서드들을 구조체나 열거형과 같은 다른 타입에서 구현할 수 있습니다. 이를 통해 Rust에서 다형성(polymorphism)을 지원하고, 코드의 재사용성과 유연성을 높일 수 있습니다.
 

트레이트를 정의하는 방법

trait MyTrait {
    // 트레이트 메서드들의 시그니처를 정의합니다.
    fn method1(&self);
    fn method2(&mut self, parameter: u32) -> u32 {
        // 메서드의 기본 구현을 제공할 수도 있습니다.
        parameter + 10
    }
}

 
트레이트를 사용하는 방법은 다음과 같이 트레이트를 작성하고 메인함수에서 트레이트의 인스턴스를 호출 하면 됩니다.

1. 트레이트를 작성

 트레이트를 사용하는 방법으로 우선 MyStruct라는 구조체를 선언합니다.  impl 키워드를 사용하여 MyTrait for MyStruct 형태로 구현을 정의합니다. MyTrait에 구현할 메서드들의 내용을 작성 합니다.

struct MyStruct {}

impl MyTrait for MyStruct {
    fn method1(&self) {
        // 구현할 로직을 작성합니다.
        println!("Method 1");
    }
    
    fn method2(&mut self, parameter: u32) -> u32 {
        // 기본 구현을 오버라이드할 수도 있습니다.
        println!("Method 2");
        parameter * 2
    }
}

 

2. 트레이트를 사용

MyStruct의 인스턴스를 생성하고, 트레이트의 메서드들을 호출할 수 있습니다.
my_struct.method1()은 MyTrait의 method1을 호출하고, my_struct.method2(5)는 MyTrait의 method2를 호출하여 결과를 출력합니다.

fn main() {
    let my_struct = MyStruct {};
    
    my_struct.method1();
    let result = my_struct.method2(5);
    
    println!("Result: {}", result);
}

 

트레이트(Trait) 이용한 예시

다음은 Printable이라는 트레이트를 정의하고, print 메서드를 가진 타입에 대해 해당 트레이트를 구현하는 예입니다:

trait Printable {
    fn print(&self);
}

struct Person {
    name: String,
}

impl Printable for Person {
    fn print(&self) {
        println!("Name: {}", self.name);
    }
}

fn main() {
    let person = Person {
        name: String::from("Alice"),
    };

    person.print();
}

 

  •  Printable 트레이트는 print 메서드를 정의합니다. 
  • Person 구조체는 Printable 트레이트를 구현하여 print 메서드를 제공합니다. 
  • person.print()를 호출하여 Person 구조체의 print 메서드를 실행할 수 있습니다.

 

728x90
반응형