【问题标题】:How do I create a fallible version of include_str?如何创建 include_str 的错误版本?
【发布时间】:2026-01-09 01:40:01
【问题描述】:

include_str!("file") 如果请求的文件不存在,则会在编译时失败。我正在寻找一个在这种情况下返回 None 的宏:try_include_str!("file") -> Option<&'static str>

如果我可以在编译时检查文件是否存在,这将相当简单,但从我看来,std 中没有为此公开宏。 我还能如何实现呢?

【问题讨论】:

  • 我觉得这听起来不对,你可能有 xy 问题。
  • 您也许可以为此使用构建脚本。我没有使用过它们,但 cargo 支持开箱即用地运行构建脚本。

标签: rust macros


【解决方案1】:

您可以使用include_dir 执行此操作,因为它可以让您检查包含的目录中是否存在路径。

缺点:它将包含目录中的所有文件,其中可能包含您根本不打算访问的文件,从而增加了二进制文件的大小。但是如果你可以这样安排,只有你关心的文件在某个目录下,不管它们是否存在,那么它应该做得很好。

【讨论】: