Feature gate the Keypair::FromStr impl

Currently we are panicing if neither `global-context` or `alloc`
features are enabled. We do not need to do so, we can just disable the
whole impl of `FromStr`.
This commit is contained in:
Tobin C. Harding 2024-08-07 08:53:17 +10:00
parent fb188ddf4b
commit d600a6cf00
No known key found for this signature in database
GPG Key ID: 40BF9E4C269D6607
1 changed files with 2 additions and 15 deletions

View File

@ -1000,6 +1000,7 @@ impl<'a> From<&'a Keypair> for PublicKey {
fn from(pair: &'a Keypair) -> Self { PublicKey::from_keypair(pair) }
}
#[cfg(any(feature = "global-context", feature = "alloc"))]
impl str::FromStr for Keypair {
type Err = Error;
@ -1011,9 +1012,6 @@ impl str::FromStr for Keypair {
#[cfg(all(not(feature = "global-context"), feature = "alloc"))]
let ctx = Secp256k1::signing_only();
#[cfg(not(any(feature = "global-context", feature = "alloc")))]
let ctx: Secp256k1<crate::SignOnlyPreallocated> = panic!("The previous implementation was panicking too, please enable the global-context feature of rust-secp256k1");
#[allow(clippy::needless_borrow)]
Keypair::from_seckey_str(&ctx, s)
}
@ -1040,7 +1038,7 @@ impl serde::Serialize for Keypair {
#[cfg(feature = "serde")]
#[allow(unused_variables)] // For `data` under some feature combinations (the unconditional panic below).
#[allow(unreachable_code)] // For `Keypair::from_seckey_slice` after unconditional panic.
#[cfg(all(feature = "serde", any(feature = "global-context", feature = "alloc")))]
impl<'de> serde::Deserialize<'de> for Keypair {
fn deserialize<D: serde::Deserializer<'de>>(d: D) -> Result<Self, D::Error> {
if d.is_human_readable() {
@ -1055,9 +1053,6 @@ impl<'de> serde::Deserialize<'de> for Keypair {
#[cfg(all(not(feature = "global-context"), feature = "alloc"))]
let ctx = Secp256k1::signing_only();
#[cfg(not(any(feature = "global-context", feature = "alloc")))]
let ctx: Secp256k1<crate::SignOnlyPreallocated> = panic!("cannot deserialize key pair without a context (please enable either the global-context or alloc feature)");
#[allow(clippy::needless_borrow)]
Keypair::from_seckey_slice(&ctx, data)
});
@ -2423,14 +2418,6 @@ mod test {
.collect::<Vec<_>>();
serde_test::assert_tokens(&keypair.compact(), &tokens);
}
#[test]
#[should_panic(expected = "The previous implementation was panicking too")]
#[cfg(not(any(feature = "alloc", feature = "global-context")))]
fn test_parse_keypair_no_alloc_panic() {
let key_hex = "4242424242424242424242424242424242424242424242424242424242424242";
let _: Keypair = key_hex.parse().expect("We shouldn't even get this far");
}
}
#[cfg(bench)]