Implement TryFrom<Key> for ProprietaryKey
TryFrom` became available in Rust 1.34 so we can use it now we have bumped our MSRV. Implement `TryFrom<Key>` for `ProprietaryKey` and deprecate the `from_key` method.
This commit is contained in:
parent
5c49fe775f
commit
6b7b440cff
|
@ -12,6 +12,8 @@
|
|||
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||
//
|
||||
|
||||
use core::convert::TryFrom;
|
||||
|
||||
use crate::prelude::*;
|
||||
|
||||
use crate::io::{self, Cursor, Read};
|
||||
|
@ -191,7 +193,7 @@ impl PartiallySignedTransaction {
|
|||
return Err(Error::InvalidKey(pair.key).into())
|
||||
}
|
||||
}
|
||||
PSBT_GLOBAL_PROPRIETARY => match proprietary.entry(raw::ProprietaryKey::from_key(pair.key.clone())?) {
|
||||
PSBT_GLOBAL_PROPRIETARY => match proprietary.entry(raw::ProprietaryKey::try_from(pair.key.clone())?) {
|
||||
btree_map::Entry::Vacant(empty_key) => {
|
||||
empty_key.insert(pair.value);
|
||||
},
|
||||
|
|
|
@ -16,6 +16,7 @@ use crate::prelude::*;
|
|||
use crate::io;
|
||||
use core::fmt;
|
||||
use core::str::FromStr;
|
||||
use core::convert::TryFrom;
|
||||
|
||||
use secp256k1;
|
||||
use crate::blockdata::script::Script;
|
||||
|
@ -356,7 +357,7 @@ impl Input {
|
|||
}
|
||||
}
|
||||
PSBT_IN_PROPRIETARY => {
|
||||
let key = raw::ProprietaryKey::from_key(raw_key.clone())?;
|
||||
let key = raw::ProprietaryKey::try_from(raw_key.clone())?;
|
||||
match self.proprietary.entry(key) {
|
||||
btree_map::Entry::Vacant(empty_key) => {
|
||||
empty_key.insert(raw_value);
|
||||
|
|
|
@ -249,7 +249,7 @@ impl Output {
|
|||
}
|
||||
}
|
||||
PSBT_OUT_PROPRIETARY => {
|
||||
let key = raw::ProprietaryKey::from_key(raw_key.clone())?;
|
||||
let key = raw::ProprietaryKey::try_from(raw_key.clone())?;
|
||||
match self.proprietary.entry(key) {
|
||||
btree_map::Entry::Vacant(empty_key) => {
|
||||
empty_key.insert(raw_value);
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
use crate::prelude::*;
|
||||
use core::fmt;
|
||||
use core::convert::TryFrom;
|
||||
|
||||
use crate::io;
|
||||
use crate::consensus::encode::{self, ReadExt, WriteExt, Decodable, Encodable, VarInt, serialize, deserialize, MAX_VEC_SIZE};
|
||||
|
@ -160,12 +161,9 @@ impl<Subtype> Decodable for ProprietaryKey<Subtype> where Subtype: Copy + From<u
|
|||
impl<Subtype> ProprietaryKey<Subtype> where Subtype: Copy + From<u8> + Into<u8> {
|
||||
/// Constructs [ProprietaryKey] from [Key]; returns
|
||||
/// [Error::InvalidProprietaryKey] if `key` do not starts with 0xFC byte
|
||||
#[deprecated(since = "0.29.0", note = "use try_from instead")]
|
||||
pub fn from_key(key: Key) -> Result<Self, Error> {
|
||||
if key.type_value != 0xFC {
|
||||
return Err(Error::InvalidProprietaryKey)
|
||||
}
|
||||
|
||||
Ok(deserialize(&key.key)?)
|
||||
Self::try_from(key)
|
||||
}
|
||||
|
||||
/// Constructs full [Key] corresponding to this proprietary key type
|
||||
|
@ -176,3 +174,21 @@ impl<Subtype> ProprietaryKey<Subtype> where Subtype: Copy + From<u8> + Into<u8>
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<Subtype> TryFrom<Key> for ProprietaryKey<Subtype>
|
||||
where
|
||||
Subtype:Copy + From<u8> + Into<u8> {
|
||||
type Error = Error;
|
||||
|
||||
/// Constructs a [`ProprietaryKey`] from a [`Key`].
|
||||
///
|
||||
/// # Errors
|
||||
/// Returns [`Error::InvalidProprietaryKey`] if `key` does not start with `0xFC` byte.
|
||||
fn try_from(key: Key) -> Result<Self, Self::Error> {
|
||||
if key.type_value != 0xFC {
|
||||
return Err(Error::InvalidProprietaryKey)
|
||||
}
|
||||
|
||||
Ok(deserialize(&key.key)?)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue