키워드
키워드 (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 에디션 가이드에서 더 자세히 다뤄요.