如何解决 Cargo 中的循环依赖关系?

Mau*_*cco 7 rust rust-cargo

我有板条箱oauth2(v4.1.0)和sqlx[json](v0.5.5):

[dependencies]
oauth2 = "4.1.0"
sqlx = { version = "0.5.5", features = ["json"] }
Run Code Online (Sandbox Code Playgroud)

当尝试构建时,我收到以下错误:

error: cyclic package dependency: package `ahash v0.7.4` depends on itself. Cycle:
package `ahash v0.7.4`
    ... which is depended on by `hashbrown v0.11.2`
    ... which is depended on by `indexmap v1.7.0`
    ... which is depended on by `serde_json v1.0.64`
    ... which is depended on by `wasm-bindgen v0.2.74`
    ... which is depended on by `js-sys v0.3.51`
    ... which is depended on by `getrandom v0.2.3`
    ... which is depended on by `ahash v0.7.4`
Run Code Online (Sandbox Code Playgroud)

仅当我激活json上的功能标志时才会发生这种情况sqlx。我该如何解决此类问题?是否有任何解决方法可以使这些库/功能一起工作?有哪些替代方案?

elb*_*tus 3

经过反复尝试后,我找到的唯一解决方案是将锁定文件更新到最新版本,使用:

cargo update
Run Code Online (Sandbox Code Playgroud)

在那之后,cargo clean && cargo build工作就像一个魅力!看起来一些旧的补丁版本似乎有冲突,但是 Cargo.lock 的变化太大,无法追踪它是哪个箱子组合。我希望这对其他人有帮助!

编辑:经过更多的沟通和搜索,我直接在 ahash github 项目中提到了一个问题: https: //github.com/tkaitchuck/aHash/issues/95

据此,实际的官方“解决方法”是将索引映射箱固定到:

indexmap = "=1.6.2"
Run Code Online (Sandbox Code Playgroud)

然而,当查看我的 Cargo.lock 文件时,它现在似乎可以使用:

indexmap = "1.7"
Run Code Online (Sandbox Code Playgroud)