首页 > 解决方案 > 在 src 文件夹中使用模块内的模块

问题描述

我想分离应用程序逻辑以保持我的 main.rs 文件干净。我正在为一个简单的项目使用柴油,我在 /src 文件夹中有以下文件

我尝试在 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;

我不明白为什么在这种语言中事情需要如此复杂,或者我可能太愚蠢而无法理解它。请帮我理解。

标签: rust

解决方案


此答案的主要部分已移至重复问题!

所以你的问题是use models;寻找models相对于当前模块(lib)。butmodels不是 的子模块lib,而是 的子模块main。所以引用这些顶级模块的正确方法是这样的:

use crate::{
    models,
    schema::sent_sms,
}; 

补充说明:

  • 如果您有一个可执行项目并且只需要一个模块来包含一些实用程序功能,您通常不会调用它lib,因为该名称是库 crates 根的默认名称。
  • use语句的行为随着 Rust 2018 (≥ 1.31) 的变化而改变)
  • 阅读本指南以获取有关 use 语句以及它们在 Rust 2018 中如何变化的更多信息

推荐阅读