Implement `Hash` for `Offer` and `Refund`
authorElias Rohrer <dev@tnull.de>
Fri, 8 Mar 2024 15:43:45 +0000 (16:43 +0100)
committerElias Rohrer <dev@tnull.de>
Fri, 8 Mar 2024 16:35:20 +0000 (17:35 +0100)
lightning/src/offers/offer.rs
lightning/src/offers/refund.rs

index d2be5b05677d32068db9ef1a658acb575ac5dec0..d71ec2afd04e9642c11d164e4a8c0f6a02e49dda 100644 (file)
@@ -80,6 +80,7 @@ use bitcoin::blockdata::constants::ChainHash;
 use bitcoin::network::constants::Network;
 use bitcoin::secp256k1::{KeyPair, PublicKey, Secp256k1, self};
 use core::convert::TryFrom;
+use core::hash::{Hash, Hasher};
 use core::num::NonZeroU64;
 use core::ops::Deref;
 use core::str::FromStr;
@@ -591,6 +592,12 @@ impl PartialEq for Offer {
 
 impl Eq for Offer {}
 
+impl Hash for Offer {
+       fn hash<H: Hasher>(&self, state: &mut H) {
+               self.bytes.hash(state);
+       }
+}
+
 impl OfferContents {
        pub fn chains(&self) -> Vec<ChainHash> {
                self.chains.as_ref().cloned().unwrap_or_else(|| vec![self.implied_chain()])
index db42c7457edfdab702eabd248cb1d719ce0e96c1..5107e31d8d0a07e6527d7838d7a19439c86e54c1 100644 (file)
@@ -85,6 +85,7 @@ use bitcoin::blockdata::constants::ChainHash;
 use bitcoin::network::constants::Network;
 use bitcoin::secp256k1::{PublicKey, Secp256k1, self};
 use core::convert::TryFrom;
+use core::hash::{Hash, Hasher};
 use core::ops::Deref;
 use core::str::FromStr;
 use core::time::Duration;
@@ -546,6 +547,12 @@ impl PartialEq for Refund {
 
 impl Eq for Refund {}
 
+impl Hash for Refund {
+       fn hash<H: Hasher>(&self, state: &mut H) {
+               self.bytes.hash(state);
+       }
+}
+
 impl RefundContents {
        pub fn description(&self) -> PrintableString {
                PrintableString(&self.description)