Raw identifiers

원시 식별자는 키워드 충돌을 호출부까지 복구한다

match나 try처럼 언어가 확보한 단어를 이름으로 써야 할 때는 정의와 호출 양쪽에서 r# 접두사를 붙여 식별자로 해석하게 만든다.

match 예제로 보는 복구 흐름

identifier escape

키워드로 선언

fn match(...)

match는 패턴 매칭 문법에 쓰이는 현재 키워드라 함수 이름이 될 수 없다.

컴파일러 메시지

expected identifier

오류는 단어 자체가 아니라 식별자가 와야 할 자리에 키워드가 왔음을 말한다.

정의에 접두사

fn r#match(...)

r#을 붙이면 예약된 단어를 이름으로 쓰겠다는 의도가 문법에 남는다.

호출도 같은 이름

r#match("foo", s)

정의뿐 아니라 main에서 호출할 때도 같은 원시 식별자 형태를 사용한다.

충돌 오류 r# 호출
에디션 연결

2015 에디션 라이브러리의 try 함수처럼 새 에디션에서 키워드가 된 이름도 r#try 형태로 호출하면 기존 API와 함께 사용할 수 있다.