生識別子
Rust には、多くのプログラミング言語と同様に「キーワード」という概念があります。 これらの識別子は言語にとって意味を持つため、変数名、関数名、その他の場所では使用できません。 生識別子を使用すると、通常は許可されない場所でキーワードを使用できます。 これは、Rust が新しいキーワードを導入し、古いエディションの Rust を使用しているライブラリに、新しいエディションで導入されたキーワードと同じ名前の変数や関数がある場合に特に便利です。
たとえば、2015 エディションの Rust でコンパイルされたクレート foo が、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();
}