]> git.bitcoin.ninja Git - rust-lightning/commitdiff
[UPSTREAM] Make `offers::Amount` `Copy` and export it in bindings
authorMatt Corallo <git@bluematt.me>
Sat, 11 May 2024 18:51:48 +0000 (18:51 +0000)
committerMatt Corallo <git@bluematt.me>
Sat, 11 May 2024 20:05:45 +0000 (20:05 +0000)
`Amount` is less than two pointers long, so there's no reason it
shouldn't be `Copy`. Further, because its an enum, bindings can't
map a reference to it in an `Option`. Thus, here, we simply make it
`Copy` and return it in `Option`s rather than a reference to it.

lightning/src/offers/invoice.rs
lightning/src/offers/offer.rs

index 6f907d785c7747f6c1124274e01871f175bbf50d..1f19c5971b3cc02cdbd4547e2fb70ec7e5f5830d 100644 (file)
@@ -697,7 +697,7 @@ macro_rules! invoice_accessors { ($self: ident, $contents: expr) => {
        ///
        /// [`Offer`]: crate::offers::offer::Offer
        /// [`Offer::amount`]: crate::offers::offer::Offer::amount
-       pub fn amount(&$self) -> Option<&Amount> {
+       pub fn amount(&$self) -> Option<Amount> {
                $contents.amount()
        }
 
@@ -944,7 +944,7 @@ impl InvoiceContents {
                }
        }
 
-       fn amount(&self) -> Option<&Amount> {
+       fn amount(&self) -> Option<Amount> {
                match self {
                        InvoiceContents::ForOffer { invoice_request, .. } =>
                                invoice_request.inner.offer.amount(),
index 6df9b30a4efa4d9d351ca06d1fa0a10e3a5bc47e..2a492fc91becba3f496a4aa33745ae102d2cea19 100644 (file)
@@ -582,7 +582,7 @@ macro_rules! offer_accessors { ($self: ident, $contents: expr) => {
        }
 
        /// The minimum amount required for a successful payment of a single item.
-       pub fn amount(&$self) -> Option<&$crate::offers::offer::Amount> {
+       pub fn amount(&$self) -> Option<$crate::offers::offer::Amount> {
                $contents.amount()
        }
 
@@ -808,8 +808,8 @@ impl OfferContents {
                self.metadata.as_ref().and_then(|metadata| metadata.as_bytes())
        }
 
-       pub fn amount(&self) -> Option<&Amount> {
-               self.amount.as_ref()
+       pub fn amount(&self) -> Option<Amount> {
+               self.amount
        }
 
        pub fn description(&self) -> Option<PrintableString> {
@@ -982,7 +982,7 @@ impl Writeable for OfferContents {
 
 /// The minimum amount required for an item in an [`Offer`], denominated in either bitcoin or
 /// another currency.
-#[derive(Clone, Debug, PartialEq)]
+#[derive(Clone, Copy, Debug, PartialEq)]
 pub enum Amount {
        /// An amount of bitcoin.
        Bitcoin {