РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
43 of 1245 menu

Макрос module_path!

Макрос module_path! возвращает строковый литерал, содержащий полный путь к модулю, в котором он был вызван. Путь формируется во время компиляции и включает имя крейта и все вложенные модули, разделённые двойным двоеточием. Макрос не принимает параметров и раскрывается в значение типа &'static str.

Этот макрос удобно использовать для логирования, отладки и построения диагностических сообщений, когда важно знать, из какого именно модуля пришёл вызов.

Синтаксис

module_path!()

Пример

Давайте вызовем макрос module_path! в функции main и выведем полученный путь на экран:

fn main() { let res = module_path!(); println!("{}", res); }

Результат выполнения кода:

"crate_name"

Пример

Давайте создадим вложенный модуль inner и вызовем макрос module_path! внутри него:

mod inner { pub fn get_path() -> &'static str { module_path!() } } fn main() { let res = inner::get_path(); println!("{}", res); }

Результат выполнения кода:

"crate_name::inner"

Пример

Давайте используем макрос module_path! вместе с макросом concat!, чтобы построить строку с указанием места вызова:

fn log(message: &str) { let prefix = concat!("[", module_path!(), "] "); println!("{}{}", prefix, message); } fn main() { log("hello"); }

Результат выполнения кода:

"[crate_name] hello"

Смотрите также

  • макрос concat!,
    который объединяет строковые литералы во время компиляции
  • макрос file!,
    который возвращает имя файла с исходным кодом
  • макрос line!,
    который возвращает номер текущей строки
  • макрос column!,
    который возвращает номер текущей колонки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить