2 个版本
0.1.2 | 2024年3月5日 |
---|---|
0.1.1 | 2024年3月2日 |
0.1.0 |
|
#23 in #file-exists
每月 31 次下载
6KB
include_file_path
宏库
此 Rust 项目提供了一个过程宏 include_file_path!
,它返回文件或目录的绝对路径。该宏接受相对路径和绝对路径,如果指定的文件不存在,则会导致 panic。
用法
将以下内容添加到您的 Cargo.toml
[dependencies]
include_file_path = { path = "0.1" }
然后,在您的 Rust 代码中,您可以使用 include_file_path! 宏如下所示
const FILE: &'static str = include_file_path!("src/main.rs");
这将设置 FILE
为宏调用文件相对于 src/main.rs
文件的绝对路径。
工作原理
include_file_path!
宏通过解析输入路径并检查它是否为绝对路径来工作。如果是绝对路径,则直接返回该路径。如果不是,它将路径与宏调用文件的目录连接起来以获取绝对路径。
该宏使用 proc_macro::Span::call_site().source_file().path()
函数来获取宏调用文件的路径。目前此函数仅通过 proc_macro_span
功能在 nightly 版本中可用
在返回路径之前,宏会检查文件是否存在。如果文件不存在,则会以文件不存在的信息进行 panic。
许可证
本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。
依赖项
~300–760KB
~18K SLoC