我试图在Rust中使用secp256k1库。我有一个简单的测试程序无法编译,因为它找不到generate_keypair
:
#NEXUS
BEGIN DATA;
DIMENSIONS NTAX=2 NCHAR=3;
MATRIX
t1 1(12)2
t2 111
;
END;
无法使用错误进行编译:
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();
}
据我所知,我使用的库与how its used in the library's tests类似。
我已经将rand回滚到0.3并且将secp256k1回滚到0.6现在它可以工作了。我对有关为什么现在已经破裂的任何想法感兴趣。
答案 0 :(得分:4)
docs.rs上的documentation for secp256k1 version 0.8.1未列出任何方法generate_keypair
。
如果您look at the source,您会看到:
/// 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)
generate_keypair
功能仅在启用可选的rand
依赖项时可用。这是在commit 29892960中引入的。不幸的是,这个包的维护者不会将版本标签发布到git存储库,所以很难说出这个版本发生了什么版本。