@@ -603,7 +603,7 @@ impl<'a, W> Serialization<W, &'a {name}> for Serializer<W> where W: TokenWriter
603
603
. map( |case| {
604
604
format!(
605
605
" {name}::{constructor}(box ref value) => {{
606
- // Path will be updated in by the serializer for this tagged tuple.
606
+ // Path will be updated by the serializer for this tagged tuple.
607
607
(self as &mut Serialization<W, &'a {constructor}>).serialize(value, path)
608
608
}}" ,
609
609
name = name,
@@ -1078,8 +1078,12 @@ impl<'a, W> Serialization<W, &'a {name}> for Serializer<W> where W: TokenWriter
1078
1078
1079
1079
self.writer.enter_tagged_tuple_at(&interface_name, &field_names, path)?;
1080
1080
path.enter_interface(interface_name.clone());
1081
+ let result = loop {{ // Fake loop, used only to be able to `break` early.
1081
1082
{fields}
1083
+ break Ok(());
1084
+ }};
1082
1085
path.exit_interface(interface_name.clone());
1086
+ result?;
1083
1087
self.writer.exit_tagged_tuple_at(&interface_name, &field_names, path)?;
1084
1088
1085
1089
Ok(())
@@ -1101,12 +1105,14 @@ impl<'a, W> Serialization<W, &'a {name}> for Serializer<W> where W: TokenWriter
1101
1105
. enumerate( )
1102
1106
. map( |( index, field) | format!(
1103
1107
"
1104
- let field_name = FieldName::from_str(\" {field_name}\" );
1105
- let path_item = ({index}, field_name.clone()); // String is shared
1106
- path.enter_field(path_item.clone());
1107
- let result = (self as &mut Serialization<W, &'a _>).serialize(&value.{rust_field_name}, path);
1108
- path.exit_field(path_item);
1109
- result?;" ,
1108
+ let field_name = FieldName::from_str(\" {field_name}\" );
1109
+ let path_item = ({index}, field_name.clone()); // String is shared
1110
+ path.enter_field(path_item.clone());
1111
+ let result = (self as &mut Serialization<W, &'a _>).serialize(&value.{rust_field_name}, path);
1112
+ path.exit_field(path_item);
1113
+ if let Err(err) = result {{
1114
+ break Err(err); // Break with error
1115
+ }}" ,
1110
1116
index = index,
1111
1117
field_name = field. name( ) . to_str( ) ,
1112
1118
rust_field_name = field. name( ) . to_rust_identifier_case( ) ) )
0 commit comments