小编Ale*_*Sed的帖子

如何在 Cargo.toml “依赖项”和“开发依赖项”下拉取具有不同功能的依赖项?

假设您有一个名为“dep”的依赖项,它具有两个名为 f1 和 f2 的功能。我想在正常构建板条箱时将“dep”与 f1 功能一起使用,但在构建用于测试的板条箱时将它与 f2 一起使用。我知道 dev-dependencies 是我们测试所需的那些,并且认为 Cargo.toml 的以下结构应该可以工作:

    [dev-dependencies]
    dep = { version = "1.0.0", features = ["f2"] }
    
    [dependencies]
    dep = { version = "1.0.0", features = ["f1"] }
    
Run Code Online (Sandbox Code Playgroud)

但是,看起来一旦我用“f1”拉入“dep”,编译器就会忽略在 dev-dependencies 部分下提到的相同依赖项。另一方面,将依赖项设为“可选”并不能解决问题,因为这样根本不会为测试引入“dep”。关于如何解决这个问题或很好地规避它的任何想法?

PS:我注意到这里正在跟踪这个问题:https : //github.com/rust-lang/cargo/issues/7916。所以目前,我只能期待受访者提供好的解决方法。

rust rust-cargo toml

12
推荐指数
1
解决办法
288
查看次数

为什么开发依赖项不能是可选的?

正如这里明确提到的,开发依赖项不能是可选的。其根本原因是什么?

这是可选开发依赖项可能有用且重要的示例:假设您有一个包 A,它需要包 B 来进行测试。然而,当您测试包 A 时,在某些情况下,您指定了一个特定的功能: cargo test --package A --features "F1" 当选择功能“F1”时,您可以选择以不同的方式指定 B 的开发依赖性,这似乎是合法的。但是,如果您的开发依赖性已经被拉入(非可选),您似乎无法控制它!

rust rust-cargo

6
推荐指数
0
解决办法
1493
查看次数

标签 统计

rust ×2

rust-cargo ×2

toml ×1