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

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

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

struct User {
    name: String
}

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

src/
    models/
           user.rs

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

use crate::models::User;

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

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

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

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

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

回答

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

也可以看看:

  • Rust 参考:use可见性

以上是如何避免Rust中单结构模块的冗余模块命名?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>