Необработанные идентификаторы
Rust, как и многие другие языки программирования, имеет концепцию "ключевых слов". Эти идентификаторы имеют особое значение для языка, и поэтому их нельзя использовать в таких местах, как имена переменных, имена функций и других. Необработанные идентификаторы позволяют использовать ключевые слова там, где они обычно не допускаются. Это особенно полезно, когда Rust вводит новые ключевые слова, и в библиотеке, скомпилированной с более старой версией Rust, есть переменная или функция с тем же именем, что и ключевое слово, введенное в новой версии.
Например, рассмотрим пакет foo
, скомпилированный с версией Rust 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();
}