about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDeadbeef <ent3rm4n@gmail.com>2024-06-16 15:04:37 +0000
committerDeadbeef <ent3rm4n@gmail.com>2024-06-21 09:23:24 +0000
commit3b14b756d87835bf1484ee33eb5b074d3646671c (patch)
treeea0f193efa6f7130e6513092b24437b513220583
parente32ea4822ba3f7c9054a7fb5345232388cc50c4b (diff)
downloadrust-3b14b756d87835bf1484ee33eb5b074d3646671c.tar.gz
rust-3b14b756d87835bf1484ee33eb5b074d3646671c.zip
Remove `feature(effects)` from the standard library
-rw-r--r--library/alloc/src/lib.rs1
-rw-r--r--library/core/src/cmp.rs4
-rw-r--r--library/core/src/escape.rs2
-rw-r--r--library/core/src/ffi/c_str.rs4
-rw-r--r--library/core/src/lib.rs2
-rw-r--r--library/core/src/marker.rs1
-rw-r--r--library/core/src/num/nonzero.rs6
-rw-r--r--library/core/src/ops/arith.rs4
-rw-r--r--library/core/src/task/wake.rs4
-rw-r--r--library/std/src/lib.rs1
10 files changed, 10 insertions, 19 deletions
diff --git a/library/alloc/src/lib.rs b/library/alloc/src/lib.rs
index 022a14b931a..43213dce243 100644
--- a/library/alloc/src/lib.rs
+++ b/library/alloc/src/lib.rs
@@ -175,7 +175,6 @@
 #![feature(const_mut_refs)]
 #![feature(const_precise_live_drops)]
 #![feature(const_ptr_write)]
-#![feature(const_trait_impl)]
 #![feature(const_try)]
 #![feature(decl_macro)]
 #![feature(dropck_eyepatch)]
diff --git a/library/core/src/cmp.rs b/library/core/src/cmp.rs
index f3f757ce69d..cff75870790 100644
--- a/library/core/src/cmp.rs
+++ b/library/core/src/cmp.rs
@@ -245,7 +245,6 @@ use self::Ordering::*;
     append_const_msg
 )]
 #[rustc_diagnostic_item = "PartialEq"]
