Rust项目添加Schnorr依赖遇编译错误求助
问题原因与解决方案
原因
你使用的schnorr = "0.0.20"是一个停止维护的老旧 crate,它的依赖链中包含packed_simd_2——这个库使用了Rust仅在nightly/预览版才开放的不稳定语言特性(如adt_const_params、stdsimd等),而你当前使用的是Rust稳定版(stable channel),稳定版明确禁止使用这类未稳定的特性,因此编译失败。rayon-core的编译错误是依赖链冲突引发的连锁问题。
解决方案
放弃这个老旧的schnorr crate,替换为维护活跃、支持稳定版的Schnorr签名实现:
推荐替代库
- secp256k1:比特币生态广泛使用的椭圆曲线库,支持Schnorr签名,完全兼容稳定版Rust。
在Cargo.toml中添加:secp256k1 = { version = "0.28", features = ["schnorr", "rand"] } - schnorrkel:基于Ristretto曲线的安全Schnorr签名实现,同样支持稳定版。
在Cargo.toml中添加:schnorrkel = "0.11"
操作步骤
- 删除Cargo.toml中的
schnorr = "0.0.20"配置 - 添加上述推荐库的配置
- 执行
cargo update更新依赖缓存 - 重新运行
cargo run即可正常编译
内容的提问来源于stack exchange,提问作者Zubayr
相关产品推荐
相关产品推荐

