при его генерации) без nightly получить полный путь к файлу, где этот макрос применён?
Очень похоже, что никак, потому что даже std::file!() не даёт полного пути, только relative to crate's root.
ну и, более того, он даёт путь к тому месту, где макрос определён, а не где применён
О, я как-то находил, но забыл. Точно работает внутри прокмакро, но точно не работает в build.rs. Посмотрите env vars у карго
всё, что env, будет выполняться во время компиляции макроса, а не во время выполнения
Ну, там есть варианты, потому что в случае обычного macro_rules, вроде такого: use std; macro_rules! foo { () => { $crate::std::file!() }; } оно выдаст файл, в котором был применён foo, а не файл, в котором был определён foo.
потому что оно вставится в то место, где бы применён foo
Обсуждают сегодня