在src文件夹中的模块内部使用模块

时间:2019-02-07 15:52:55

标签: rust

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

  • main.rs
  • lib.rs
  • models.rs
  • schema.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;

我不明白为什么用这种语言会使事情变得如此复杂,或者我太愚蠢而无法理解。 请帮助我理解。

1 个答案:

答案 0 :(得分:0)

The main part of this answer was moved to the duplicate question!

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

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

其他说明:

  • 如果您有一个可执行项目,而只需要一个模块来包含一些实用程序功能,通常就不会将其称为lib,因为该名称是库箱根目录的默认名称。
  • use语句的行为在Rust 2018(≥1.31)中发生了变化
  • 阅读this guide,了解有关使用声明及其在Rust 2018中的更改的更多信息