728x90
Rust기초알기(6) - 트레이트와 제네릭
6.1 트레이트 개념과 사용법
6.2 제네릭 타입과 함수
6.3 트레이트의 상속과 구현
[목차] Rust Programming - Rust 기초 알기 목차.Zip
#Rust프로그래밍 #Rust언어기초 #Rust기초문법 #Rust기초알기
Rust기초 알기 - 6.3 트레이트의 상속과 구현
Rust에서 트레이트는 인터페이스와 비슷한 역할을 합니다. 트레이트는 관련 있는 동작의 집합을 정의하며, 해당 동작을 구현하는 타입은 해당 트레이트를 구현합니다. 트레이트는 코드의 재사용성과 다형성을 촉진하며, 특정 동작이나 기능을 공유하는 타입들 간에 일관성을 제공합니다.
트레이트를 이용한 상속
트레이트 상속은 한 트레이트가 다른 트레이트의 동작을 상속받을 수 있도록 하는 개념입니다. 이를 통해 상속된 트레이트의 모든 동작을 구현하는 것이 가능해집니다. 트레이트 상속은 코드 중복을 방지하고, 코드의 일관성을 유지하며, 트레이트 계층 구조를 만들 수 있도록 합니다.
트레이트 상속은 trait 키워드를 사용하여 구현되며, 구현되는 트레이트를 슈퍼트레이트(supertrait)라고 합니다. 슈퍼트레이트의 동작을 상속받는 트레이트는 : SuperTrait 구문을 사용하여 명시합니다.
트레이트 상속의 사용
trait Printable {
fn print(&self);
}
trait Debuggable: Printable {
fn debug(&self);
}
struct MyType;
impl Printable for MyType {
fn print(&self) {
println!("Printing...");
}
}
impl Debuggable for MyType {
fn debug(&self) {
println!("Debugging...");
}
}
// trait를 사용하는 메인함수
fn main() {
let my_type = MyType;
my_type.print(); // "Printing..." 출력
my_type.debug(); // "Debugging..." 출력
}
- Printable 트레이트는 print 메서드를 정의하고, Debuggable 트레이트는 debug 메서드를 정의합니다. Debuggable 트레이트는 Printable 트레이트를 상속받기 위해 `Debuggable: Printable` 구문을 사용했습니다.
- MyType 구조체는 Printable과 Debuggable 트레이트를 구현합니다. MyType 구조체에서는 Printable의 print 메서드와 Debuggable의 debug 메서드를 각각 구현합니다.
- 트레이트 상속을 통해 Debuggable 트레이트는 Printable 트레이트의 모든 동작을 상속받게 됩니다. Printable의 print 메서드를 함께 상속받습니다.
- 구현 블록에서는 Printable의 print 메서드와 Debuggable의 debug 메서드를 각각 구현합니다.
- MyType 구조체는 Printable과 Debuggable 트레이트를 구현하고 있습니다. MyType의 인스턴스는 print과 debug 메서드를 모두 사용할 수 있게 됩니다.
- MyType 인스턴스를 생성한 후, print 메서드와 debug 메서드를 호출하여 각각 "Printing..."과 "Debugging..."이라는 메시지가 출력됩니다.
728x90
반응형
'Programming' 카테고리의 다른 글
블록체인 개발자를 위한 Truffle 설치와 스마트 계약 개발 환경 구성 (truffle, ganache-cli, solc ) (14) | 2023.07.28 |
---|---|
SSL/TLS 인증서 오류를 무시하는 linux 명령모음 - SSL certificate problem (80) | 2023.07.27 |
(블록체인) 토큰증권 표준 ERC-1400 스마트컨트랙트를 알아보자 (88) | 2023.07.20 |
Rust기초 알기 - 6.1 트레이트 개념과 사용법 (60) | 2023.07.11 |
Rust기초 알기 - 5.3 메서드와 연관 함수 (60) | 2023.07.06 |
Rust기초 알기 - 5.2 열거형 정의와 사용 (35) | 2023.07.04 |
Rust기초 알기 - 5.1 구조체 정의와 사용 (50) | 2023.07.02 |