Rust 在单个项目中使用main.rs和lib.rs,无法导入库中没有lib文件夹的模块
虽然有一些问题与此相关,但对我来说似乎都很困惑 我有一个以下结构的项目 当在main.rs中导入cli模块时,它可以正常工作,但当我尝试在lib.rs中执行相同操作时,会出现以下错误Rust 在单个项目中使用main.rs和lib.rs,无法导入库中没有lib文件夹的模块,rust,rust-cargo,Rust,Rust Cargo,虽然有一些问题与此相关,但对我来说似乎都很困惑 我有一个以下结构的项目 当在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文件
= 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"
[软件包]
name=“猫”
version=“0.0.1”
license=“MIT”
作者=[“Akshay Naik”]
edition=“2018”
[依赖关系]
smol={version=“0.1”,features=[“tokioo2”]}
futures=“0.3.4”
clap=“~2.27.0”
更新:目标是将所有逻辑移到lib.rs,并从main.rs调用单个函数
代码:
删除行
mod lib代码>并调用feline::start()解决了这个问题
我在rustlang论坛上得到了答案。排队
“当你使用mod关键字时,你是在创建一个模块,而不是导入一个模块”,这让人大开眼界
请访问下面的链接查看完整答案
lib文件夹是一个模块,lib/cli是lib的子模块。因此,在lib/mod.rs文件中,您应该导出cli模块,或者当您想要访问cli时,您应该使用lib::cli::which.related问题:@MarioSantini它可以从main.rs中工作,我肯定在mod.rs中导出了它,您可以在@MarioSantini上看到完整的源代码,我正在尝试做与rust book cli一章中所示相同的事情,创建minigrep时,第一个链接是不相关的,因为我已经在导出模块,第二个链接具有不同的目录结构。简言之,我的问题是为什么我不能在lib.rs中导入与main.rs类似的模块,任何文档或博客对此进行解释