Rust 如何根据构建概要文件切换依赖项

Rust 如何根据构建概要文件切换依赖项,rust,rust-cargo,Rust,Rust Cargo,当我在发布概要文件中构建时,我想使用依赖项中的功能,而在测试/开发时我不想使用任何功能 例如,依赖关系通常定义为: [depenencies.my_dep] version = "*" 但当我在发布概要文件中构建时,我希望它是 [depenencies.my_dep] version = "*" features = [my_feature] 从货物文档中,我可以看出,这只能用于平台目标。是否有一种方法可用于基于配置文件的配置?cargo不直接支持您想要的内容。我看到两种选择 A.使用允许测

当我在发布概要文件中构建时,我想使用依赖项中的功能,而在测试/开发时我不想使用任何功能

例如,依赖关系通常定义为:

[depenencies.my_dep]
version = "*"
但当我在发布概要文件中构建时,我希望它是

[depenencies.my_dep]
version = "*"
features = [my_feature]

从货物文档中,我可以看出,这只能用于平台目标。是否有一种方法可用于基于配置文件的配置?

cargo
不直接支持您想要的内容。我看到两种选择

A.使用允许测试具有不同依赖项的
dev依赖项
而不是调试/发布


B.有一个Cargo-mock.toml和一个Cargo-release.toml。使用
cargo build--manifest path./cargo-.toml

在它们之间切换,虽然这不是对您的问题的完美答案,但是
debug\u assertions
宏的源代码中使用了类似于
cfg(debug\u assertions)
的内容,该宏基于调试和发布模式进行条件编译。我读了这篇文章后不久就用过了这听起来是个坏主意。。。为什么您不想发布与您测试的代码相同的代码?我使用一个机箱来执行一些分散的网络操作。因此,在开发时,我使用库的模拟网络功能进行开发和测试。然后连接到实际的网络进行最终测试和发布虽然这不是你想要的,为什么不直接使用Amethyst的
默认功能=[“我的功能”]
和使用
货物
s标志
--无默认功能
?一个很好的例子是Amethyst的
无慢速安全检查
功能(从技术上讲,Rendy)最好在发布版本中启用此功能,而不是调试版本