@@ -42,6 +42,9 @@ macro_rules! _encode_tlv {
42
42
( $stream: expr, $type: expr, $field: expr, ignorable) => {
43
43
$crate:: _encode_tlv!( $stream, $type, $field, required) ;
44
44
} ;
45
+ ( $stream: expr, $type: expr, $field: expr, ignorable_option) => {
46
+ $crate:: _encode_tlv!( $stream, $type, $field, option) ;
47
+ } ;
45
48
( $stream: expr, $type: expr, $field: expr, ( option, encoding: ( $fieldty: ty, $encoding: ident) ) ) => {
46
49
$crate:: _encode_tlv!( $stream, $type, $field. map( |f| $encoding( f) ) , option) ;
47
50
} ;
@@ -161,6 +164,9 @@ macro_rules! _get_varint_length_prefixed_tlv_length {
161
164
( $len: expr, $type: expr, $field: expr, ignorable) => {
162
165
$crate:: _get_varint_length_prefixed_tlv_length!( $len, $type, $field, required) ;
163
166
} ;
167
+ ( $len: expr, $type: expr, $field: expr, ignorable_option) => {
168
+ $crate:: _get_varint_length_prefixed_tlv_length!( $len, $type, $field, option) ;
169
+ } ;
164
170
}
165
171
166
172
/// See the documentation of [`write_tlv_fields`].
@@ -213,6 +219,9 @@ macro_rules! _check_decoded_tlv_order {
213
219
( $last_seen_type: expr, $typ: expr, $type: expr, $field: ident, ignorable) => { {
214
220
// no-op
215
221
} } ;
222
+ ( $last_seen_type: expr, $typ: expr, $type: expr, $field: ident, ignorable_option) => { {
223
+ // no-op
224
+ } } ;
216
225
( $last_seen_type: expr, $typ: expr, $type: expr, $field: ident, ( option: $trait: ident $( , $read_arg: expr) ?) ) => { {
217
226
// no-op
218
227
} } ;
@@ -252,6 +261,9 @@ macro_rules! _check_missing_tlv {
252
261
( $last_seen_type: expr, $type: expr, $field: ident, ignorable) => { {
253
262
// no-op
254
263
} } ;
264
+ ( $last_seen_type: expr, $type: expr, $field: ident, ignorable_option) => { {
265
+ // no-op
266
+ } } ;
255
267
( $last_seen_type: expr, $type: expr, $field: ident, ( option: $trait: ident $( , $read_arg: expr) ?) ) => { {
256
268
// no-op
257
269
} } ;
@@ -283,6 +295,9 @@ macro_rules! _decode_tlv {
283
295
( $reader: expr, $field: ident, ignorable) => { {
284
296
$field = $crate:: util:: ser:: MaybeReadable :: read( & mut $reader) ?;
285
297
} } ;
298
+ ( $reader: expr, $field: ident, ignorable_option) => { {
299
+ $field = $crate:: util:: ser:: MaybeReadable :: read( & mut $reader) ?;
300
+ } } ;
286
301
( $reader: expr, $field: ident, ( option: $trait: ident $( , $read_arg: expr) ?) ) => { {
287
302
$field = Some ( $trait:: read( & mut $reader $( , $read_arg) * ) ?) ;
288
303
} } ;
@@ -623,6 +638,9 @@ macro_rules! _init_tlv_based_struct_field {
623
638
( $field: ident, ignorable) => {
624
639
if $field. is_none( ) { return Ok ( None ) ; } else { $field. unwrap( ) }
625
640
} ;
641
+ ( $field: ident, ignorable_option) => {
642
+ $field
643
+ } ;
626
644
( $field: ident, required) => {
627
645
$field. 0 . unwrap( )
628
646
} ;
@@ -655,6 +673,9 @@ macro_rules! _init_tlv_field_var {
655
673
( $field: ident, ignorable) => {
656
674
let mut $field = None ;
657
675
} ;
676
+ ( $field: ident, ignorable_option) => {
677
+ let mut $field = None ;
678
+ } ;
658
679
}
659
680
660
681
/// Equivalent to running [`_init_tlv_field_var`] then [`read_tlv_fields`].
0 commit comments