@@ -217,14 +217,8 @@ impl Layout {
217217 /// On arithmetic overflow, returns `None`.
218218 #[ inline]
219219 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) ?;
228222
229223 // We can assume that `self.align` is a power-of-two that does
230224 // not exceed 2<sup>31</sup>. Furthermore, `alloc_size` has already been
@@ -246,26 +240,14 @@ impl Layout {
246240 /// On arithmetic overflow, returns `None`.
247241 pub fn extend ( & self , next : Self ) -> Option < ( Self , usize ) > {
248242 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) ?;
253244
254245 let pad = realigned. padding_needed_for ( next. align ) ;
255246
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 ) ?;
264249
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) ?;
269251 Some ( ( layout, offset) )
270252 }
271253
@@ -282,11 +264,7 @@ impl Layout {
282264 ///
283265 /// On arithmetic overflow, returns `None`.
284266 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) ?;
290268 Layout :: from_size_align ( size, self . align )
291269 }
292270
@@ -306,14 +284,8 @@ impl Layout {
306284 ///
307285 /// On arithmetic overflow, returns `None`.
308286 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 ) ?;
317289 Some ( ( layout, self . size ( ) ) )
318290 }
319291
0 commit comments