]> git.bitcoin.ninja Git - rust-lightning/commit
Return owned `String`s for onion message message types 2024-08-bindings-no-static
authorMatt Corallo <git@bluematt.me>
Mon, 26 Aug 2024 19:25:46 +0000 (19:25 +0000)
committerMatt Corallo <git@bluematt.me>
Tue, 27 Aug 2024 00:05:12 +0000 (00:05 +0000)
commitfeffaf8bbc5b6687463088d8c6091384b88303a5
treed982a3532a23ae203505d18d607150641e12cbb0
parentff0874adb73e16b4485175d67b393561271f189b
Return owned `String`s for onion message message types

Returning a reference from a trait method is relatively difficult
to map in bindings and is currently handled by storing the object
in the trait instance, returning a reference to the local field.

This is fine when the object we're returning only needs to live as
long as the trait, but when it needs to be `'static` (as is the
case for onion message `msg_type`s), there's not really a good way
to map them at all.

Instead, here, condition on `#[cfg(c_bindings)]` we return a fully
owned `String`. This is obviously relatively less effecient, but
the extra allocation and `memcpy` isn't the end of the world,
especially given it should be released relatively quickly.

Note that this breaks doctests in with `c_bindings`.
ci/ci-tests.sh
lightning/src/ln/peer_handler.rs
lightning/src/onion_message/async_payments.rs
lightning/src/onion_message/functional_tests.rs
lightning/src/onion_message/offers.rs
lightning/src/onion_message/packet.rs