You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rust中导入深层目录下的模块?代码示例求助

解决Rust模块导入问题

核心结论

不需要修改Cargo.toml,只需要添加两个mod.rs文件并调整导入路径即可完成模块导入,这是Rust内部模块系统的标准用法。

步骤1:创建必要的mod.rs文件

你的目录结构需要补充两个mod.rs文件,最终结构如下:

src/
├── main.rs
└── user/
    ├── mod.rs
    └── entity/
        ├── mod.rs
        └── user.rs

编写src/user/mod.rs

这个文件用来声明entity是user模块的子模块:

pub mod entity;

编写src/user/entity/mod.rs

这个文件用来声明user是entity模块的子模块,同时可以直接导出User结构体简化导入:

pub mod user;
// 可选:直接导出User,这样上层模块可以直接引用User而不用写user::User
pub use self::user::User;

步骤2:调整main.rs的导入语句

根据entity/mod.rs的写法,有两种导入方式:

方式1(推荐,使用pub use导出)

如果src/user/entity/mod.rs中添加了pub use self::user::User,那么你的原导入语句可以直接使用:

use user::entity::User;

fn main() {
    // 你的原有代码保持不变
    let mut _user = User::new("John".to_string(), "j@j.com".to_string(), 30, true);
    // ... 后续代码省略
}

方式2(不使用pub use)

如果没加pub use,需要完整写出模块路径:

use user::entity::user::User;

fn main() {
    // 原有代码不变
}

为什么要这么做?

Rust的模块系统遵循“文件即模块”的规则,但目录作为模块时,需要通过mod.rs告诉编译器该目录下的子模块结构。每个mod.rs相当于目录的“入口文件”,负责暴露内部的子模块和类型,让上层模块可以访问。

内容的提问来源于stack exchange,提问作者Abner Matheus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:53:23