RUST:是否有更优雅的方式来导入 mod?
RUST: Is there a more elegent way to import mod?
这是我的项目结构:
/src
-main.rs
-sub_mod.rs
-sub_folder/
--mod.rs
在 sub_mod.rs 中,如果我像这样导入 sub_folder,cargo 不会警告我:
#[path = "./sub_folder/mod.rs"]
mod sub_folder;
但我做不到
mod sub_folder
但在 main.rs 中有效!!
在 sub_mod.rs 中是否有更温和的方法来导入 sub_folder?
你几乎不应该使用 #[path]
属性。 它用于将源代码放在 非标准 位置,并且它使用它很容易出错。相反,请确保您的 mod
声明和文件位置相互匹配。
所以,如果路径是src/sub_folder/mod.rs
(或src/sub_folder.rs
),那么你应该在main.rs
中声明模块,因为main.rs
(或lib.rs
如果你这样做的话)是板条箱根,所有 top-level 模块被声明的地方。即main.rs
包含
mod sub_folder;
mod sub_mod;
这两个模块是板条箱中的兄弟。然后为了 sub_mod
到 import (不定义)sub_folder
,它应该包含:
use super::sub_folder;
或者,等价地(绝对而不是相对路径),
use crate::sub_folder;
提示:如果您使用的是与 rust-analyzer
兼容的编辑器,您可以让它帮助您正确创建模块。不要创建文件;取而代之的是,在现有源代码的某个地方写入 mod my_module;
,等待“丢失文件”错误出现,然后 运行 提供的修复程序“创建模块”。 rust-analyzer 将为您在正确的位置创建文件。
这是我的项目结构:
/src
-main.rs
-sub_mod.rs
-sub_folder/
--mod.rs
在 sub_mod.rs 中,如果我像这样导入 sub_folder,cargo 不会警告我:
#[path = "./sub_folder/mod.rs"]
mod sub_folder;
但我做不到
mod sub_folder
但在 main.rs 中有效!!
在 sub_mod.rs 中是否有更温和的方法来导入 sub_folder?
你几乎不应该使用 #[path]
属性。 它用于将源代码放在 非标准 位置,并且它使用它很容易出错。相反,请确保您的 mod
声明和文件位置相互匹配。
所以,如果路径是src/sub_folder/mod.rs
(或src/sub_folder.rs
),那么你应该在main.rs
中声明模块,因为main.rs
(或lib.rs
如果你这样做的话)是板条箱根,所有 top-level 模块被声明的地方。即main.rs
包含
mod sub_folder;
mod sub_mod;
这两个模块是板条箱中的兄弟。然后为了 sub_mod
到 import (不定义)sub_folder
,它应该包含:
use super::sub_folder;
或者,等价地(绝对而不是相对路径),
use crate::sub_folder;
提示:如果您使用的是与 rust-analyzer
兼容的编辑器,您可以让它帮助您正确创建模块。不要创建文件;取而代之的是,在现有源代码的某个地方写入 mod my_module;
,等待“丢失文件”错误出现,然后 运行 提供的修复程序“创建模块”。 rust-analyzer 将为您在正确的位置创建文件。