[rust] Rust 언어의 패턴 매칭
Rust는 강력한 패턴 매칭 기능을 제공하여 코드의 가독성을 높이고 오류를 줄일 수 있습니다. 이 기능은 match 키워드를 사용하여 변수의 값을 examplar(예시)들과 비교하는 방식으로 동작합니다.
1. match 키워드 기본 구조
fn main() {
let number = 42;
match number {
0 => println!("Origin"),
1..=100 => println!("Between 1 and 100"),
_ => println!("Something else"),
}
}
위의 코드는 number
변수를 match
키워드를 사용하여 세 가지 패턴으로 비교합니다. 첫 번째 패턴은 숫자 0과 비교하고, 두 번째 패턴은 1부터 100 사이의 숫자와 비교하며, 나머지는 언더스코어(_
)로 나타내어 나머지 값을 의미합니다.
2. 패턴 매칭의 활용
2.1. 구조체와 열거형
Rust에서는 match 키워드를 사용하여 구조체나 열거형에 대한 패턴 매칭도 가능합니다.
struct Point {
x: i32,
y: i32,
}
fn main() {
let p = Point { x: 0, y: 7 };
match p {
Point { x, y: 0 } => println!("On the x axis at {}", x),
Point { x: 0, y } => println!("On the y axis at {}", y),
Point { x, y } => println!("On neither axis at ({}, {})", x, y),
}
}
2.2. 튜플
튜플도 여러 값을 동시에 비교하여 match 키워드를 활용할 수 있습니다.
fn main() {
let pair = (0, -2);
match pair {
(0, y) => println!("First element is 0 and second is {}", y),
(x, 0) => println!("First element is {} and second is 0", x),
_ => println!("It doesn't match any of the patterns"),
}
}
3. 패턴 매칭의 장점
Rust의 패턴 매칭은 코드의 가독성을 높이고 간결한 코드 작성을 가능하게 합니다. 또한 모든 경우의 수를 꼼꼼히 처리하여 오류를 줄일 수 있도록 도와줍니다.
이러한 이점들로 인해 Rust 개발자들 사이에서 패턴 매칭은 매우 인기 있는 기능 중 하나로 손꼽힙니다.
참고 자료
- The Rust Programming Language - Rust 공식 문서의 패턴 매칭 섹션
- Rust By Example - Rust 패턴 매칭에 대한 예제와 설명