make const_alloc_layout feature gate only about functions that are already stable

the rest has their constness guarded by their usual feature gate
This commit is contained in:
Ralf Jung 2024-11-01 14:18:11 +01:00
parent a8e1186e3c
commit c9e77e8776

View File

@ -216,7 +216,7 @@ pub const fn for_value<T: ?Sized>(t: &T) -> Self {
/// [trait object]: ../../book/ch17-02-trait-objects.html /// [trait object]: ../../book/ch17-02-trait-objects.html
/// [extern type]: ../../unstable-book/language-features/extern-types.html /// [extern type]: ../../unstable-book/language-features/extern-types.html
#[unstable(feature = "layout_for_ptr", issue = "69835")] #[unstable(feature = "layout_for_ptr", issue = "69835")]
#[rustc_const_unstable(feature = "const_alloc_layout", issue = "67521")] #[rustc_const_unstable(feature = "layout_for_ptr", issue = "69835")]
#[must_use] #[must_use]
pub const unsafe fn for_value_raw<T: ?Sized>(t: *const T) -> Self { pub const unsafe fn for_value_raw<T: ?Sized>(t: *const T) -> Self {
// SAFETY: we pass along the prerequisites of these functions to the caller // SAFETY: we pass along the prerequisites of these functions to the caller
@ -232,7 +232,6 @@ pub const fn for_value<T: ?Sized>(t: &T) -> Self {
/// sentinel value. Types that lazily allocate must track initialization by /// sentinel value. Types that lazily allocate must track initialization by
/// some other means. /// some other means.
#[unstable(feature = "alloc_layout_extra", issue = "55724")] #[unstable(feature = "alloc_layout_extra", issue = "55724")]
#[rustc_const_unstable(feature = "alloc_layout_extra", issue = "55724")]
#[must_use] #[must_use]
#[inline] #[inline]
pub const fn dangling(&self) -> NonNull<u8> { pub const fn dangling(&self) -> NonNull<u8> {
@ -256,6 +255,7 @@ pub const fn dangling(&self) -> NonNull<u8> {
/// `align` violates the conditions listed in [`Layout::from_size_align`]. /// `align` violates the conditions listed in [`Layout::from_size_align`].
#[stable(feature = "alloc_layout_manipulation", since = "1.44.0")] #[stable(feature = "alloc_layout_manipulation", since = "1.44.0")]
#[rustc_const_unstable(feature = "const_alloc_layout", issue = "67521")] #[rustc_const_unstable(feature = "const_alloc_layout", issue = "67521")]
#[cfg_attr(not(bootstrap), rustc_const_stable_indirect)]
#[inline] #[inline]
pub const fn align_to(&self, align: usize) -> Result<Self, LayoutError> { pub const fn align_to(&self, align: usize) -> Result<Self, LayoutError> {
if let Some(align) = Alignment::new(align) { if let Some(align) = Alignment::new(align) {
@ -282,7 +282,6 @@ pub const fn align_to(&self, align: usize) -> Result<Self, LayoutError> {
/// address for the whole allocated block of memory. One way to /// address for the whole allocated block of memory. One way to
/// satisfy this constraint is to ensure `align <= self.align()`. /// satisfy this constraint is to ensure `align <= self.align()`.
#[unstable(feature = "alloc_layout_extra", issue = "55724")] #[unstable(feature = "alloc_layout_extra", issue = "55724")]
#[rustc_const_unstable(feature = "const_alloc_layout", issue = "67521")]
#[must_use = "this returns the padding needed, \ #[must_use = "this returns the padding needed, \
without modifying the `Layout`"] without modifying the `Layout`"]
#[inline] #[inline]
@ -332,6 +331,7 @@ const fn size_rounded_up_to_custom_align(&self, align: Alignment) -> usize {
/// to the layout's current size. /// to the layout's current size.
#[stable(feature = "alloc_layout_manipulation", since = "1.44.0")] #[stable(feature = "alloc_layout_manipulation", since = "1.44.0")]
#[rustc_const_unstable(feature = "const_alloc_layout", issue = "67521")] #[rustc_const_unstable(feature = "const_alloc_layout", issue = "67521")]
#[cfg_attr(not(bootstrap), rustc_const_stable_indirect)]
#[must_use = "this returns a new `Layout`, \ #[must_use = "this returns a new `Layout`, \
without modifying the original"] without modifying the original"]
#[inline] #[inline]
@ -374,7 +374,6 @@ pub const fn pad_to_align(&self) -> Layout {
/// assert_eq!(repeated, (Layout::from_size_align(24, 4).unwrap(), 8)); /// assert_eq!(repeated, (Layout::from_size_align(24, 4).unwrap(), 8));
/// ``` /// ```
#[unstable(feature = "alloc_layout_extra", issue = "55724")] #[unstable(feature = "alloc_layout_extra", issue = "55724")]
#[rustc_const_unstable(feature = "const_alloc_layout", issue = "67521")]
#[inline] #[inline]
pub const fn repeat(&self, n: usize) -> Result<(Self, usize), LayoutError> { pub const fn repeat(&self, n: usize) -> Result<(Self, usize), LayoutError> {
let padded = self.pad_to_align(); let padded = self.pad_to_align();
@ -432,6 +431,7 @@ pub const fn repeat(&self, n: usize) -> Result<(Self, usize), LayoutError> {
/// ``` /// ```
#[stable(feature = "alloc_layout_manipulation", since = "1.44.0")] #[stable(feature = "alloc_layout_manipulation", since = "1.44.0")]
#[rustc_const_unstable(feature = "const_alloc_layout", issue = "67521")] #[rustc_const_unstable(feature = "const_alloc_layout", issue = "67521")]
#[cfg_attr(not(bootstrap), rustc_const_stable_indirect)]
#[inline] #[inline]
pub const fn extend(&self, next: Self) -> Result<(Self, usize), LayoutError> { pub const fn extend(&self, next: Self) -> Result<(Self, usize), LayoutError> {
let new_align = Alignment::max(self.align, next.align); let new_align = Alignment::max(self.align, next.align);
@ -463,7 +463,6 @@ pub const fn extend(&self, next: Self) -> Result<(Self, usize), LayoutError> {
/// ///
/// On arithmetic overflow, returns `LayoutError`. /// On arithmetic overflow, returns `LayoutError`.
#[unstable(feature = "alloc_layout_extra", issue = "55724")] #[unstable(feature = "alloc_layout_extra", issue = "55724")]
#[rustc_const_unstable(feature = "const_alloc_layout", issue = "67521")]
#[inline] #[inline]
pub const fn repeat_packed(&self, n: usize) -> Result<Self, LayoutError> { pub const fn repeat_packed(&self, n: usize) -> Result<Self, LayoutError> {
if let Some(size) = self.size.checked_mul(n) { if let Some(size) = self.size.checked_mul(n) {
@ -481,7 +480,6 @@ pub const fn repeat_packed(&self, n: usize) -> Result<Self, LayoutError> {
/// ///
/// On arithmetic overflow, returns `LayoutError`. /// On arithmetic overflow, returns `LayoutError`.
#[unstable(feature = "alloc_layout_extra", issue = "55724")] #[unstable(feature = "alloc_layout_extra", issue = "55724")]
#[rustc_const_unstable(feature = "const_alloc_layout", issue = "67521")]
#[inline] #[inline]
pub const fn extend_packed(&self, next: Self) -> Result<Self, LayoutError> { pub const fn extend_packed(&self, next: Self) -> Result<Self, LayoutError> {
// SAFETY: each `size` is at most `isize::MAX == usize::MAX/2`, so the // SAFETY: each `size` is at most `isize::MAX == usize::MAX/2`, so the
@ -497,6 +495,7 @@ pub const fn extend_packed(&self, next: Self) -> Result<Self, LayoutError> {
/// `isize::MAX`, returns `LayoutError`. /// `isize::MAX`, returns `LayoutError`.
#[stable(feature = "alloc_layout_manipulation", since = "1.44.0")] #[stable(feature = "alloc_layout_manipulation", since = "1.44.0")]
#[rustc_const_unstable(feature = "const_alloc_layout", issue = "67521")] #[rustc_const_unstable(feature = "const_alloc_layout", issue = "67521")]
#[cfg_attr(not(bootstrap), rustc_const_stable_indirect)]
#[inline] #[inline]
pub const fn array<T>(n: usize) -> Result<Self, LayoutError> { pub const fn array<T>(n: usize) -> Result<Self, LayoutError> {
// Reduce the amount of code we need to monomorphize per `T`. // Reduce the amount of code we need to monomorphize per `T`.