rust - 在 src 文件夹中使用模块内的模块
问题描述
我想分离应用程序逻辑以保持我的 main.rs 文件干净。我正在为一个简单的项目使用柴油,我在 /src 文件夹中有以下文件
- main.rs
- 库文件
- 模型.rs
- 架构.rs
我尝试在 main.rs 文件中声明模块并在lib.rs文件中使用它们,但这会产生以下错误:
未解决的导入
models
;没有models
外部板条箱 [E0432]
main.rs看起来像这样:
pub mod lib;
pub mod schema;
pub mod models;
lib.rs产生错误:
pub use models;
pub use schema::sent_sms;
我不明白为什么在这种语言中事情需要如此复杂,或者我可能太愚蠢而无法理解它。请帮我理解。
解决方案
所以你的问题是use models;
寻找models
相对于当前模块(lib
)。butmodels
不是 的子模块lib
,而是 的子模块main
。所以引用这些顶级模块的正确方法是这样的:
use crate::{
models,
schema::sent_sms,
};
补充说明:
- 如果您有一个可执行项目并且只需要一个模块来包含一些实用程序功能,您通常不会调用它
lib
,因为该名称是库 crates 根的默认名称。 - 该
use
语句的行为随着 Rust 2018 (≥ 1.31) 的变化而改变) - 阅读本指南以获取有关 use 语句以及它们在 Rust 2018 中如何变化的更多信息
推荐阅读
- intellij-idea - 抑制关于 IDEA 中未使用的 Kotlin 属性的警告
- ruby - Ruby 内存使用变得疯狂
- java - ComboBoxTableCell 依赖于 JavaFx 的另一种类型
- c# - 正在拖动的 TreeList 节点字段未在数据库表中更新
- python-3.x - 如何隐藏/删除 mayavi 管道?
- twitter-bootstrap - 建议下拉菜单覆盖日期选择器
- python - django 和 sorl.thumbnail 模型字段的问题
- angular - Angular Universal,如何将带有声明的模块与服务器端执行隔离开来?
- php - 在服务器中访问远程mysql数据库laravel
- python - 检测键盘输入