Rust中如何从同一父目录导入模块?circle.rs导入ray.rs报错求助
Rust同一父目录下模块导入问题解决办法
你的问题出在对mod关键字的理解上——mod ray;是用来声明当前模块的子模块的,而ray.rs和circle.rs是同级的兄弟模块,不是父子关系,所以Rust会去circle目录下找ray相关文件,自然找不到,才报那个错。
按下面的步骤改就能解决:
在utils目录下创建mod.rs文件
这个文件是用来把utils目录声明为一个模块,并导出里面的子模块。内容写:pub mod circle; pub mod ray;在circle.rs里引用ray模块
因为两者都是utils的子模块,有两种引用方式:- 用
super指代父模块(也就是utils):use super::ray; - 用 crate 根路径直接引用(结构复杂时更清晰):
use crate::utils::ray;
- 用
(如果需要在main.rs里使用)声明utils模块
在main.rs开头加上:mod utils; // 按需导入具体模块 use utils::{circle, ray};
这样rust-analyzer的报错就会消失,模块也能正常引用了。
内容的提问来源于stack exchange,提问作者Judah Beethoven
相关产品推荐
相关产品推荐

