@@ -217,14 +217,8 @@ impl Layout {
217
217
/// On arithmetic overflow, returns `None`.
218
218
#[ inline]
219
219
pub fn repeat ( & self , n : usize ) -> Option < ( Self , usize ) > {
220
- let padded_size = match self . size . checked_add ( self . padding_needed_for ( self . align ) ) {
221
- None => return None ,
222
- Some ( padded_size) => padded_size,
223
- } ;
224
- let alloc_size = match padded_size. checked_mul ( n) {
225
- None => return None ,
226
- Some ( alloc_size) => alloc_size,
227
- } ;
220
+ let padded_size = self . size . checked_add ( self . padding_needed_for ( self . align ) ) ?;
221
+ let alloc_size = padded_size. checked_mul ( n) ?;
228
222
229
223
// We can assume that `self.align` is a power-of-two that does
230
224
// not exceed 2<sup>31</sup>. Furthermore, `alloc_size` has already been
@@ -246,26 +240,14 @@ impl Layout {
246
240
/// On arithmetic overflow, returns `None`.
247
241
pub fn extend ( & self , next : Self ) -> Option < ( Self , usize ) > {
248
242
let new_align = cmp:: max ( self . align , next. align ) ;
249
- let realigned = match Layout :: from_size_align ( self . size , new_align) {
250
- None => return None ,
251
- Some ( l) => l,
252
- } ;
243
+ let realigned = Layout :: from_size_align ( self . size , new_align) ?;
253
244
254
245
let pad = realigned. padding_needed_for ( next. align ) ;
255
246
256
- let offset = match self . size . checked_add ( pad) {
257
- None => return None ,
258
- Some ( offset) => offset,
259
- } ;
260
- let new_size = match offset. checked_add ( next. size ) {
261
- None => return None ,
262
- Some ( new_size) => new_size,
263
- } ;
247
+ let offset = self . size . checked_add ( pad) ?;
248
+ let new_size = offset. checked_add ( next. size ) ?;
264
249
265
- let layout = match Layout :: from_size_align ( new_size, new_align) {
266
- None => return None ,
267
- Some ( l) => l,
268
- } ;
250
+ let layout = Layout :: from_size_align ( new_size, new_align) ?;
269
251
Some ( ( layout, offset) )
270
252
}
271
253
@@ -282,11 +264,7 @@ impl Layout {
282
264
///
283
265
/// On arithmetic overflow, returns `None`.
284
266
pub fn repeat_packed ( & self , n : usize ) -> Option < Self > {
285
- let size = match self . size ( ) . checked_mul ( n) {
286
- None => return None ,
287
- Some ( scaled) => scaled,
288
- } ;
289
-
267
+ let size = self . size ( ) . checked_mul ( n) ?;
290
268
Layout :: from_size_align ( size, self . align )
291
269
}
292
270
@@ -306,14 +284,8 @@ impl Layout {
306
284
///
307
285
/// On arithmetic overflow, returns `None`.
308
286
pub fn extend_packed ( & self , next : Self ) -> Option < ( Self , usize ) > {
309
- let new_size = match self . size ( ) . checked_add ( next. size ( ) ) {
310
- None => return None ,
311
- Some ( new_size) => new_size,
312
- } ;
313
- let layout = match Layout :: from_size_align ( new_size, self . align ) {
314
- None => return None ,
315
- Some ( l) => l,
316
- } ;
287
+ let new_size = self . size ( ) . checked_add ( next. size ( ) ) ?;
288
+ let layout = Layout :: from_size_align ( new_size, self . align ) ?;
317
289
Some ( ( layout, self . size ( ) ) )
318
290
}
319
291
0 commit comments