Skip to content

Commit 64aa8ba

Browse files
committed
Auto-generated bindings updates
1 parent e57c225 commit 64aa8ba

File tree

15 files changed

+4062
-2706
lines changed

15 files changed

+4062
-2706
lines changed

lightning-c-bindings/include/lightning.h

Lines changed: 2438 additions & 1948 deletions
Large diffs are not rendered by default.

lightning-c-bindings/include/lightningpp.hpp

Lines changed: 1114 additions & 555 deletions
Large diffs are not rendered by default.

lightning-c-bindings/include/rust_types.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
#if defined(__GNUC__)
22
#define MUST_USE_STRUCT __attribute__((warn_unused))
3+
#define MUST_USE_RES __attribute__((warn_unused_result))
34
#else
45
#define MUST_USE_STRUCT
6+
#define MUST_USE_RES
57
#endif
6-
#if defined(__GNUC__)
7-
#define MUST_USE_RES __attribute__((warn_unused_result))
8+
#if defined(__clang__)
9+
#define NONNULL_PTR _Nonnull
810
#else
9-
#define MUST_USE_RES
11+
#define NONNULL_PTR
1012
#endif
1113
struct nativeChannelHandshakeConfigOpaque;
1214
typedef struct nativeChannelHandshakeConfigOpaque LDKnativeChannelHandshakeConfig;

lightning-c-bindings/src/c_types/derived.rs

Lines changed: 291 additions & 0 deletions
Large diffs are not rendered by default.

