diff options
| author | Scott McMurray <scottmcm@users.noreply.github.com> | 2022-09-21 13:43:21 -0700 |
|---|---|---|
| committer | Scott McMurray <scottmcm@users.noreply.github.com> | 2022-09-21 13:43:21 -0700 |
| commit | e2d7cdcf2badf4d8d2d89dadb65a32a2eba01aff (patch) | |
| tree | a859124a4e0ea374ce965f1c13747cb8bf8593f3 /library | |
| parent | 585bcc69807b3730e3de11c5dbceccbab12e874d (diff) | |
| download | rust-e2d7cdcf2badf4d8d2d89dadb65a32a2eba01aff.tar.gz rust-e2d7cdcf2badf4d8d2d89dadb65a32a2eba01aff.zip | |
Add `rustc_allow_const_fn_unstable` annotations to pre-existing `Layout` methods
Diffstat (limited to 'library')
| -rw-r--r-- | library/core/src/alloc/layout.rs | 3 | ||||
| -rw-r--r-- | library/core/src/lib.rs | 1 | ||||
| -rw-r--r-- | library/core/src/ptr/alignment.rs | 4 |
3 files changed, 7 insertions, 1 deletions
diff --git a/library/core/src/alloc/layout.rs b/library/core/src/alloc/layout.rs index f03502429ab..03681a16b9d 100644 --- a/library/core/src/alloc/layout.rs +++ b/library/core/src/alloc/layout.rs @@ -65,6 +65,7 @@ impl Layout { #[stable(feature = "alloc_layout", since = "1.28.0")] #[rustc_const_stable(feature = "const_alloc_layout_size_align", since = "1.50.0")] #[inline] + #[rustc_allow_const_fn_unstable(ptr_alignment_type)] pub const fn from_size_align(size: usize, align: usize) -> Result<Self, LayoutError> { if !align.is_power_of_two() { return Err(LayoutError); @@ -114,6 +115,7 @@ impl Layout { #[rustc_const_stable(feature = "const_alloc_layout_unchecked", since = "1.36.0")] #[must_use] #[inline] + #[rustc_allow_const_fn_unstable(ptr_alignment_type)] pub const unsafe fn from_size_align_unchecked(size: usize, align: usize) -> Self { // SAFETY: the caller is required to uphold the preconditions. unsafe { Layout { size, align: ValidAlign::new_unchecked(align) } } @@ -134,6 +136,7 @@ impl Layout { #[must_use = "this returns the minimum alignment, \ without modifying the layout"] #[inline] + #[rustc_allow_const_fn_unstable(ptr_alignment_type)] pub const fn align(&self) -> usize { self.align.as_usize() } diff --git a/library/core/src/lib.rs b/library/core/src/lib.rs index 5621d15c1cd..eeb5cb45f61 100644 --- a/library/core/src/lib.rs +++ b/library/core/src/lib.rs @@ -148,6 +148,7 @@ #![feature(core_panic)] #![feature(duration_consts_float)] #![feature(maybe_uninit_uninit_array)] +#![feature(ptr_alignment_type)] #![feature(ptr_metadata)] #![feature(slice_ptr_get)] #![feature(slice_split_at_unchecked)] diff --git a/library/core/src/ptr/alignment.rs b/library/core/src/ptr/alignment.rs index 5e7628c5a18..d0df316c770 100644 --- a/library/core/src/ptr/alignment.rs +++ b/library/core/src/ptr/alignment.rs @@ -24,7 +24,7 @@ impl Alignment { /// but in an `Alignment` instead of a `usize. #[unstable(feature = "ptr_alignment_type", issue = "102070")] #[inline] - pub(crate) fn of<T>() -> Self { + pub const fn of<T>() -> Self { // SAFETY: rustc ensures that type alignment is always a power of two. unsafe { Alignment::new_unchecked(mem::align_of::<T>()) } } @@ -53,6 +53,7 @@ impl Alignment { /// Equivalently, it must be `1 << exp` for some `exp` in `0..usize::BITS`. /// It must *not* be zero. #[unstable(feature = "ptr_alignment_type", issue = "102070")] + #[rustc_const_unstable(feature = "ptr_alignment_type", issue = "102070")] #[inline] pub const unsafe fn new_unchecked(align: usize) -> Self { // SAFETY: Precondition passed to the caller. @@ -65,6 +66,7 @@ impl Alignment { /// Returns the alignment as a [`NonZeroUsize`] #[unstable(feature = "ptr_alignment_type", issue = "102070")] + #[rustc_const_unstable(feature = "ptr_alignment_type", issue = "102070")] #[inline] pub const fn as_usize(self) -> usize { self.0 as usize |
