#file-path #file-exists #relative-path #absolute #macro #proc-macro #input

已删除 include_file_path

宏,用于返回指定文件的绝对路径

2 个版本

0.1.2 2024年3月5日
0.1.1 2024年3月2日
0.1.0 2024年3月1日

#23 in #file-exists

每月 31 次下载

MIT 许可证

6KB

include_file_path 宏库

Latest Version docs.rs

此 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