如果我在 Cargo.toml 中指定单独的 lib 目标,是否可以有一个名为“lib”的私有模块?

问题描述 投票:0回答:1

我正在用 Rust 开发一个binary应用程序,其中有一个

lib
帮助程序目录,我想知道如何导出帮助程序函数以进行集成测试,例如

src
|- data_access_layer.rs
|- main.rs
|- lib
   |- util.rs

当我尝试导出 data_access_layer 帮助程序进行集成测试时,我在 Cargo.toml 中添加了一个

[lib]
配置,指向
test_lib.rs

// test_lib.rs

pub mod data_access_layer;

文件结构现在如下所示:

src
|- data_access_layer.rs
|- main.rs
|- lib
   |- util.rs
|- test_lib.rs

...但是当我现在尝试运行(或测试)我的应用程序时,我收到诸如 “在板条箱根中找不到

lib
”之类的错误

这是我的 Cargo.toml 文件。

[package]
name = "api-service"
version = "0.11.14"
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
diesel = { version = "2", features = ["mysql", "extras", "chrono", "r2d2"] }

[dev-dependencies]
pretty_assertions = "1.2.1"


[lib]
name = "test_lib"
path = "src/test_lib.rs"

在这种情况下你会提出什么建议?将我自己的助手存储在这样的碰撞文件名下是不是一个坏主意?我希望我的 TOML 配置能够释放单词

lib
供使用...

rust rust-cargo
1个回答
1
投票

我假设您仍然想使用

src/lib/utils.rs
中的内容,在这种情况下,您仍然需要创建
src/lib.rs
src/lib/mod.rs
并包含以下内容:

// either src/lib.rs or src/lib/mod.rs
pub mod utils;

话虽这么说,对某些内部模块使用名称

lib
并添加自定义
[lib]
部分仍然是一个坏主意,因为它会让其他查看代码的人感到困惑,因此只有在有充分理由的情况下才应该这样做这样做。

© www.soinside.com 2019 - 2024. All rights reserved.