@@ -119,7 +119,7 @@ impl<T> [T] {
119
119
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
120
120
#[ inline]
121
121
pub fn first ( & self ) -> Option < & T > {
122
- if self . is_empty ( ) { None } else { Some ( & self [ 0 ] ) }
122
+ self . get ( 0 )
123
123
}
124
124
125
125
/// Returns a mutable pointer to the first element of the slice, or `None` if it is empty.
@@ -137,7 +137,7 @@ impl<T> [T] {
137
137
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
138
138
#[ inline]
139
139
pub fn first_mut ( & mut self ) -> Option < & mut T > {
140
- if self . is_empty ( ) { None } else { Some ( & mut self [ 0 ] ) }
140
+ self . get_mut ( 0 )
141
141
}
142
142
143
143
/// Returns the first and all the rest of the elements of the slice, or `None` if it is empty.
@@ -239,7 +239,8 @@ impl<T> [T] {
239
239
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
240
240
#[ inline]
241
241
pub fn last ( & self ) -> Option < & T > {
242
- if self . is_empty ( ) { None } else { Some ( & self [ self . len ( ) - 1 ] ) }
242
+ let last_idx = self . len ( ) . checked_sub ( 1 ) ?;
243
+ self . get ( last_idx)
243
244
}
244
245
245
246
/// Returns a mutable pointer to the last item in the slice.
@@ -257,9 +258,8 @@ impl<T> [T] {
257
258
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
258
259
#[ inline]
259
260
pub fn last_mut ( & mut self ) -> Option < & mut T > {
260
- let len = self . len ( ) ;
261
- if len == 0 { return None ; }
262
- Some ( & mut self [ len - 1 ] )
261
+ let last_idx = self . len ( ) . checked_sub ( 1 ) ?;
262
+ self . get_mut ( last_idx)
263
263
}
264
264
265
265
/// Returns a reference to an element or subslice depending on the type of
0 commit comments