Skip to content

Commit

Permalink
Rollup merge of rust-lang#88505 - ibraheemdev:use-unwrap-unchecked, r…
Browse files Browse the repository at this point in the history
…=kennytm

Use `unwrap_unchecked` where possible
  • Loading branch information
GuillaumeGomez committed Sep 1, 2021
2 parents 9d052cb + ffc43b8 commit d9c75b1
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 11 deletions.
5 changes: 4 additions & 1 deletion library/alloc/src/collections/linked_list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,10 @@ impl<T> LinkedList<T> {
let tail = self.tail.take();
let len = mem::replace(&mut self.len, 0);
if let Some(head) = head {
let tail = tail.unwrap_or_else(|| unsafe { core::hint::unreachable_unchecked() });
// SAFETY: In a LinkedList, either both the head and tail are None because
// the list is empty, or both head and tail are Some because the list is populated.
// Since we have verified the head is Some, we are sure the tail is Some too.
let tail = unsafe { tail.unwrap_unchecked() };
Some((head, tail, len))
} else {
None
Expand Down
7 changes: 2 additions & 5 deletions library/core/src/array/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -459,11 +459,8 @@ where
debug_assert!(N <= iter.size_hint().1.unwrap_or(usize::MAX));
debug_assert!(N <= iter.size_hint().0);

match collect_into_array(iter) {
Some(array) => array,
// SAFETY: covered by the function contract.
None => unsafe { crate::hint::unreachable_unchecked() },
}
// SAFETY: covered by the function contract.
unsafe { collect_into_array(iter).unwrap_unchecked() }
}

/// Pulls `N` items from `iter` and returns them as an array. If the iterator
Expand Down
7 changes: 2 additions & 5 deletions library/core/src/option.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1198,11 +1198,8 @@ impl<T> Option<T> {
pub fn insert(&mut self, value: T) -> &mut T {
*self = Some(value);

match self {
Some(v) => v,
// SAFETY: the code above just filled the option
None => unsafe { hint::unreachable_unchecked() },
}
// SAFETY: the code above just filled the option
unsafe { self.as_mut().unwrap_unchecked() }
}

/// Inserts `value` into the option if it is [`None`], then
Expand Down

0 comments on commit d9c75b1

Please sign in to comment.