我正在尝试在 Rust 中使用 secp256k1 库。我有一个简单的测试程序无法编译,因为它找不到generate_keypair:
extern crate secp256k1;
extern crate rand;
use secp256k1::{Secp256k1, ContextFlag};
use rand::{thread_rng};
fn main() {
let full = Secp256k1::with_caps(ContextFlag::Full);
let (sk, pk) = full.generate_keypair(&mut thread_rng()).unwrap();
}
Run Code Online (Sandbox Code Playgroud)
这无法编译并出现错误:
extern crate secp256k1;
extern crate rand;
use secp256k1::{Secp256k1, ContextFlag};
use rand::{thread_rng};
fn main() {
let full = Secp256k1::with_caps(ContextFlag::Full);
let (sk, pk) = full.generate_keypair(&mut thread_rng()).unwrap();
}
Run Code Online (Sandbox Code Playgroud)
据我所知,我使用该库的方式与其在库的测试中的使用方式类似。
我已经将 rand 回滚到 0.3,将 secp256k1 回滚到 0.6,现在它可以工作了。我对任何关于为什么现在已损坏的想法感兴趣。
docs.rs上 secp256k1 0.8.1 版的文档没有列出任何方法generate_keypair。
如果你查看源代码,你会看到:
/// Generates a random keypair. Convenience function for `key::SecretKey::new`
/// and `key::PublicKey::from_secret_key`; call those functions directly for
/// batch key generation. Requires a signing-capable context.
#[inline]
#[cfg(any(test, feature = "rand"))]
pub fn generate_keypair<R: Rng>(&self, rng: &mut R)
Run Code Online (Sandbox Code Playgroud)
该generate_keypair功能仅在您启用可选rand依赖项时可用。这是在提交 29892960中引入的。不幸的是,这个 crate 的维护者没有将版本标签发布到 git 存储库,因此很难判断这个更改发生在哪个版本。
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |