特性 `rand_core::CryptoRng` 没有为 `OsRng` 实现
The trait `rand_core::CryptoRng` is not implemented for `OsRng`
我一直在尝试实现以下文档中给出的示例:https://docs.rs/ed25519-dalek/1.0.1/ed25519_dalek/
我的代码很简单:
extern crate rand;
extern crate ed25519_dalek;
use rand::rngs::OsRng;
use ed25519_dalek::Keypair;
fn main() {
let mut csprng = OsRng{};
let keypair: Keypair = Keypair::generate(&mut csprng);
}
但是当我尝试 运行 时,我收到一条错误消息,指出 CryptoRng
特性未在 OsRng
中实现
11 | let keypair: Keypair = Keypair::generate(&mut csprng);
| ^^^^^^^^^^^ the trait `rand_core::CryptoRng` is not implemented for `OsRng`
然而,CryptoRng
只是一个标记特征,我看到它确实有一个空的实现 OsRng
...
那么这里可能是什么问题?
通常,当您收到这些令人困惑的消息时,当它明显满足时说“不满足特征绑定”,或者当它明显是正确的类型时说“错误的类型”,您应该始终检查包版本。截至目前 (ed25519-dalek v1.0.1),it depends on rand 0.7.0(您也可以在 crates.io 上找到它)。您正在使用更新版本的 rand,具有“更新”版本的特征,并且在您提供 0.8.0 特征时它正在寻找 0.7.0 特征。
解决办法?将 rand 降级到 0.7.0 或使用 ,并为 ec25519-dalek 使用旧版本。
我一直在尝试实现以下文档中给出的示例:https://docs.rs/ed25519-dalek/1.0.1/ed25519_dalek/
我的代码很简单:
extern crate rand;
extern crate ed25519_dalek;
use rand::rngs::OsRng;
use ed25519_dalek::Keypair;
fn main() {
let mut csprng = OsRng{};
let keypair: Keypair = Keypair::generate(&mut csprng);
}
但是当我尝试 运行 时,我收到一条错误消息,指出 CryptoRng
特性未在 OsRng
11 | let keypair: Keypair = Keypair::generate(&mut csprng);
| ^^^^^^^^^^^ the trait `rand_core::CryptoRng` is not implemented for `OsRng`
然而,CryptoRng
只是一个标记特征,我看到它确实有一个空的实现 OsRng
...
那么这里可能是什么问题?
通常,当您收到这些令人困惑的消息时,当它明显满足时说“不满足特征绑定”,或者当它明显是正确的类型时说“错误的类型”,您应该始终检查包版本。截至目前 (ed25519-dalek v1.0.1),it depends on rand 0.7.0(您也可以在 crates.io 上找到它)。您正在使用更新版本的 rand,具有“更新”版本的特征,并且在您提供 0.8.0 特征时它正在寻找 0.7.0 特征。
解决办法?将 rand 降级到 0.7.0 或使用