@@ -91,10 +91,10 @@ impl CodeStats {
9191 }
9292 } ) ;
9393
94- for info in & sorted {
94+ for info in sorted {
95+ let TypeSizeInfo { type_description, overall_size, align, kind, variants, .. } = info;
9596 println ! (
96- "print-type-size type: `{}`: {} bytes, alignment: {} bytes" ,
97- info. type_description, info. overall_size, info. align
97+ "print-type-size type: `{type_description}`: {overall_size} bytes, alignment: {align} bytes"
9898 ) ;
9999 let indent = " " ;
100100
@@ -111,11 +111,11 @@ impl CodeStats {
111111 // to reflect the presence of the discriminant.
112112 let mut max_variant_size = discr_size;
113113
114- let struct_like = match info . kind {
114+ let struct_like = match kind {
115115 DataTypeKind :: Struct | DataTypeKind :: Closure => true ,
116116 DataTypeKind :: Enum | DataTypeKind :: Union => false ,
117117 } ;
118- for ( i, variant_info) in info . variants . iter ( ) . enumerate ( ) {
118+ for ( i, variant_info) in variants. into_iter ( ) . enumerate ( ) {
119119 let VariantInfo { ref name, kind : _, align : _, size, ref fields } = * variant_info;
120120 let indent = if !struct_like {
121121 let name = match name. as_ref ( ) {
@@ -142,8 +142,8 @@ impl CodeStats {
142142 let mut fields = fields. clone ( ) ;
143143 fields. sort_by_key ( |f| ( f. offset , f. size ) ) ;
144144
145- for field in fields. iter ( ) {
146- let FieldInfo { ref name, offset, size, align } = * field;
145+ for field in fields {
146+ let FieldInfo { ref name, offset, size, align } = field;
147147
148148 if offset > min_offset {
149149 let pad = offset - min_offset;
@@ -171,18 +171,10 @@ impl CodeStats {
171171 }
172172 }
173173
174- assert ! (
175- max_variant_size <= info. overall_size,
176- "max_variant_size {} !<= {} overall_size" ,
177- max_variant_size,
178- info. overall_size
179- ) ;
180- if max_variant_size < info. overall_size {
181- println ! (
182- "print-type-size {}end padding: {} bytes" ,
183- indent,
184- info. overall_size - max_variant_size
185- ) ;
174+ match overall_size. checked_sub ( max_variant_size) {
175+ None => panic ! ( "max_variant_size {max_variant_size} > {overall_size} overall_size" ) ,
176+ Some ( diff @ 1 ..) => println ! ( "print-type-size {indent}end padding: {diff} bytes" ) ,
177+ Some ( 0 ) => { }
186178 }
187179 }
188180 }
0 commit comments