Макрос file!
Макрос file возвращает строковый литерал,
содержащий имя исходного файла, в котором был
вызван этот макрос. Путь к файлу указывается
относительно корня текущего пакета (крейта).
Макрос не принимает никаких параметров и
раскрывается на этапе компиляции, поэтому
результат известен уже во время сборки программы.
Этот макрос часто используется для отладки, логирования и создания информативных сообщений об ошибках, когда важно знать, в каком именно файле произошло событие.
Синтаксис
file!()
Пример
Давайте выведем имя текущего файла с помощью
макроса file:
fn main()
{
let res = file!();
println!("{}", res);
}
Результат выполнения кода:
"src/main.rs"
Пример
Давайте используем макрос file вместе
с макросом line для создания
информативного сообщения об ошибке:
fn main()
{
let res = format!("error in {} at line {}", file!(), line!());
println!("{}", res);
}
Результат выполнения кода:
"error in src/main.rs at line 3"
Пример
Давайте проверим, что макрос file
возвращает значение типа &'static str:
fn main()
{
let res: &'static str = file!();
println!("{}", res);
}
Результат выполнения кода:
"src/main.rs"
Смотрите также
-
макрос
line!,
который возвращает номер текущей строки -
макрос
column!,
который возвращает номер текущей колонки -
макрос
module_path!,
который возвращает путь текущего модуля -
макрос
macro_rules!,
который позволяет создавать собственные макросы