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’:
文件 ‘main.rs’:
ⓘ
fn main() {
let my_string = include!("monkeys.in");
assert_eq!("🙈🙊🙉🙈🙊🙉", my_string);
println!("{my_string}");
}
Run编译 ‘main.rs’ 并运行生成的二进制文件将打印 “🙈🙊🙉🙈🙊🙉”。