rust match _ other

agnusdei·2025년 1월 29일

Rust에서 match 표현식에서 사용하는 _ (언더스코어)와 other (임의의 변수명)의 차이점은 다음과 같습니다.


1. _ (언더스코어) - 완전히 무시하는 패턴

match dice_roll {
    3 => add_fancy_hat(),
    7 => remove_fancy_hat(),
    _ => reroll(),  // 어떤 값이 와도 실행됨 (변수로 저장 안 함)
}
  • _"모든 나머지 경우"를 뜻하는 와일드카드 패턴입니다.
  • 하지만 _ 자체는 값을 저장하지 않습니다. 즉, reroll()을 실행하되, dice_roll의 값을 변수로 사용하지 못합니다.

2. other (임의의 변수명) - 값을 저장하는 패턴

match dice_roll {
    3 => add_fancy_hat(),
    7 => remove_fancy_hat(),
    other => println!("Got a different number: {}", other), // 값을 저장하고 사용 가능
}
  • _ 대신 other처럼 변수를 사용하면, 그 값을 저장해서 활용할 수 있습니다.
  • 즉, dice_roll3이나 7이 아니면, other에 해당 값이 저장되며, println!에서 사용할 수 있습니다.

차이점 요약

패턴역할값 저장 가능 여부
_어떤 값이 와도 매칭되지만, 값은 무시함❌ (사용 불가)
other (변수)어떤 값이 와도 매칭되고, 값을 변수에 저장✅ (사용 가능)

언제 _를 쓰고 언제 other을 써야 하나?

  • 값이 필요 없으면 _ 사용 → "이 값 신경 안 씀"
  • 값이 필요하면 변수 사용 → "이 값 사용해야 함"

예제:

match dice_roll {
    1 => println!("Got a 1!"),
    6 => println!("Got a 6!"),
    _ => println!("Got something else!"),  // 값 필요 없음
}

match dice_roll {
    1 => println!("Got a 1!"),
    6 => println!("Got a 6!"),
    other => println!("Got a {}", other),  // 값 필요함
}
profile
DevSecOps Pentest🚩

0개의 댓글