$field = ser::Readable::read(&mut $reader)?;
}};
($reader: expr, $field: ident, vec_type) => {{
- $field = Some(ser::Readable::read(&mut $reader)?);
+ let f: ::util::ser::VecReadWrapper<_> = ser::Readable::read(&mut $reader)?;
+ $field = Some(f.0);
}};
($reader: expr, $field: ident, option) => {{
$field = Some(ser::Readable::read(&mut $reader)?);
/// correctly.
macro_rules! write_tlv_fields {
($stream: expr, {$(($type: expr, $field: expr, $fieldty: tt)),* $(,)*}) => {
- encode_varint_length_prefixed_tlv!($stream, {$(($type, $field, $fieldty)),*});
+ encode_varint_length_prefixed_tlv!($stream, {$(($type, $field, $fieldty)),*})
}
}
$field.0.unwrap()
};
($field: ident, vec_type) => {
- $field.unwrap().0
+ $field.unwrap()
};
}
let mut $field = ::util::ser::OptionDeserWrapper(None);
};
($field: ident, vec_type) => {
- let mut $field = Some(::util::ser::VecReadWrapper(Vec::new()));
+ let mut $field = Some(Vec::new());
};
($field: ident, option) => {
let mut $field = None;
macro_rules! impl_writeable_tlv_based_enum_upgradable {
($st: ident, $(($variant_id: expr, $variant_name: ident) =>
{$(($type: expr, $field: ident, $fieldty: tt)),* $(,)*}
- ),* $(,)*) => {
+ ),* $(,)*
+ $(;
+ $(($tuple_variant_id: expr, $tuple_variant_name: ident)),* $(,)*)*) => {
_impl_writeable_tlv_based_enum_common!($st,
- $(($variant_id, $variant_name) => {$(($type, $field, $fieldty)),*}),*; );
+ $(($variant_id, $variant_name) => {$(($type, $field, $fieldty)),*}),*;
+ $($(($tuple_variant_id, $tuple_variant_name)),*)*);
impl ::util::ser::MaybeReadable for $st {
fn read<R: $crate::io::Read>(reader: &mut R) -> Result<Option<Self>, ::ln::msgs::DecodeError> {
};
f()
}),*
+ $($($tuple_variant_id => {
+ Ok(Some($st::$tuple_variant_name(Readable::read(reader)?)))
+ }),*)*
_ if id % 2 == 1 => Ok(None),
_ => Err(DecodeError::UnknownRequiredFeature),
}