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

使用Rust的iroh库生成SecretKey时遭遇编译错误求助

使用Rust的iroh库生成SecretKey时遭遇编译错误求助

看起来你遇到的是rand版本不兼容导致的编译问题——虽然错误提示里看似矛盾地说ThreadRng没实现CryptoRng,但实际上是你手动指定的rand 0.10.0和iroh 0.96.1依赖的rand/rand_core版本不一致,编译器把两个版本的CryptoRng trait当成了完全不同的东西,才抛出了这个误导性的错误。

给你两个具体的解决思路:

方案一:移除手动指定的rand依赖,让Cargo自动匹配兼容版本

直接删掉Cargo.toml里的rand = "0.10.0"这一行,Cargo会自动根据iroh的依赖要求拉取适配的rand版本。修改后的Cargo.toml如下:

[package]
name = "p2p-chatroom"
version = "0.1.0"
edition = "2024"

[dependencies]
anyhow = "1.0.102"
iroh = "0.96.1"
tokio = "1.49.0"

方案二:手动指定与iroh兼容的rand版本

先运行下面的命令查看iroh实际依赖的rand版本:

cargo tree | grep rand

比如输出里如果显示iroh依赖rand 0.9.x,就把Cargo.toml里的rand版本改成对应的版本号(比如rand = "0.9.0")。

另外,建议把代码里的rand::rng()换成rand库的标准调用方式rand::thread_rng(),避免版本差异带来的别名问题,修改后的main.rs:

use iroh::SecretKey;
use rand::thread_rng;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let mut rng = thread_rng();
    let secret = SecretKey::generate(&mut rng);

    Ok(())
}

做完上面的修改后,重新运行cargo build应该就能成功编译了。

备注:内容来源于stack exchange,提问作者Fix448

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:20:26