绑定的特点是不在库纳错误[复制]

问题描述 投票:-1回答:1

这个问题已经在这里有一个答案:

我试图使用生成库secp256k1一个密钥对。

在官方文档,我发现这样的代码:

use rand::OsRng;
use secp256k1::{Secp256k1, Message};

let secp = Secp256k1::new();
let mut rng = OsRng::new().expect("OsRng");
let (secret_key, public_key) = secp.generate_keypair(&mut rng);

我把这个在我的Cargo.toml

[dependencies]
rand = "0.6.1"

[dependencies.secp256k1]
features = ["rand"]
version = "0.12.0"

不过,我得到这个编译错误:

| secp.generate_keypair(&mut rng);
|      ^^^^^^^^^^^^^^^^ the trait `secp256k1::rand::Rng` is not implemented for 
                        `std::result::Result<rand::rngs::OsRng, rand::Error>`

我很新生锈,我试图去了解它,但我觉得它非常困难。请解释一下什么是我的错误。谢谢!

random rust traits
1个回答
2
投票

这似乎是一箱版本不匹配。在rand箱的最新版本是0.6.1,但secp256k1 0.12.0取决于很多旧版本 - 0.4.3

一个快速的解决办法是使用rand的旧版本:

[dependencies]
rand = "0.4.3"

并考虑要求secp256k1的作者更新他们的依赖。

我发现这个问题的方法是在Cargo.lock文件,其中包含所有应用程序所使用的依赖关系的实际版本的搜索。

© www.soinside.com 2019 - 2024. All rights reserved.