如何仅在测试中使用依赖项的某个功能?

14

假设我有一个包含可选特性的依赖箱子,这个特性主要用于测试,但是这个箱子本身是整个代码的依赖。是否可能指示cargo仅在进行测试时使用该特性?

在我的具体示例中,可选特性取决于quickcheck,我不一定希望将其作为我的包裹用户的强制依赖关系。

1个回答

10

您可以像常规依赖项一样,使用功能作为开发依赖项。对于quickcheck,其唯一的功能是collect_impls,因此您可以将其添加到Cargo.toml中:

[dev-dependencies.quickcheck]
version = "*"
features = ["collect_impls"]

注意:实际上,这个错误是在quickcheck内部错误地执行的。我在0.1.29修复了它


所以在我的情况下,quickcheck本身是一个开发依赖项,但也是我的依赖项功能的依赖项。具体来说,我为nalgebra中的类型实现了“Arbitrary”(https://github.com/sebcrozet/nalgebra/pull/74)。然而,当我尝试像你建议的那样依赖于该功能时,编译器无法看到可选的impls。我觉得我还是缺少了一些东西。 - Emilia Bopp
没关系,我的问题是我在将 Github 上的 QuickCheck 依赖项与 nalgebra 的 crates.io 依赖项混合使用。太微妙了... - Emilia Bopp
如果正常的依赖关系不是一个 semver 依赖关系(version = "..."),只需将相同的路径或相同的 Git 存储库 URL 放入即可。 - timotree

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接