为什么 solicit 0.4.4 尝试使用 openssl 0.9.12,即使我的 Cargo.toml 中有 openssl 0.7.14?

Why does solicit 0.4.4 attempt to use openssl 0.9.12 even though I have openssl 0.7.14 in my Cargo.toml?

我有一个简单的项目,使用 Solicit 示例通过 HTTPS 发出请求。我的 Cargo.toml 有:

[package]
name = "test"
version = "0.1.0"
authors = ["einchear"]

[dependencies.openssl]
version = "0.7.14"
features = ["tlsv1_2", "npn"]

[dependencies.solicit]
version = "0.4.4"
features = ["tls"]

当我尝试 运行 cargo build 时,错误是:

error: Package `openssl v0.9.12` does not have these features: `npn, tlsv1_2`

为什么是 0.9.12 而不是 0.7.14?

Solicit 已经一年半没有发布新版本了——0.4.4 于 2015-09-07 发布。版本 0.4.3(0.4.4 出于某种原因没有 git 标签)requires any version of openssl,所以它只是引入了最新的可能版本。 您的 Cargo.toml 中有什么并不重要,因为重要的是 Solicit 的依赖关系。

甚至 不可能 将具有 * 版本依赖性的 crate 发布到 crates.io!

当前的 Solicit 主版本有 pinned to openssl 0.6仍然是旧版本。

目前看来,Solicit 并不是一个积极开发的库。您可能希望研究替代解决方案或考虑贡献补丁来更新依赖项。

如果您不需要任何其他需要 OpenSSL 支持的 crate,您可以使用 Solicit 的主分支版本,而只使用旧版本的 OpenSSL。