You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级argon2-rs至0.5.3遇OsRng错误,如何适配rand 0.9?

解决方案

1. 升级chrono-tz到兼容rand 0.9的版本

把Cargo.toml里的chrono-tz从0.10.1升级到最新稳定版(比如0.13.0),这个版本不再依赖rand 0.8,会适配rand 0.9系列。修改后:

chrono-tz = "0.13.0"

2. 强制统一rand_core版本

在Cargo.toml里添加[patch.crates-io]配置,强制所有依赖使用和rand 0.9匹配的rand_core 0.7.x版本,解决多版本冲突问题:

[patch.crates-io]
rand_core = { version = "0.7.6" }

rand 0.9.x对应的rand_core版本是0.7.x,这里用0.7.6是rand 0.9.5依赖的稳定版,同系列其他版本也可以。

3. 修正代码中的OsRng导入与使用

保持用rand::rngs::OsRng的导入,此时因为rand_core版本统一,rand::rngs::OsRng会自动实现argon2::password_hash::rand_core::CryptoRng trait。代码示例:

use rand::rngs::OsRng;
use argon2::password_hash::SaltString;

// 生成salt的代码可正常运行
let salt = SaltString::generate(&mut OsRng);

4. 验证依赖并构建

运行以下命令更新依赖并验证问题是否解决:

cargo update
cargo check

如果还有问题,可运行cargo tree -p rand_core查看依赖树,确认所有依赖都使用了指定的0.7.x版本。

备选方案:无法升级chrono-tz时

如果因为项目限制不能升级chrono-tz,可尝试在Cargo.toml中禁用它的默认特性,去掉对rand的依赖(前提是项目用不到chrono-tz依赖rand的功能):

chrono-tz = { version = "0.10.1", default-features = false }

内容的提问来源于stack exchange,提问作者Code4R7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:35:03