[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 개발자들 사이에서 패턴 매칭은 매우 인기 있는 기능 중 하나로 손꼽힙니다.

참고 자료