Remove `OptionalField` and move `shutdown_scriptpubkey` into TLV stream
[rust-lightning] / lightning / src / util / ser_macros.rs
index 6067bcdd438e2ea676c2978e8bdd09b103d06893..d6a03a88fbe827efc72f6fcd96aa1e928aaa2c17 100644 (file)
@@ -554,7 +554,7 @@ macro_rules! impl_writeable_msg {
                impl $crate::util::ser::Writeable for $st {
                        fn write<W: $crate::util::ser::Writer>(&self, w: &mut W) -> Result<(), $crate::io::Error> {
                                $( self.$field.write(w)?; )*
-                               $crate::encode_tlv_stream!(w, {$(($type, self.$tlvfield, $fieldty)),*});
+                               $crate::encode_tlv_stream!(w, {$(($type, self.$tlvfield.as_ref(), $fieldty)),*});
                                Ok(())
                        }
                }
@@ -726,6 +726,9 @@ macro_rules! _init_tlv_field_var {
        ($field: ident, optional_vec) => {
                let mut $field = Some(Vec::new());
        };
+       ($field: ident, (option, encoding: ($fieldty: ty, $encoding: ident))) => {
+               $crate::_init_tlv_field_var!($field, option);
+       };
        ($field: ident, (option: $trait: ident $(, $read_arg: expr)?)) => {
                $crate::_init_tlv_field_var!($field, option);
        };