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

Rust中如何声明文件名含点的模块并正确引用?

解决Rust带后缀点的模块文件导入问题

问题原因

Rust编译器默认会将文件名中的.解析为模块嵌套层级,比如module.suffix1.rs会被认为是module子目录下的suffix1.rs,但你的文件实际直接放在module1目录下,所以原代码的pub use module.suffix1;会找不到对应模块,导致报错。

实现方法

需要通过#[path]属性手动指定模块对应的文件路径,先在module1/mod.rs中声明模块,再导出:

// module1/mod.rs
// 声明模块并绑定到对应的带点文件名
#[path = "module.suffix1.rs"]
pub mod suffix1;

#[path = "module.suffix2.rs"]
pub mod suffix2;

#[path = "module.suffix3.rs"]
pub mod suffix3;

// 直接导出模块(与原代码意图匹配)
pub use self::suffix1;
pub use self::suffix2;
pub use self::suffix3;

// 可选:给模块起别名,贴近你原本的命名习惯
pub use self::suffix1 as module_suffix1;
pub use self::suffix2 as module_suffix2;
pub use self::suffix3 as module_suffix3;

之后在main.rs中就可以正常导入使用:

// main.rs
use module1::suffix1;
// 或者用别名
use module1::module_suffix1;

关于命名规范的说明

Rust官方推荐使用**蛇形命名法(snake_case)**作为文件名和模块名的规范,但带点的文件名本身是允许的——只是需要手动通过#[path]处理模块与文件的绑定,避免编译器的默认嵌套解析逻辑干扰。如果觉得下划线命名杂乱,使用带点的命名方式是可行的,只是需要多写几行模块声明代码。

内容的提问来源于stack exchange,提问作者Roman Mahotskyi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:46:18