diff --git a/src/cow_rc_str.rs b/src/cow_rc_str.rs index 03631f47..65c89036 100644 --- a/src/cow_rc_str.rs +++ b/src/cow_rc_str.rs @@ -99,11 +99,17 @@ impl Clone for CowRcStr<'_> { } } +#[cold] +#[inline(never)] +unsafe fn drop_slow(ptr: *const String) { + mem::drop(Rc::from_raw(ptr)) +} + impl Drop for CowRcStr<'_> { #[inline] fn drop(&mut self) { if let Err(ptr) = self.unpack() { - mem::drop(unsafe { Rc::from_raw(ptr) }) + unsafe { drop_slow(ptr) } } } }