也许这只是困扰我,但在某些情况下,我希望每个模块文件有一个结构。
假设我有一个名为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 模块命名系统如何工作的一些东西。
您可以重新导出模块中的User结构models,pub use user::User;并可选择将user子模块设为私有(以便外部人员models无法访问它)。在外部,该User结构可以被称为models模块的成员crate::models::User。
也可以看看: