如何避免 Rust 中单结构模块的冗余模块命名?

Lon*_*ike 3 module rust

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

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

struct User {
    name: String
}
Run Code Online (Sandbox Code Playgroud)

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

src/
    models/
           user.rs
Run Code Online (Sandbox Code Playgroud)

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

use crate::models::User;
Run Code Online (Sandbox Code Playgroud)

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

use crate::models::user::User;
Run Code Online (Sandbox Code Playgroud)

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

是否有任何解决方案似乎不像刚才描述的那样“笨拙”?

也可能是我错过了关于 rust 模块命名系统如何工作的一些东西。

Evi*_*Tak 6

您可以重新导出模块中的User结构modelspub use user::User;并可选择将user子模块设为私有(以便外部人员models无法访问它)。在外部,该User结构可以被称为models模块的成员crate::models::User

也可以看看: