也许这只是困扰我,但在某些情况下,我希望每个模块文件有一个结构。
假设我有一个名为User的结构,如下所示:
struct User {
name: String
}
假设我有一个文件结构,类似于src/models/User.rs中User结构代码所在的位置,如下所示:
src/
models/
user.rs
现在我希望能够使用这样的User结构:
use crate::models::User;
当然这是不可能的。相反,它需要参考:
use crate::models::user::User;
对我来说,这看起来很难看,如果user和user这两个词都是模块路径的一部分,我认为这是多余的。
有没有什么解决方案看起来不像";笨拙的";就像刚才描述的那样?
我可能遗漏了一些关于rust模块命名系统如何工作的内容。
您可以使用pub use user::User;
重新导出models
模块中的User
结构体,并可以选择将user
子模块设为私有(以便models
之外的任何人都无法访问它(。在外部,User
结构体可以称为具有crate::models::User
的models
模块的成员。
另请参阅:
-
锈蚀参考:
use
可见性