如何避免rust中单个结构模块的冗余模块命名



也许这只是困扰我,但在某些情况下,我希望每个模块文件有一个结构。

假设我有一个名为User的结构,如下所示:

struct User {
name: String
}

假设我有一个文件结构,类似于src/models/User.rs中User结构代码所在的位置,如下所示:

src/
models/
user.rs

现在我希望能够使用这样的User结构:

use crate::models::User;

当然这是不可能的。相反,它需要参考:

use crate::models::user::User;

对我来说,这看起来很难看,如果useruser这两个词都是模块路径的一部分,我认为这是多余的。

有没有什么解决方案看起来不像";笨拙的";就像刚才描述的那样?

我可能遗漏了一些关于rust模块命名系统如何工作的内容。

您可以使用pub use user::User;重新导出models模块中的User结构体,并可以选择将user子模块设为私有(以便models之外的任何人都无法访问它(。在外部,User结构体可以称为具有crate::models::Usermodels模块的成员。

另请参阅:

  • 锈蚀参考:use可见性

最新更新