From ab716d0635b7eb0a829f79ac394f1c7a0a05a64a Mon Sep 17 00:00:00 2001 From: Chris Denton Date: Fri, 15 Dec 2023 13:04:37 +0000 Subject: [PATCH] Use assert_unsafe_precondition for char::from_u32_unchecked Co-Authored-By: joboet --- library/core/src/char/convert.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/library/core/src/char/convert.rs b/library/core/src/char/convert.rs index 453de9754be..177f39b59ae 100644 --- a/library/core/src/char/convert.rs +++ b/library/core/src/char/convert.rs @@ -4,6 +4,7 @@ use crate::char::TryFromCharError; use crate::convert::TryFrom; use crate::error::Error; use crate::fmt; +use crate::intrinsics::assert_unsafe_precondition; use crate::mem::transmute; use crate::str::FromStr; @@ -23,7 +24,13 @@ pub(super) const fn from_u32(i: u32) -> Option { #[must_use] pub(super) const unsafe fn from_u32_unchecked(i: u32) -> char { // SAFETY: the caller must guarantee that `i` is a valid char value. - if cfg!(debug_assertions) { char::from_u32(i).unwrap() } else { unsafe { transmute(i) } } + unsafe { + assert_unsafe_precondition!( + "invalid value for `char`", + (i: u32) => char_try_from_u32(i).is_ok() + ); + transmute(i) + } } #[stable(feature = "char_convert", since = "1.13.0")]