Rust의 열거형이란 ?
어떤 값이 여러개의 가능한 값의 집합 중 하나라는 것을 나타내는 방법
예를들면 "직사각형, 원, 삼각형을 포함하는 다양한 모양들의 집합 중 하나"
1. enum ( 열거형 )
Rust언어에서 열거형은 여러 가능한 변종을 가질 수 있는 데이터 타입을 정의하는 데 사용됨
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
ChangeColor(i32, i32, i32),
}
Message 열거형안에 네 가지 변종 존재
Quit, Move, Write, ChangeColor로 각각 다른 데이터 타입을 가질수 있습니다.
2. Option<T>
Rust언어에서 열거형은 값이 있거나 없을 수 있는 상황을 표현하는데 사용
러스트에서는 Option<T>를 사용해 명시적으로 처리해줘야합니다. (다른 언어에서는 null값)
enum Option<T> {
None, // None => None,
Some(T),
}
Option<T>에는 두가지 변종이 존재함.
Some(T) 와 None.Some(T)는 어떤 값 T를 가지며, None 값이 없음을 나타냅니다.
let number: Option<i32> = Some(5);
let no_number: Option<i32> = None;
위 코드는 Option<T> 를 사용해서 정수 값이 있을수도 있고 없을 수도 있음을 표현합니다.
3. match 제어 흐름
match 표현식은 열거형의 값을 패턴 매칭을 통해 분기하며 모든 경우를 처리해야합니다.
let optional = Some(5);
match optional {
Some(i) => println!("값은 {}입니다.", i),
None => println!("값이 없습니다."),
}
match 표현식에서 optional 값이 Some(i) 인지 None 값인지를 확인하고, 각각에 대해 코드를 실행합니다.
4. if let 제어 흐름
if let은 match의 간결한 버전입니다.
특정 패턴에만 반응을 하며 다른 경우는 무시하고싶을때 사용됩니다.
let optional = Some(5);
if let Some(i) = optional {
println!("값은 {}입니다.", i);
}
if let 표현식은 optional 값이 Some(i)인 경우에만 코드를 실행하며, None인 경우는 무시합니다.
match와 달리 if let은 모든 경우를 처리하지 않아도 됩니다.
모든 경우를 처리할때는 match 사용
특정 패턴에 대해서 처리할때만 if let사용
'Rust-Language' 카테고리의 다른 글
| Rust-Language 구조체 (2) | 2023.12.30 |
|---|---|
| Rust-Language 소유권 개념 (2) | 2023.12.27 |
| Rust-language 프로그래밍 개념 (2) | 2023.12.27 |