gpt4 book ai didi

rust - 为什么只有main.rs可以声明mod?

转载 作者:行者123 更新时间:2023-12-03 08:20:03 25 4
gpt4 key购买 nike

main.rs
main2.rs
file1.rs
src/something.rs
Cargo.toml

main.rs 上,执行 mod file1 有效,但在 main2.rs 上执行 mod file1 会导致结果至

file not found for module `file1`

为什么只有main.rs可以用mod声明同级文件?

最佳答案

新模块可以从 main.rslib.rs 声明。第一个用于二进制包,后者用于库。需要注意的是,如果一个包包含这两个文件,那么它将有两个同名的包(一个库和一个二进制文件)。如果您在 src/bin 中定义 crate root(如下所述),您还可以拥有多个二进制 crate - 每个文件将被视为单独的二进制 crate。这在the rust book中有详细解释。 .

这两个文件很特殊 - 它们被称为crate root,因为它们形成了一个树状结构。每个模块都应该是它的一部分。您不能在该树之外定义模块。这又解释了in the book .

因此,为了能够从 main2.rs 中定义新模块,它必须是 crate root - 即它必须有一个 main() 并位于 /src/bin/main2.rs 中,或者它必须是模块树的一部分,从某些 crate 根部下降。

关于rust - 为什么只有main.rs可以声明mod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68121609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com