@@ -110,6 +110,7 @@ macro_rules! _check_encoded_tlv_order {
110
110
///
111
111
/// For example,
112
112
/// ```
113
+ /// # use lightning::_encode_tlv_stream;
113
114
/// # use lightning::encode_tlv_stream;
114
115
/// # fn write<W: lightning::util::ser::Writer> (stream: &mut W) -> Result<(), lightning::io::Error> {
115
116
/// let mut required_value = 0u64;
@@ -143,6 +144,9 @@ macro_rules! encode_tlv_stream {
143
144
#[ macro_export]
144
145
macro_rules! _encode_tlv_stream {
145
146
( $stream: expr, { $( ( $type: expr, $field: expr, $fieldty: tt) ) ,* $( , ) * } ) => { {
147
+ _encode_tlv_stream!( $stream, { $( ( $type, $field, $fieldty) ) ,* } , & [ ] )
148
+ } } ;
149
+ ( $stream: expr, { $( ( $type: expr, $field: expr, $fieldty: tt) ) ,* $( , ) * } , $extra_tlvs: expr) => { {
146
150
#[ allow( unused_imports) ]
147
151
use $crate:: {
148
152
ln:: msgs:: DecodeError ,
@@ -154,6 +158,10 @@ macro_rules! _encode_tlv_stream {
154
158
$(
155
159
$crate:: _encode_tlv!( $stream, $type, $field, $fieldty) ;
156
160
) *
161
+ for tlv in $extra_tlvs {
162
+ let ( typ, value) : & ( u64 , Vec <u8 >) = tlv;
163
+ $crate:: _encode_tlv!( $stream, * typ, * value, required_vec) ;
164
+ }
157
165
158
166
#[ allow( unused_mut, unused_variables, unused_assignments) ]
159
167
#[ cfg( debug_assertions) ]
@@ -162,18 +170,8 @@ macro_rules! _encode_tlv_stream {
162
170
$(
163
171
$crate:: _check_encoded_tlv_order!( last_seen, $type, $fieldty) ;
164
172
) *
165
- }
166
- } } ;
167
- ( $stream: expr, $tlvs: expr) => { {
168
- for tlv in $tlvs {
169
- let ( typ, value) : &&( u64 , Vec <u8 >) = tlv;
170
- $crate:: _encode_tlv!( $stream, * typ, * value, required_vec) ;
171
- }
172
-
173
- #[ cfg( debug_assertions) ] {
174
- let mut last_seen: Option <u64 > = None ;
175
- for tlv in $tlvs {
176
- let ( typ, _) : &&( u64 , Vec <u8 >) = tlv;
173
+ for tlv in $extra_tlvs {
174
+ let ( typ, _) : & ( u64 , Vec <u8 >) = tlv;
177
175
$crate:: _check_encoded_tlv_order!( last_seen, * typ, required_vec) ;
178
176
}
179
177
}
@@ -246,14 +244,13 @@ macro_rules! _encode_varint_length_prefixed_tlv {
246
244
$crate:: _get_varint_length_prefixed_tlv_length!( len, $type, $field, $fieldty) ;
247
245
) *
248
246
for tlv in $extra_tlvs {
249
- let ( typ, value) : && ( u64 , Vec <u8 >) = tlv;
247
+ let ( typ, value) : & ( u64 , Vec <u8 >) = tlv;
250
248
$crate:: _get_varint_length_prefixed_tlv_length!( len, * typ, * value, required_vec) ;
251
249
}
252
250
len. 0
253
251
} ;
254
252
BigSize ( len as u64 ) . write( $stream) ?;
255
- $crate:: _encode_tlv_stream!( $stream, { $( ( $type, $field, $fieldty) ) ,* } ) ;
256
- $crate:: _encode_tlv_stream!( $stream, $extra_tlvs) ;
253
+ $crate:: _encode_tlv_stream!( $stream, { $( ( $type, $field, $fieldty) ) ,* } , $extra_tlvs) ;
257
254
} } ;
258
255
}
259
256
@@ -580,6 +577,7 @@ macro_rules! _decode_tlv_stream_range {
580
577
///
581
578
/// For example,
582
579
/// ```
580
+ /// # use lightning::_encode_tlv_stream;
583
581
/// # use lightning::impl_writeable_msg;
584
582
/// struct MyCustomMessage {
585
583
/// pub field_1: u32,
0 commit comments