-#[const_trait]
 pub trait PartialEq<Rhs: ?Sized = Self> {
     /// This method tests for `self` and `other` values to be equal, and is used
     /// by `==`.
@@ -1475,8 +1474,7 @@ mod impls {
     macro_rules! partial_eq_impl {
         ($($t:ty)*) => ($(
             #[stable(feature = "rust1", since = "1.0.0")]
-            #[rustc_const_unstable(feature = "const_cmp", issue = "92391")]
-            impl const PartialEq for $t {
+            impl PartialEq for $t {
                 #[inline]
                 fn eq(&self, other: &$t) -> bool { (*self) == (*other) }
                 #[inline]
diff --git a/library/core/src/escape.rs b/library/core/src/escape.rs
index f6ec30b9f79..b213cc2b916 100644
--- a/library/core/src/escape.rs
+++ b/library/core/src/escape.rs
@@ -60,7 +60,7 @@ const fn escape_ascii<const N: usize>(byte: u8) -> ([ascii::Char; N], Range<u8>)
 const fn escape_unicode<const N: usize>(c: char) -> ([ascii::Char; N], Range<u8>) {
     const { assert!(N >= 10 && N < u8::MAX as usize) };
 
-    let c = u32::from(c);
+    let c = c as u32;
 
     // OR-ing `1` ensures that for `c == 0` the code computes that
     // one digit should be printed.
diff --git a/library/core/src/ffi/c_str.rs b/library/core/src/ffi/c_str.rs
index 297f52e756b..fbc0c7232c4 100644
--- a/library/core/src/ffi/c_str.rs
+++ b/library/core/src/ffi/c_str.rs
@@ -515,7 +515,9 @@ impl CStr {
     #[inline]
     #[must_use]
     const fn as_non_null_ptr(&self) -> NonNull<c_char> {
-        NonNull::from(&self.inner).as_non_null_ptr()
+        // FIXME(effects) replace with `NonNull::from`
+        // SAFETY: a reference is never null
+        unsafe { NonNull::new_unchecked(&self.inner as *const [c_char] as *mut [c_char]) }.as_non_null_ptr()
     }
 
     /// Returns the length of `self`. Like C's `strlen`, this does not include the nul terminator.
diff --git a/library/core/src/lib.rs b/library/core/src/lib.rs
index 94ad8fbd5df..51452e3b7b0 100644
--- a/library/core/src/lib.rs
+++ b/library/core/src/lib.rs
@@ -214,13 +214,11 @@
 #![feature(const_mut_refs)]
 #![feature(const_precise_live_drops)]
 #![feature(const_refs_to_cell)]
-#![feature(const_trait_impl)]
 #![feature(decl_macro)]
 #![feature(deprecated_suggestion)]
 #![feature(doc_cfg)]
 #![feature(doc_cfg_hide)]
 #![feature(doc_notable_trait)]
-#![feature(effects)]
 #![feature(extern_types)]
 #![feature(f128)]
 #![feature(f16)]
diff --git a/library/core/src/marker.rs b/library/core/src/marker.rs
index 1d073a6d649..2e8be7bde4b 100644
--- a/library/core/src/marker.rs
+++ b/library/core/src/marker.rs
@@ -944,7 +944,6 @@ marker_impls! {
 #[lang = "destruct"]
 #[rustc_on_unimplemented(message = "can't drop `{Self}`", append_const_msg)]
 #[rustc_deny_explicit_impl(implement_via_object = false)]
-#[const_trait]
 pub trait Destruct {}
 
 /// A marker for tuple types.
diff --git a/library/core/src/num/nonzero.rs b/library/core/src/num/nonzero.rs
index 5956a08593a..0c6f06dc017 100644
--- a/library/core/src/num/nonzero.rs
+++ b/library/core/src/num/nonzero.rs
@@ -33,7 +33,6 @@ use super::{IntErrorKind, ParseIntError};
     reason = "implementation detail which may disappear or be replaced at any time",
     issue = "none"
 )]
-#[const_trait]
 pub unsafe trait ZeroablePrimitive: Sized + Copy + private::Sealed {
     #[doc(hidden)]
     type NonZeroInner: Sized + Copy;
@@ -47,7 +46,6 @@ macro_rules! impl_zeroable_primitive {
                 reason = "implementation detail which may disappear or be replaced at any time",
                 issue = "none"
             )]
-            #[const_trait]
             pub trait Sealed {}
 
             $(
@@ -70,14 +68,14 @@ macro_rules! impl_zeroable_primitive {
                 reason = "implementation detail which may disappear or be replaced at any time",
                 issue = "none"
             )]
-            impl const private::Sealed for $primitive {}
+            impl private::Sealed for $primitive {}
 
             #[unstable(
                 feature = "nonzero_internals",
                 reason = "implementation detail which may disappear or be replaced at any time",
                 issue = "none"
             )]
-            unsafe impl const ZeroablePrimitive for $primitive {
+            unsafe impl ZeroablePrimitive for $primitive {
                 type NonZeroInner = private::$NonZeroInner;
             }
         )+
diff --git a/library/core/src/ops/arith.rs b/library/core/src/ops/arith.rs
index 5e77788d8ea..133ae04f026 100644
--- a/library/core/src/ops/arith.rs
+++ b/library/core/src/ops/arith.rs
@@ -73,7 +73,6 @@
     append_const_msg
 )]
 #[doc(alias = "+")]
-#[const_trait]
 pub trait Add<Rhs = Self> {
     /// The resulting type after applying the `+` operator.
     #[stable(feature = "rust1", since = "1.0.0")]
@@ -95,8 +94,7 @@ pub trait Add<Rhs = Self> {
 macro_rules! add_impl {
     ($($t:ty)*) => ($(
         #[stable(feature = "rust1", since = "1.0.0")]
-        #[rustc_const_unstable(feature = "const_ops", issue = "90080")]
-        impl const Add for $t {
+        impl Add for $t {
             type Output = $t;
 
             #[inline]
diff --git a/library/core/src/task/wake.rs b/library/core/src/task/wake.rs
index 3d21b09fa8a..86a965f68e0 100644
--- a/library/core/src/task/wake.rs
+++ b/library/core/src/task/wake.rs
@@ -282,7 +282,7 @@ impl<'a> Context<'a> {
     pub const fn ext(&mut self) -> &mut dyn Any {
         // FIXME: this field makes Context extra-weird about unwind safety
         // can we justify AssertUnwindSafe if we stabilize this? do we care?
-        match &mut *self.ext {
+        match &mut self.ext.0 {
             ExtData::Some(data) => *data,
             ExtData::None(unit) => unit,
         }
@@ -356,7 +356,7 @@ impl<'a> ContextBuilder<'a> {
     #[rustc_const_unstable(feature = "const_waker", issue = "102012")]
     #[unstable(feature = "context_ext", issue = "123392")]
     pub const fn from(cx: &'a mut Context<'_>) -> Self {
-        let ext = match &mut *cx.ext {
+        let ext = match &mut cx.ext.0 {
             ExtData::Some(ext) => ExtData::Some(*ext),
             ExtData::None(()) => ExtData::None(()),
         };
diff --git a/library/std/src/lib.rs b/library/std/src/lib.rs
index 80f67838ac0..caa8c7375ec 100644
--- a/library/std/src/lib.rs
+++ b/library/std/src/lib.rs
@@ -284,7 +284,6 @@
 #![feature(cfi_encoding)]
 #![feature(concat_idents)]
 #![feature(const_mut_refs)]
-#![feature(const_trait_impl)]
 #![feature(decl_macro)]
 #![feature(deprecated_suggestion)]
 #![feature(doc_cfg)]