Macro std::include

1.0.0 · source ·
macro_rules! include {
    ($file:expr $(,)?) => { ... };
}
Expand description

根据上下文将文件解析为表达式或项。

警告: 对于多文件 Rust 项目,include! 宏可能不是您要找的。通常,多文件 Rust 项目使用 modules。 多文件项目和模块在 Rust-by-Example 书籍 here 中进行了解释,模块系统在 Rust Book here 中进行了解释。

包含的文件放在周围的代码 unhygienically 中。 如果包含的文件被解析为表达式,并且变量或函数在两个文件中共享名称,则可能导致变量或函数与包含的文件预期的不同。

包含的文件相对于当前文件定位 (类似于找到模块的方式)。 提供的路径在编译时以特定于平台的方式进行解释。 因此,例如,使用 Windows 路径包含反斜杠 \ 的调用将无法在 Unix 上正确编译。

Uses

include! 宏主要用于两个目的。 它用于包含在单独文件中编写的文档,并且用于包含 build artifacts usually as a result from the build.rs script

当使用 include 宏来包含大量文档时,请记住包含的文件仍然需要是有效的 rust 语法。 也可以将 include_str 宏用作 #![doc = include_str!("...")] (在模块级别) 或 #[doc = include_str!("...")] (在项目级别) 以包含来自纯文本或 markdown 文件的文档。

Examples

假设在同一目录中有两个文件,其内容如下:

文件 ‘monkeys.in’:

['🙈', '🙊', '🙉']
    .iter()
    .cycle()
    .take(6)
    .collect::<String>()
Run

文件 ‘main.rs’:

fn main() {
    let my_string = include!("monkeys.in");
    assert_eq!("🙈🙊🙉🙈🙊🙉", my_string);
    println!("{my_string}");
}
Run

编译 ‘main.rs’ 并运行生成的二进制文件将打印 “🙈🙊🙉🙈🙊🙉”。