From 4fabf7f7fb200625fa90a1c4366357de22ab3138 Mon Sep 17 00:00:00 2001
From: Lukas Markeffsky <@>
Date: Thu, 1 Feb 2024 10:57:24 +0000
Subject: [PATCH] use unreachable_unchecked

---
 src/lib.rs | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/lib.rs b/src/lib.rs
index 4fc1191..dee2382 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,6 +1,7 @@
 #![no_std]
 
 use core::cell::Cell;
+use core::hint;
 use core::marker::PhantomPinned;
 use core::mem::{self, MaybeUninit};
 use core::ops::{Deref, DerefMut};
@@ -164,7 +165,10 @@ pub struct Xrc<T: ?Sized> {
 impl<T: ?Sized> Drop for Xrc<T> {
     fn drop(&mut self) {
         let Some(root) = Self::inner(self).root.get() else {
-            unreachable!("missing root");
+            debug_assert!(false, "missing root");
+            unsafe {
+                hint::unreachable_unchecked();
+            }
         };
 
         let state_ref = unsafe { &(*root.as_ptr()).state };
@@ -187,7 +191,10 @@ impl<T> Clone for Xrc<T> {
     fn clone(&self) -> Self {
         let root = Self::inner(self).root.get();
         let Some(root) = root else {
-            unreachable!("missing root");
+            debug_assert!(false, "missing root");
+            unsafe {
+                hint::unreachable_unchecked();
+            }
         };
 
         let state_ref = unsafe { &(*root.as_ptr()).state };
@@ -218,7 +225,10 @@ impl<T: ?Sized> Xrc<T> {
     {
         let source = Self::inner(&this);
         let Some(source_root) = source.root.get() else {
-            unreachable!("missing root");
+            debug_assert!(false, "missing root");
+            unsafe {
+                hint::unreachable_unchecked();
+            }
         };
 
         let target = f(source);
-- 
GitLab