特征界限不满足库中的错误
the trait bound is not satisfied error in library
我正在尝试使用 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>`
我是 Rust 的新手,我试图理解它,但我发现它非常困难。请解释我的错误是什么。谢谢!
这似乎是 crate 版本不匹配。 rand
crate 的最新版本是 0.6.1
,但 secp256k1 0.12.0
依赖于更旧的版本 - 0.4.3
.
快速修复是使用旧版本 rand
:
[dependencies]
rand = "0.4.3"
并考虑要求 secp256k1
的作者更新他们的依赖项。
我找到这个的方法是在 Cargo.lock
文件中搜索,其中包含您的应用程序使用的所有实际依赖项版本。
我正在尝试使用 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>`
我是 Rust 的新手,我试图理解它,但我发现它非常困难。请解释我的错误是什么。谢谢!
这似乎是 crate 版本不匹配。 rand
crate 的最新版本是 0.6.1
,但 secp256k1 0.12.0
依赖于更旧的版本 - 0.4.3
.
快速修复是使用旧版本 rand
:
[dependencies]
rand = "0.4.3"
并考虑要求 secp256k1
的作者更新他们的依赖项。
我找到这个的方法是在 Cargo.lock
文件中搜索,其中包含您的应用程序使用的所有实际依赖项版本。