원본 식별자
러스트에는 다른 프로그래밍 언어와 같이 "키워드"라는 컨셉이 존재합니다.
이 식별자는 언어 수준에서 특정한 의미를 가지고, 이에 따라 변수명이나 함수명
등등에 보통은 사용할 수 없습니다.
원본 식별자(r#
)를 이용하면 보통이라면 이용할 수 없는 키워드를 식별자로 이용할 수 있게 해줍니다.
이 방식은 러스트에서 새로운 키워드를 발표함에 따라 이전 에디션의 러스트에서 사용한 변수/함수 식별자가
최신 에디션에서 키워드로 지정되었고 이를 활용해야 할 때 유용합니다.
예를 들어, 크레이트 foo
가 러스트 2015 에디션에서 컴파일되었고 try
라는 이름의
함수를 노출한다고 해봅시다. 이 키워드는 2018 에디션에서 키워드로 지정되었기 때문에,
원본 식별자 문법 없이는 그 함수를 더이상 활용할 수 없게 됩니다.
extern crate foo;
fn main() {
foo::try();
}
이를 컴파일하면 이런 오류가 발생합니다:
error: expected identifier, found keyword `try`
--> src/main.rs:4:4
|
4 | foo::try();
| ^^^ expected identifier, found keyword
이를 해결하기 위해 원본 식별자를 이용해 작성하면 이렇게 됩니다:
extern crate foo;
fn main() {
foo::r#try();
}