首页 > 解决方案 > 在单个项目中使用 main.rs 和 lib.rs,不能在没有 lib 文件夹的库中导入模块

问题描述

尽管有一些与此相关的问题,但对我来说似乎都令人困惑。

我有一个具有以下结构的项目。

在 main.rs 中导入 cli 模块时,它可以正常工作,但是当我尝试在 lib.rs 中执行相同操作时,出现以下错误

  = help: name the file either lib/cli.rs or lib/cli/mod.rs inside the directory "src"

但我想将它保存在 cli 文件夹中,因为我必须在 cli 文件夹中添加更多代码。为什么 cargo 要求我创建 lib 文件夹?

下面是我的 toml 文件。

[package]
name = "feline"
version = "0.0.1"
license = "MIT"
authors = ["Akshay Naik <inbox.akshaynaik@gmail.com>"]
edition = "2018"

[dependencies]
smol = { version = "0.1", features = ["tokio02"] }
futures = "0.3.4"
clap = "~2.27.0"

更新:Thea 目标是将所有逻辑移至 lib.rs 并从 main.rs 调用单个函数

代码:

https://github.com/nakshay/feline/tree/lib-use/src

标签: rustrust-cargo

解决方案


删除线mod lib;并调用 feline::start() 解决了这个问题,

我在 rustlang 论坛上得到了答案。线。

“当您使用 mod 关键字时,您是在创建一个模块,而不是导入一个模块”,这让您大开眼界。

通过访问以下链接查看完整答案。

https://users.rust-lang.org/t/main-rs-and-lib-rs-at-same-level/42499


推荐阅读