如何判断每个板条箱有哪些 "features" 可用?

How to tell what "features" are available per crate?

是否有标准方法来确定给定板条箱的可用功能?

我正在尝试阅读 Postgres 时区,this 说要使用 crate postgres = "0.17.0-alpha.1" crate 的 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.

此外,crate page for postgres 0.17.0 对这些功能只字未提,所以我什至不知道是否应该支持它们。

好像会有on docs.rs的东西?

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

您主要是在查找 [features] 部分,但也在查找标记为 optional = trueoptional dependencies count as an implicit feature flag.

的任何依赖项

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

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

除了查看 Cargo.toml,上传到 docs.rs 的 crate 将 show what feature flags exist

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

另请参阅:


对于 postgres crate,我们可以 start at crates.io, then click "repository" to go to the repository. We then find the right tag (postgres-v0.17.0), then read the 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"]

我个人使用 cargo-editcargo-feature 箱子 https://crates.io/crates/cargo-feature