_ 표현식

_ 표현식

구조 분해 할당을 할 때 "여기는 안 쓸 거야"라는 자리를 표시하고 싶을 때가 있어요. _ 표현식이 바로 그 역할을 해요. 기호 _로 나타내는 이 표현식은 구조 분해 할당에서 **자리 표시자(placeholder)**를 뜻해요.

출처: Rust Reference

본문

_ 표현식은 할당의 왼쪽(left-hand side)에서만 나타날 수 있어요. 오른쪽 값은 그대로 쓰고, 왼쪽에서 버릴 자리만 _로 표시하는 거죠.

여기서 중요한 건, 이 _가 패턴에서 쓰는 **와일드카드 패턴(wildcard pattern)**과는 다르다는 점이에요. 이름은 비슷해 보여도 서로 다른 문법 요소예요.

_ 표현식의 예시를 볼게요.

#![allow(unused)]
fn main() {
let p = (1, 2);
let mut a = 0;
(_, a) = p;

struct Position {
 x: u32,
 y: u32,
}

Position { x: a, y: _ } = Position{ x: 2, y: 3 };

// unused result, assignment to `_` used to declare intent and remove a warning
_ = 2 + 2;
// triggers unused_must_use warning
// 2 + 2;

// equivalent technique using a wildcard pattern in a let-binding
let _ = 2 + 2;
}

마지막 두 예시가 잘 보여주는데요. _ = 2 + 2;처럼 할당의 왼쪽에 _를 두면 결과를 일부러 버리고 싶다는 의도를 명확히 드러내면서, unused_must_use 같은 경고를 피할 수 있어요. 반면 let _ = 2 + 2;는 let 바인딩에서 와일드카드 패턴을 쓰는 똑같은 목적의 또 다른 방법이에요.

더 알아보기

  • 구조 분해 할당 전반과 패턴 매칭을 살펴보면 _와 와일드카드 패턴의 쓰임새가 더 선명해져요.