상세 컨텐츠

본문 제목

36. 패턴 매칭의 즐거움

RUST 온보딩/러스트를 배우고 만들자_초보자

by 러스트코리아 2026. 8. 21. 22:14

본문

반응형

안녕하세요! 드디어 러스트(Rust)의 꽃이라고 불리는 **'패턴 매칭'**의 세계에 오신 것을 환영합니다. 이름은 조금 어려워 보일 수 있지만, 사실 우리 일상속에서 매일 하고 있는 아주 즐거운 놀이와 같답니다.

 

### 🧩 패턴 매칭이란 무엇일까요?

 

어릴 적 가지고 놀던 **'모양 맞추기 상자'**를 떠올려 보세요. 별 모양 블록은 별 모양 구멍에, 동그란 블록은 동그란 구멍에 쏙 넣어야 하죠?

 

러스트의 **패턴 매칭(Pattern Matching, 어떤 값의 형태를 확인하고 그에 맞는 동작을 선택하는 것)**도 이와 똑같습니다. "이 데이터가 어떤 모양이지?"라고 물어보고, 그 모양에 딱 맞는 코드를 실행하는 것이죠.

---

### 📦 `match`라는 마법의 도구

 

러스트에서는 `match`(매치, 일치하는 것을 찾는 명령어)라는 키워드를 사용해 패턴 매칭을 합니다. 이 도구는 아주 꼼꼼해서, 우리가 모든 경우의 수를 다 생각했는지 확인해 주는 든든한 친구예요.

 

예를 들어, 오늘의 날씨에 따라 인사를 건네는 프로그램을 만들어 볼까요?

 

enum Weather { // Weather(날씨)라는 이름의 여러 상태를 가진 주머니(상자)를 만듭니다.
    Sunny,     // 맑음 상태
    Rainy,     // 비 옴 상태
    Snowy,     // 눈 옴 상태
}

fn main() {
    let today = Weather::Sunny; // 오늘의 날씨를 '맑음'으로 정합니다.

    match today { // 'today'가 어떤 모양인지 확인해 봅시다!
        Weather::Sunny => println!("햇살이 눈부셔요! ☀️"), // 맑음일 때 실행됩니다.
        Weather::Rainy => println!("우산을 챙기세요! ☔"), // 비가 올 때 실행됩니다.
        Weather::Snowy => println!("눈싸움 하러 가요! ☃️"), // 눈이 올 때 실행됩니다.
    }
}

 

**코드 설명:**

1. `match today`는 "오늘 날씨(`today`)가 어떤 모양인지 하나씩 맞춰보자!"라는 뜻이에요.

2. `=>` 화살표는 "이 모양이 맞으면 오른쪽의 일을 해!"라는 의미입니다.

3. 각 줄을 **팔(Arm, 분기점)**이라고 부르는데, 상자의 구멍 하나하나라고 생각하면 쉬워요.

---

### 🛡️ 빈틈을 허용하지 않는 꼼꼼함

 

러스트의 패턴 매칭이 즐거운 진짜 이유는 **'안전함'** 때문입니다. 만약 우리가 `Snowy`(눈)의 경우를 깜빡하고 적지 않으면, 러스트는 "잠깐! 눈이 올 때는 어떻게 할지 안 알려줬잖아!"라며 친절하게 알려줍니다. (이를 **Exhaustive checking, 모든 경우를 빠짐없이 확인하는 것**이라고 해요.)

 

만약 "나머지 모든 경우"를 한꺼번에 처리하고 싶다면 `_`(언더바, 나머지 전부를 뜻하는 기호)를 사용하면 됩니다.

let my_number = 7; // 숫자를 하나 정합니다.

match my_number {
    1 => println!("하나뿐인 소중한 숫자네요!"), // 1일 때 실행
    _ => println!("그 외의 멋진 숫자군요!"), // 1이 아닌 모든 경우에 실행
}

 

---

### ✨ 패턴 매칭의 즐거움 포인트!

1. **실수가 없어져요:** 모든 경우를 다 다루었는지 러스트가 확인해 주니 마음이 편안해집니다.

2. **읽기 쉬워요:** `if`문을 여러 번 쓰는 것보다 훨씬 깔끔하고 한눈에 들어옵니다.

3. **복잡한 것도 척척:** 나중에는 단순한 모양뿐만 아니라, 데이터 안에 들어있는 값까지 쏙쏙 뽑아낼 수 있게 된답니다.

 

패턴 매칭은 러스트를 배우면서 가장 "와, 편리하다!"라고 느끼게 될 부분 중 하나예요. 마치 딱 맞는 퍼즐 조각을 찾아 끼우는 것처럼 즐겁게 코딩해 보세요!

반응형

관련글 더보기