@@ -91,10 +91,10 @@ impl CodeStats {
91
91
}
92
92
} ) ;
93
93
94
- for info in & sorted {
94
+ for info in sorted {
95
+ let TypeSizeInfo { type_description, overall_size, align, kind, variants, .. } = info;
95
96
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"
98
98
) ;
99
99
let indent = " " ;
100
100
@@ -111,11 +111,11 @@ impl CodeStats {
111
111
// to reflect the presence of the discriminant.
112
112
let mut max_variant_size = discr_size;
113
113
114
- let struct_like = match info . kind {
114
+ let struct_like = match kind {
115
115
DataTypeKind :: Struct | DataTypeKind :: Closure => true ,
116
116
DataTypeKind :: Enum | DataTypeKind :: Union => false ,
117
117
} ;
118
- for ( i, variant_info) in info . variants . iter ( ) . enumerate ( ) {
118
+ for ( i, variant_info) in variants. into_iter ( ) . enumerate ( ) {
119
119
let VariantInfo { ref name, kind : _, align : _, size, ref fields } = * variant_info;
120
120
let indent = if !struct_like {
121
121
let name = match name. as_ref ( ) {
@@ -142,8 +142,8 @@ impl CodeStats {
142
142
let mut fields = fields. clone ( ) ;
143
143
fields. sort_by_key ( |f| ( f. offset , f. size ) ) ;
144
144
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;
147
147
148
148
if offset > min_offset {
149
149
let pad = offset - min_offset;
@@ -171,18 +171,10 @@ impl CodeStats {
171
171
}
172
172
}
173
173
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 ) => { }
186
178
}
187
179
}
188
180
}
0 commit comments