키워드

키워드 (Keywords)

Rust에는 특별한 의미를 가진 예약어들이 있어요. 이번 장에서는 Rust의 키워드가 어떻게 세 갈래로 나뉘는지, 그리고 각각 변수나 타입 이름으로 쓸 수 있는지 없는지를 알아볼게요.

출처: Rust Reference

본문

Rust는 키워드를 세 가지 범주로 나눠요:

  • strict (엄격)
  • reserved (예약)
  • weak (약한)

엄격 키워드 (Strict keywords)

이 키워드들은 올바른 컨텍스트에서만 사용할 수 있어요. 다음 항목들의 이름으로는 쓸 수 없어요:

  • 항목(items)
  • 변수와 함수 매개변수
  • 필드와 변형(variant)
  • 타입 매개변수
  • 라이프타임 매개변수나 루프 레이블
  • 매크로나 속성
  • 매크로 플레이스홀더
  • 크레이트

모든 에디션에서 키워드인 목록은 다음과 같아요:

_, as, async, await, break, const, continue, crate, dyn, else, enum, extern, false, fn, for, if, impl, in, let, loop, match, mod, move, mut, pub, ref, return, self, Self, static, struct, super, trait, true, type, unsafe, use, where, while

2018 에디션 차이점: async, await, dyn 키워드가 2018 에디션에서 추가됐어요.

예약 키워드 (Reserved keywords)

이 키워드들은 아직 사용되지 않지만 미래 사용을 위해 예약되어 있어요. 엄격 키워드와 같은 제약을 받아요. 이렇게 해 두는 이유는 현재 프로그램이 이 키워드들을 쓰지 못하게 함으로써 미래 버전의 Rust와 앞으로 호환되도록 하기 위해서예요.

abstract, become, box, do, final, gen, macro, override, priv, try, typeof, unsized, virtual, yield

2018 에디션 차이점: try 키워드가 2018 에디션에서 예약 키워드로 추가됐어요.

2024 에디션 차이점: gen 키워드가 2024 에디션에서 예약 키워드로 추가됐어요.

약한 키워드 (Weak keywords)

이 키워드들은 특정 컨텍스트에서만 특별한 의미를 가져요. 예를 들어 union이라는 이름으로 변수나 메서드를 선언하는 것이 가능해요.

  • 'static — static 라이프타임에 사용돼요. 제네릭 라이프타임 매개변수나 루프 레이블로는 쓸 수 없어요.
// error[E0262]: invalid lifetime parameter name: `'static`
fn invalid_lifetime_parameter<'static>(s: &'static str) -> &'static str { s }
  • macro_rules — 사용자 정의 매크로를 만드는 데 사용돼요.
  • raw — 원시 대여 연산자에 사용돼요. raw 대여 연산자 형태(예: &raw const expr&raw mut expr)와 일치할 때만 키워드예요.
  • safe — extern 블록에서 의미를 갖는 함수와 static에 사용돼요.
  • union — union을 선언하는 데 사용되고, union 선언에서만 키워드예요.

2018 에디션 차이점: 2015 에디션에서는 dyn::<로 시작하지 않는 경로, 라이프타임, 물음표, for 키워드, 또는 여는 괄호가 뒤따르는 타입 위치에서 키워드였어요. 2018 에디션부터 dyn은 엄격 키워드로 승격됐어요.

더 알아보기 (Learn more)

  • 각 키워드가 실제로 쓰이는 문맥은 The Rust Reference의 각 구문 챕터에서 확인할 수 있어요.
  • 에디션별 차이는 Rust 에디션 가이드에서 더 자세히 다뤄요.