lightning-c-bindings/src/chain/chainmonitor.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ impl From<nativeChainMonitor> for crate::chain::Watch {
128128
}
129129
}
130130
#[no_mangle]
131-
pub extern "C" fn ChainMonitor_as_Watch(this_arg: *const ChainMonitor) -> crate::chain::Watch {
131+
pub extern "C" fn ChainMonitor_as_Watch(this_arg: &ChainMonitor) -> crate::chain::Watch {
132132
crate::chain::Watch {
133133
this_arg: unsafe { (*this_arg).inner as *mut c_void },
134134
free: None,
@@ -168,7 +168,7 @@ impl From<nativeChainMonitor> for crate::util::events::EventsProvider {
168168
}
169169
}
170170
#[no_mangle]
171-
pub extern "C" fn ChainMonitor_as_EventsProvider(this_arg: *const ChainMonitor) -> crate::util::events::EventsProvider {
171+
pub extern "C" fn ChainMonitor_as_EventsProvider(this_arg: &ChainMonitor) -> crate::util::events::EventsProvider {
172172
crate::util::events::EventsProvider {
173173
this_arg: unsafe { (*this_arg).inner as *mut c_void },
174174
free: None,

lightning-c-bindings/src/chain/channelmonitor.rs

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -112,20 +112,18 @@ pub extern "C" fn ChannelMonitorUpdate_set_update_id(this_ptr: &mut ChannelMonit
112112
#[no_mangle]
113113
pub static CLOSED_CHANNEL_UPDATE_ID: u64 = lightning::chain::channelmonitor::CLOSED_CHANNEL_UPDATE_ID;
114114
#[no_mangle]
115-
pub extern "C" fn ChannelMonitorUpdate_write(obj: *const ChannelMonitorUpdate) -> crate::c_types::derived::CVec_u8Z {
116-
crate::c_types::serialize_obj(unsafe { &(*(*obj).inner) })
115+
pub extern "C" fn ChannelMonitorUpdate_write(obj: &ChannelMonitorUpdate) -> crate::c_types::derived::CVec_u8Z {
116+
crate::c_types::serialize_obj(unsafe { &*unsafe { &*obj }.inner })
117117
}
118118
#[no_mangle]
119119
pub(crate) extern "C" fn ChannelMonitorUpdate_write_void(obj: *const c_void) -> crate::c_types::derived::CVec_u8Z {
120120
crate::c_types::serialize_obj(unsafe { &*(obj as *const nativeChannelMonitorUpdate) })
121121
}
122122
#[no_mangle]
123-
pub extern "C" fn ChannelMonitorUpdate_read(ser: crate::c_types::u8slice) -> ChannelMonitorUpdate {
124-
if let Ok(res) = crate::c_types::deserialize_obj(ser) {
125-
ChannelMonitorUpdate { inner: Box::into_raw(Box::new(res)), is_owned: true }
126-
} else {
127-
ChannelMonitorUpdate { inner: std::ptr::null_mut(), is_owned: true }
128-
}
123+
pub extern "C" fn ChannelMonitorUpdate_read(ser: crate::c_types::u8slice) -> crate::c_types::derived::CResult_ChannelMonitorUpdateDecodeErrorZ {
124+
let res = crate::c_types::deserialize_obj(ser);
125+
let mut local_res = match res { Ok(mut o) => crate::c_types::CResultTempl::ok( { crate::chain::channelmonitor::ChannelMonitorUpdate { inner: Box::into_raw(Box::new(o)), is_owned: true } }), Err(mut e) => crate::c_types::CResultTempl::err( { crate::ln::msgs::DecodeError { inner: Box::into_raw(Box::new(e)), is_owned: true } }) };
126+
local_res
129127
}
130128
/// An error enum representing a failure to persist a channel monitor update.
131129
#[must_use]
@@ -381,7 +379,7 @@ pub extern "C" fn HTLCUpdate_clone(orig: &HTLCUpdate) -> HTLCUpdate {
381379
HTLCUpdate { inner: Box::into_raw(Box::new(unsafe { &*orig.inner }.clone())), is_owned: true }
382380
}
383381
#[no_mangle]
384-
pub extern "C" fn HTLCUpdate_write(obj: *const HTLCUpdate) -> crate::c_types::derived::CVec_u8Z {
382+
pub extern "C" fn HTLCUpdate_write(obj: &HTLCUpdate) -> crate::c_types::derived::CVec_u8Z {
385383
crate::c_types::serialize_obj(unsafe { &(*(*obj).inner) })
386384
}
387385
#[no_mangle]
@@ -449,6 +447,14 @@ impl ChannelMonitor {
449447
ret
450448
}
451449
}
450+
#[no_mangle]
451+
pub extern "C" fn ChannelMonitor_write(obj: &ChannelMonitor) -> crate::c_types::derived::CVec_u8Z {
452+
crate::c_types::serialize_obj(unsafe { &*unsafe { &*obj }.inner })
453+
}
454+
#[no_mangle]
455+
pub(crate) extern "C" fn ChannelMonitor_write_void(obj: *const c_void) -> crate::c_types::derived::CVec_u8Z {
456+
crate::c_types::serialize_obj(unsafe { &*(obj as *const nativeChannelMonitor) })
457+
}
452458
/// Updates a ChannelMonitor on the basis of some new information provided by the Channel
453459
/// itself.
454460
///
@@ -642,3 +648,10 @@ impl Drop for Persist {
642648
}
643649
}
644650
}
651+
#[no_mangle]
652+
pub extern "C" fn C2Tuple_BlockHashChannelMonitorZ_read(ser: crate::c_types::u8slice, arg: &crate::chain::keysinterface::KeysInterface) -> crate::c_types::derived::CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
653+
let arg_conv = arg;
654+
let res: Result<(bitcoin::hash_types::BlockHash, lightning::chain::channelmonitor::ChannelMonitor<crate::chain::keysinterface::ChannelKeys>), lightning::ln::msgs::DecodeError> = crate::c_types::deserialize_obj_arg(ser, arg_conv);
655+
let mut local_res = match res { Ok(mut o) => crate::c_types::CResultTempl::ok( { let (mut orig_res_0_0, mut orig_res_0_1) = o; let mut local_res_0 = (crate::c_types::ThirtyTwoBytes { data: orig_res_0_0.into_inner() }, crate::chain::channelmonitor::ChannelMonitor { inner: Box::into_raw(Box::new(orig_res_0_1)), is_owned: true }).into(); local_res_0 }), Err(mut e) => crate::c_types::CResultTempl::err( { crate::ln::msgs::DecodeError { inner: Box::into_raw(Box::new(e)), is_owned: true } }) };
656+
local_res
657+
}

lightning-c-bindings/src/chain/keysinterface.rs

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,16 @@ pub extern "C" fn SpendableOutputDescriptor_free(this_ptr: SpendableOutputDescri
224224
pub extern "C" fn SpendableOutputDescriptor_clone(orig: &SpendableOutputDescriptor) -> SpendableOutputDescriptor {
225225
orig.clone()
226226
}
227+
#[no_mangle]
228+
pub extern "C" fn SpendableOutputDescriptor_write(obj: &SpendableOutputDescriptor) -> crate::c_types::derived::CVec_u8Z {
229+
crate::c_types::serialize_obj(&unsafe { &*obj }.to_native())
230+
}
231+
#[no_mangle]
232+
pub extern "C" fn SpendableOutputDescriptor_read(ser: crate::c_types::u8slice) -> crate::c_types::derived::CResult_SpendableOutputDescriptorDecodeErrorZ {
233+
let res = crate::c_types::deserialize_obj(ser);
234+
let mut local_res = match res { Ok(mut o) => crate::c_types::CResultTempl::ok( { crate::chain::keysinterface::SpendableOutputDescriptor::native_into(o) }), Err(mut e) => crate::c_types::CResultTempl::err( { crate::ln::msgs::DecodeError { inner: Box::into_raw(Box::new(e)), is_owned: true } }) };
235+
local_res
236+
}
227237
/// Set of lightning keys needed to operate a channel as described in BOLT 3.
228238
///
229239
/// Signing services could be implemented on a hardware wallet. In this case,
@@ -762,7 +772,7 @@ impl From<nativeInMemoryChannelKeys> for crate::chain::keysinterface::ChannelKey
762772
}
763773
}
764774
#[no_mangle]
765-
pub extern "C" fn InMemoryChannelKeys_as_ChannelKeys(this_arg: *const InMemoryChannelKeys) -> crate::chain::keysinterface::ChannelKeys {
775+
pub extern "C" fn InMemoryChannelKeys_as_ChannelKeys(this_arg: &InMemoryChannelKeys) -> crate::chain::keysinterface::ChannelKeys {
766776
crate::chain::keysinterface::ChannelKeys {
767777
this_arg: unsafe { (*this_arg).inner as *mut c_void },
768778
free: None,
@@ -854,20 +864,18 @@ extern "C" fn InMemoryChannelKeys_ChannelKeys_ready_channel(this_arg: *mut c_voi
854864
}
855865

856866
#[no_mangle]
857-
pub extern "C" fn InMemoryChannelKeys_write(obj: *const InMemoryChannelKeys) -> crate::c_types::derived::CVec_u8Z {
858-
crate::c_types::serialize_obj(unsafe { &(*(*obj).inner) })
867+
pub extern "C" fn InMemoryChannelKeys_write(obj: &InMemoryChannelKeys) -> crate::c_types::derived::CVec_u8Z {
868+
crate::c_types::serialize_obj(unsafe { &*unsafe { &*obj }.inner })
859869
}
860870
#[no_mangle]
861871
pub(crate) extern "C" fn InMemoryChannelKeys_write_void(obj: *const c_void) -> crate::c_types::derived::CVec_u8Z {
862872
crate::c_types::serialize_obj(unsafe { &*(obj as *const nativeInMemoryChannelKeys) })
863873
}
864874
#[no_mangle]
865-
pub extern "C" fn InMemoryChannelKeys_read(ser: crate::c_types::u8slice) -> InMemoryChannelKeys {
866-
if let Ok(res) = crate::c_types::deserialize_obj(ser) {
867-
InMemoryChannelKeys { inner: Box::into_raw(Box::new(res)), is_owned: true }
868-
} else {
869-
InMemoryChannelKeys { inner: std::ptr::null_mut(), is_owned: true }
870-
}
875+
pub extern "C" fn InMemoryChannelKeys_read(ser: crate::c_types::u8slice) -> crate::c_types::derived::CResult_InMemoryChannelKeysDecodeErrorZ {
876+
let res = crate::c_types::deserialize_obj(ser);
877+
let mut local_res = match res { Ok(mut o) => crate::c_types::CResultTempl::ok( { crate::chain::keysinterface::InMemoryChannelKeys { inner: Box::into_raw(Box::new(o)), is_owned: true } }), Err(mut e) => crate::c_types::CResultTempl::err( { crate::ln::msgs::DecodeError { inner: Box::into_raw(Box::new(e)), is_owned: true } }) };
878+
local_res
871879
}
872880

873881
use lightning::chain::keysinterface::KeysManager as nativeKeysManagerImport;
@@ -962,7 +970,7 @@ impl From<nativeKeysManager> for crate::chain::keysinterface::KeysInterface {
962970
}
963971
}
964972
#[no_mangle]
965-
pub extern "C" fn KeysManager_as_KeysInterface(this_arg: *const KeysManager) -> crate::chain::keysinterface::KeysInterface {
973+
pub extern "C" fn KeysManager_as_KeysInterface(this_arg: &KeysManager) -> crate::chain::keysinterface::KeysInterface {
966974
crate::chain::keysinterface::KeysInterface {
967975
this_arg: unsafe { (*this_arg).inner as *mut c_void },
968976
free: None,

lightning-c-bindings/src/chain/transaction.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ pub extern "C" fn OutPoint_to_channel_id(this_arg: &OutPoint) -> crate::c_types:
101101
}
102102

103103
#[no_mangle]
104-
pub extern "C" fn OutPoint_write(obj: *const OutPoint) -> crate::c_types::derived::CVec_u8Z {
104+
pub extern "C" fn OutPoint_write(obj: &OutPoint) -> crate::c_types::derived::CVec_u8Z {
105105
crate::c_types::serialize_obj(unsafe { &(*(*obj).inner) })
106106
}
107107
#[no_mangle]

lightning-c-bindings/src/ln/chan_utils.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ pub extern "C" fn TxCreationKeys_new(mut per_commitment_point_arg: crate::c_type
208208
})), is_owned: true }
209209
}
210210
#[no_mangle]
211-
pub extern "C" fn TxCreationKeys_write(obj: *const TxCreationKeys) -> crate::c_types::derived::CVec_u8Z {
211+
pub extern "C" fn TxCreationKeys_write(obj: &TxCreationKeys) -> crate::c_types::derived::CVec_u8Z {
212212
crate::c_types::serialize_obj(unsafe { &(*(*obj).inner) })
213213
}
214214
#[no_mangle]
@@ -363,7 +363,7 @@ pub extern "C" fn ChannelPublicKeys_new(mut funding_pubkey_arg: crate::c_types::
363363
})), is_owned: true }
364364
}
365365
#[no_mangle]
366-
pub extern "C" fn ChannelPublicKeys_write(obj: *const ChannelPublicKeys) -> crate::c_types::derived::CVec_u8Z {
366+
pub extern "C" fn ChannelPublicKeys_write(obj: &ChannelPublicKeys) -> crate::c_types::derived::CVec_u8Z {
367367
crate::c_types::serialize_obj(unsafe { &(*(*obj).inner) })
368368
}
369369
#[no_mangle]
@@ -515,7 +515,7 @@ pub extern "C" fn HTLCOutputInCommitment_set_payment_hash(this_ptr: &mut HTLCOut
515515
unsafe { &mut *this_ptr.inner }.payment_hash = ::lightning::ln::channelmanager::PaymentHash(val.data);
516516
}
517517
#[no_mangle]
518-
pub extern "C" fn HTLCOutputInCommitment_write(obj: *const HTLCOutputInCommitment) -> crate::c_types::derived::CVec_u8Z {
518+
pub extern "C" fn HTLCOutputInCommitment_write(obj: &HTLCOutputInCommitment) -> crate::c_types::derived::CVec_u8Z {
519519
crate::c_types::serialize_obj(unsafe { &(*(*obj).inner) })
520520
}
521521
#[no_mangle]
@@ -805,7 +805,7 @@ pub extern "C" fn ChannelTransactionParameters_as_counterparty_broadcastable(thi
805805
}
806806

807807
#[no_mangle]
808-
pub extern "C" fn CounterpartyChannelTransactionParameters_write(obj: *const CounterpartyChannelTransactionParameters) -> crate::c_types::derived::CVec_u8Z {
808+
pub extern "C" fn CounterpartyChannelTransactionParameters_write(obj: &CounterpartyChannelTransactionParameters) -> crate::c_types::derived::CVec_u8Z {
809809
crate::c_types::serialize_obj(unsafe { &(*(*obj).inner) })
810810
}
811811
#[no_mangle]
@@ -821,7 +821,7 @@ pub extern "C" fn CounterpartyChannelTransactionParameters_read(ser: crate::c_ty
821821
}
822822
}
823823
#[no_mangle]
824-
pub extern "C" fn ChannelTransactionParameters_write(obj: *const ChannelTransactionParameters) -> crate::c_types::derived::CVec_u8Z {
824+
pub extern "C" fn ChannelTransactionParameters_write(obj: &ChannelTransactionParameters) -> crate::c_types::derived::CVec_u8Z {
825825
crate::c_types::serialize_obj(unsafe { &(*(*obj).inner) })
826826
}
827827
#[no_mangle]
@@ -997,7 +997,7 @@ pub extern "C" fn HolderCommitmentTransaction_set_counterparty_htlc_sigs(this_pt
997997
unsafe { &mut *this_ptr.inner }.counterparty_htlc_sigs = local_val;
998998
}
999999
#[no_mangle]
1000-
pub extern "C" fn HolderCommitmentTransaction_write(obj: *const HolderCommitmentTransaction) -> crate::c_types::derived::CVec_u8Z {
1000+
pub extern "C" fn HolderCommitmentTransaction_write(obj: &HolderCommitmentTransaction) -> crate::c_types::derived::CVec_u8Z {
10011001
crate::c_types::serialize_obj(unsafe { &(*(*obj).inner) })
10021002
}
10031003
#[no_mangle]
@@ -1115,7 +1115,7 @@ pub extern "C" fn BuiltCommitmentTransaction_new(mut transaction_arg: crate::c_t
11151115
})), is_owned: true }
11161116
}
11171117
#[no_mangle]
1118-
pub extern "C" fn BuiltCommitmentTransaction_write(obj: *const BuiltCommitmentTransaction) -> crate::c_types::derived::CVec_u8Z {
1118+
pub extern "C" fn BuiltCommitmentTransaction_write(obj: &BuiltCommitmentTransaction) -> crate::c_types::derived::CVec_u8Z {
11191119
crate::c_types::serialize_obj(unsafe { &(*(*obj).inner) })
11201120
}
11211121
#[no_mangle]
@@ -1210,7 +1210,7 @@ pub extern "C" fn CommitmentTransaction_clone(orig: &CommitmentTransaction) -> C
12101210
CommitmentTransaction { inner: Box::into_raw(Box::new(unsafe { &*orig.inner }.clone())), is_owned: true }
12111211
}
12121212
#[no_mangle]
1213-
pub extern "C" fn CommitmentTransaction_write(obj: *const CommitmentTransaction) -> crate::c_types::derived::CVec_u8Z {
1213+
pub extern "C" fn CommitmentTransaction_write(obj: &CommitmentTransaction) -> crate::c_types::derived::CVec_u8Z {
12141214
crate::c_types::serialize_obj(unsafe { &(*(*obj).inner) })
12151215
}
12161216
#[no_mangle]

lightning-c-bindings/src/ln/channelmanager.rs

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ impl From<nativeChannelManager> for crate::util::events::MessageSendEventsProvid
570570
}
571571
}
572572
#[no_mangle]
573-
pub extern "C" fn ChannelManager_as_MessageSendEventsProvider(this_arg: *const ChannelManager) -> crate::util::events::MessageSendEventsProvider {
573+
pub extern "C" fn ChannelManager_as_MessageSendEventsProvider(this_arg: &ChannelManager) -> crate::util::events::MessageSendEventsProvider {
574574
crate::util::events::MessageSendEventsProvider {
575575
this_arg: unsafe { (*this_arg).inner as *mut c_void },
576576
free: None,
@@ -596,7 +596,7 @@ impl From<nativeChannelManager> for crate::util::events::EventsProvider {
596596
}
597597
}
598598
#[no_mangle]
599-
pub extern "C" fn ChannelManager_as_EventsProvider(this_arg: *const ChannelManager) -> crate::util::events::EventsProvider {
599+
pub extern "C" fn ChannelManager_as_EventsProvider(this_arg: &ChannelManager) -> crate::util::events::EventsProvider {
600600
crate::util::events::EventsProvider {
601601
this_arg: unsafe { (*this_arg).inner as *mut c_void },
602602
free: None,
@@ -638,7 +638,7 @@ impl From<nativeChannelManager> for crate::ln::msgs::ChannelMessageHandler {
638638
}
639639
}
640640
#[no_mangle]
641-
pub extern "C" fn ChannelManager_as_ChannelMessageHandler(this_arg: *const ChannelManager) -> crate::ln::msgs::ChannelMessageHandler {
641+
pub extern "C" fn ChannelManager_as_ChannelMessageHandler(this_arg: &ChannelManager) -> crate::ln::msgs::ChannelMessageHandler {
642642
crate::ln::msgs::ChannelMessageHandler {
643643
this_arg: unsafe { (*this_arg).inner as *mut c_void },
644644
free: None,
@@ -734,6 +734,14 @@ extern "C" fn ChannelManager_ChannelMessageHandler_get_and_clear_pending_msg_eve
734734
local_ret.into()
735735
}
736736

737+
#[no_mangle]
738+
pub extern "C" fn ChannelManager_write(obj: &ChannelManager) -> crate::c_types::derived::CVec_u8Z {
739+
crate::c_types::serialize_obj(unsafe { &*unsafe { &*obj }.inner })
740+
}
741+
#[no_mangle]
742+
pub(crate) extern "C" fn ChannelManager_write_void(obj: *const c_void) -> crate::c_types::derived::CVec_u8Z {
743+
crate::c_types::serialize_obj(unsafe { &*(obj as *const nativeChannelManager) })
744+
}
737745

738746
use lightning::ln::channelmanager::ChannelManagerReadArgs as nativeChannelManagerReadArgsImport;
739747
type nativeChannelManagerReadArgs = nativeChannelManagerReadArgsImport<'static, crate::chain::keysinterface::ChannelKeys, crate::chain::Watch, crate::chain::chaininterface::BroadcasterInterface, crate::chain::keysinterface::KeysInterface, crate::chain::chaininterface::FeeEstimator, crate::util::logger::Logger>;
@@ -886,3 +894,10 @@ pub extern "C" fn ChannelManagerReadArgs_new(mut keys_manager: crate::chain::key
886894
ChannelManagerReadArgs { inner: Box::into_raw(Box::new(ret)), is_owned: true }
887895
}
888896

897+
#[no_mangle]
898+
pub extern "C" fn C2Tuple_BlockHashChannelManagerZ_read(ser: crate::c_types::u8slice, arg: crate::ln::channelmanager::ChannelManagerReadArgs) -> crate::c_types::derived::CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
899+
let arg_conv = *unsafe { Box::from_raw(arg.take_inner()) };
900+
let res: Result<(bitcoin::hash_types::BlockHash, lightning::ln::channelmanager::ChannelManager<crate::chain::keysinterface::ChannelKeys, crate::chain::Watch, crate::chain::chaininterface::BroadcasterInterface, crate::chain::keysinterface::KeysInterface, crate::chain::chaininterface::FeeEstimator, crate::util::logger::Logger>), lightning::ln::msgs::DecodeError> = crate::c_types::deserialize_obj_arg(ser, arg_conv);
901+
let mut local_res = match res { Ok(mut o) => crate::c_types::CResultTempl::ok( { let (mut orig_res_0_0, mut orig_res_0_1) = o; let mut local_res_0 = (crate::c_types::ThirtyTwoBytes { data: orig_res_0_0.into_inner() }, crate::ln::channelmanager::ChannelManager { inner: Box::into_raw(Box::new(orig_res_0_1)), is_owned: true }).into(); local_res_0 }), Err(mut e) => crate::c_types::CResultTempl::err( { crate::ln::msgs::DecodeError { inner: Box::into_raw(Box::new(e)), is_owned: true } }) };
902+
local_res
903+
}

0 commit comments

Comments
 (0)