Rust 기본, 열거형 (Enumerations)
러스트에서 enum은 단순한 상수 집합 이상의 기능을 제공합니다.
러스트의 enum은 각 변형(variant)이 데이터를 직접 포함할 수 있게 해주며 패턴 매칭 (match) 을 사용하여 이 데이터에 접근할 수 있습니다. 인스턴스 생성 시, 사용자는 이중 콜론('::') 문법을 사용하여 특정 변형을 명시적으로 선택하고, 필요한 데이터를 제공해야합니다.
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
}
let msg = Message::Write(String::from("Hello")); // 인스턴스 생성 시, 필요한 데이터 제공.
이 예에서 'Message::Write' 변형은 'String' 타입의 데이터를 받습니다.
또한 enum은 제한된 카테고리가 필요할 경우 주로 사용합니다.
#[derive(Debug)] // enum 타입에 디버그 트레이트 구현을 자동 생성 : 디버그 출력 목적
enum Message {
Move { x: i32, y: i32 },
Echo(String),
ChangeColor(u8, u8, u8),
Quit
}
impl Message {
fn call(&self) {
println!("{:?}", self); // 디버그 출력은 :? 사용한다.
}
}
fn main() {
// 다른 언어의 상수와 달리 Rust enum은 인스턴스를 생성하여 높은 활용성을 가진다.
let messages = [
Message::Move { x: 10, y: 30 }, // 인스턴스 생성 시, 필요한 데이터 제공.
Message::Echo(String::from("hello world")),
Message::ChangeColor(200, 255, 255),
Message::Quit,
];
for message in &messages {
message.call();
}
}
'개발 > 러스트 (Rust)' 카테고리의 다른 글
Rust 기본 : 벡터 (Vector) (0) | 2024.08.26 |
---|---|
Rust 기본 : 결과 열거형 (Result enum) (0) | 2024.08.21 |
Rust 기본, 옵션 열거형 (Option enum) (0) | 2024.08.17 |
Rust 기본, 패턴 매칭 표현식 (Match expression) (0) | 2024.08.13 |
Rust 기본, 구조체 (Struct) Tuple structs (0) | 2024.08.06 |
Rust 기본, 구조체 (Struct) Implementation blocks (0) | 2024.08.01 |
Rust 기본, 구조체 (Struct) (0) | 2024.07.24 |
Rust 기본, to_string() vs to_owned() (0) | 2024.07.20 |