0 rust rust-cargo rust-analyzer
这是我的项目结构:
\n.\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.rs\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sub_folder\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mod.rs\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sub_mod.rs\nRun Code Online (Sandbox Code Playgroud)\n在 中sub_mod.rs,如果我像这样导入,则货物不会警告我sub_folder/:
.\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.rs\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sub_folder\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mod.rs\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sub_mod.rs\nRun Code Online (Sandbox Code Playgroud)\n但我做不到
\n#[path = "./sub_folder/mod.rs"]\nmod sub_folder;\nRun Code Online (Sandbox Code Playgroud)\n但它main.rs有效!
有没有更温和的方式sub_mod.rs导入sub_folder/?
您几乎不应该使用该#[path]属性。它用于将源代码放在非标准位置,使用它很容易出错。相反,请确保您的mod声明和文件位置相互匹配。
因此,如果路径是src/sub_folder/mod.rs(或src/sub_folder.rs),那么您应该在 中声明该模块,main.rs因为main.rs(或者lib.rs如果您正在这样做)是 crate 根,即声明所有顶级模块的位置。也就是说,main.rs包含
mod sub_folder;\nmod sub_mod;\nRun Code Online (Sandbox Code Playgroud)\n这两个模块在板条箱中是兄弟模块。然后为了sub_mod导入(而不是定义),它应该包含:sub_folder
use super::sub_folder;\nRun Code Online (Sandbox Code Playgroud)\n或者,等效地(绝对路径而不是相对路径),
\nuse crate::sub_folder;\nRun Code Online (Sandbox Code Playgroud)\n提示:如果您使用与 兼容的编辑器rust-analyzer,您可以让它帮助您正确创建模块。不要创建文件;相反,请mod my_module;在现有源代码中的某个位置写入,等待出现“丢失文件”错误,然后运行提供的修复 \xe2\x80\x9cCreate module\xe2\x80\x9d。rust-analyzer 会在正确的位置为您创建该文件。
| 归档时间: |
|
| 查看次数: |
1263 次 |
| 最近记录: |