14

是否有一种标准方法来确定给定 crate 可以使用哪些功能?

我正在尝试阅读 Postgres 时区,表示要使用 cratepostgres = "0.17.0-alpha.1"板条箱with-timewith-chrono功能。

当我在我的 Cargo.toml 中尝试这个时:

[dependencies]
postgres = { version = "0.17.0-alpha.1", features = ["with-time"] }

我收到此错误:

error: failed to select a version for `postgres`.
    ... required by package `mypackage v0.1.0 (/Users/me/repos/mypackage)`
versions that meet the requirements `^0.17.0-alpha.1` are: 0.17.0, 0.17.0-alpha.2, 0.17.0-alpha.1

the package `mypackage` depends on `postgres`, with features: `with-time` but `postgres` does not have these features.

此外,postgres 0.17.0 的 crate 页面没有说明这些功能,所以我什至不知道它们是否应该被支持。

似乎docs.rs 上会有一些关于它的内容?

4

1 回答 1

19

查看可用功能的唯一保证方法是查看板条箱的 Cargo.toml。这通常意味着您需要导航到项目的存储库,找到您感兴趣的版本的正确文件,然后阅读它。

您主要是在寻找该[features]部分,但也寻找任何标记为 的依赖项optional = true,因为可选依赖项算作隐式功能标志

不幸的是,没有要求 crate 作者放置任何关于每个功能标志的作用的文档。好的 crates 将在一个或多个位置记录其功能标志:

  • 作为 Cargo.toml 中的评论
  • 他们的自述文件
  • 他们的文档

除了查看 Cargo.toml 之外,上传到 docs.rs 的 crates 还会显示存在哪些功能标志

crates.io issue #465建议将功能列表也放在 crate 的页面上。

也可以看看:


对于 postgres crate,我们可以从 crates.io 开始,然后单击“repository”进入存储库。然后我们找到正确的标签 ( postgres-v0.17.0),然后读取Cargo.toml

[features]
with-bit-vec-0_6 = ["tokio-postgres/with-bit-vec-0_6"]
with-chrono-0_4 = ["tokio-postgres/with-chrono-0_4"]
with-eui48-0_4 = ["tokio-postgres/with-eui48-0_4"]
with-geo-types-0_4 = ["tokio-postgres/with-geo-types-0_4"]
with-serde_json-1 = ["tokio-postgres/with-serde_json-1"]
with-uuid-0_8 = ["tokio-postgres/with-uuid-0_8"]
于 2020-01-16T00:54:42.000 回答