Clean up is_aligned_and_not_null

This commit is contained in:
Ben Kimock 2024-10-09 18:34:33 -04:00
parent 84dacc1882
commit aec09a43ef

View File

@ -109,15 +109,15 @@ const fn comptime() -> bool {
intrinsics::ub_checks() && const_eval_select((), comptime, runtime)
}
/// Checks whether `ptr` is properly aligned with respect to
/// `align_of::<T>()`.
/// Checks whether `ptr` is properly aligned with respect to the given alignment, and
/// if `is_zst == false`, that `ptr` is not null.
///
/// In `const` this is approximate and can fail spuriously. It is primarily intended
/// for `assert_unsafe_precondition!` with `check_language_ub`, in which case the
/// check is anyway not executed in `const`.
#[inline]
pub(crate) const fn is_aligned_and_not_null(ptr: *const (), align: usize, is_zst: bool) -> bool {
if is_zst { ptr.is_aligned_to(align) } else { !ptr.is_null() && ptr.is_aligned_to(align) }
ptr.is_aligned_to(align) && (is_zst || !ptr.is_null())
}
#[inline]