about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--library/alloc/src/ffi/c_str.rs8
-rw-r--r--library/alloc/src/ffi/mod.rs4
-rw-r--r--library/alloc/src/lib.rs2
-rw-r--r--library/alloc/tests/lib.rs1
-rw-r--r--library/core/src/ffi/c_str.rs4
-rw-r--r--library/core/src/ffi/mod.rs2
-rw-r--r--library/std/src/ffi/mod.rs18
-rw-r--r--library/std/src/lib.rs2
8 files changed, 28 insertions, 13 deletions
diff --git a/library/alloc/src/ffi/c_str.rs b/library/alloc/src/ffi/c_str.rs
index 21433a3baa9..6a522c0cada 100644
--- a/library/alloc/src/ffi/c_str.rs
+++ b/library/alloc/src/ffi/c_str.rs
@@ -106,7 +106,7 @@ use core::str::{self, Utf8Error};
 /// and other memory errors.
 #[derive(PartialEq, PartialOrd, Eq, Ord, Hash, Clone)]
 #[cfg_attr(not(test), rustc_diagnostic_item = "cstring_type")]
-#[stable(feature = "rust1", since = "1.0.0")]
+#[unstable(feature = "alloc_c_string", issue = "94079")]
 pub struct CString {
     // Invariant 1: the slice ends with a zero byte and has a length of at least one.
     // Invariant 2: the slice contains only one zero byte.
@@ -130,7 +130,7 @@ pub struct CString {
 /// let _: NulError = CString::new(b"f\0oo".to_vec()).unwrap_err();
 /// ```
 #[derive(Clone, PartialEq, Eq, Debug)]
-#[stable(feature = "rust1", since = "1.0.0")]
+#[unstable(feature = "alloc_c_string", issue = "94079")]
 pub struct NulError(usize, Vec<u8>);
 
 #[derive(Clone, PartialEq, Eq, Debug)]
@@ -155,7 +155,7 @@ enum FromBytesWithNulErrorKind {
 /// let _: FromVecWithNulError = CString::from_vec_with_nul(b"f\0oo".to_vec()).unwrap_err();
 /// ```
 #[derive(Clone, PartialEq, Eq, Debug)]
-#[stable(feature = "cstring_from_vec_with_nul", since = "1.58.0")]
+#[unstable(feature = "alloc_c_string", issue = "94079")]
 pub struct FromVecWithNulError {
     error_kind: FromBytesWithNulErrorKind,
     bytes: Vec<u8>,
@@ -221,7 +221,7 @@ impl FromVecWithNulError {
 /// This `struct` is created by [`CString::into_string()`]. See
 /// its documentation for more.
 #[derive(Clone, PartialEq, Eq, Debug)]
-#[stable(feature = "cstring_into", since = "1.7.0")]
+#[unstable(feature = "alloc_c_string", issue = "94079")]
 pub struct IntoStringError {
     inner: CString,
     error: Utf8Error,
diff --git a/library/alloc/src/ffi/mod.rs b/library/alloc/src/ffi/mod.rs
index 6b2e4af45b2..eed2851c153 100644
--- a/library/alloc/src/ffi/mod.rs
+++ b/library/alloc/src/ffi/mod.rs
@@ -83,9 +83,9 @@
 #[cfg(bootstrap)]
 #[unstable(feature = "cstr_internals", issue = "none")]
 pub use self::c_str::CStrExt;
-#[stable(feature = "cstring_from_vec_with_nul", since = "1.58.0")]
+#[unstable(feature = "alloc_c_string", issue = "94079")]
 pub use self::c_str::FromVecWithNulError;
-#[stable(feature = "rust1", since = "1.0.0")]
+#[unstable(feature = "alloc_c_string", issue = "94079")]
 pub use self::c_str::{CString, IntoStringError, NulError};
 
 mod c_str;
diff --git a/library/alloc/src/lib.rs b/library/alloc/src/lib.rs
index f577afdce1e..4d2dc4ecee0 100644
--- a/library/alloc/src/lib.rs
+++ b/library/alloc/src/lib.rs
@@ -86,6 +86,7 @@
 #![allow(explicit_outlives_requirements)]
 //
 // Library features:
+#![cfg_attr(not(no_global_oom_handling), feature(alloc_c_string))]
 #![feature(alloc_layout_extra)]
 #![feature(allocator_api)]
 #![feature(array_chunks)]
@@ -105,6 +106,7 @@
 #![feature(const_maybe_uninit_write)]
 #![feature(const_maybe_uninit_as_mut_ptr)]
 #![feature(const_refs_to_cell)]
+#![feature(core_c_str)]
 #![feature(core_intrinsics)]
 #![feature(core_ffi_c)]
 #![feature(const_eval_select)]
diff --git a/library/alloc/tests/lib.rs b/library/alloc/tests/lib.rs
index 11cd998c957..8de159246c6 100644
--- a/library/alloc/tests/lib.rs
+++ b/library/alloc/tests/lib.rs
@@ -12,6 +12,7 @@
 #![feature(const_nonnull_slice_from_raw_parts)]
 #![feature(const_ptr_write)]
 #![feature(const_try)]
+#![feature(core_c_str)]
 #![feature(core_ffi_c)]
 #![feature(core_intrinsics)]
 #![feature(drain_filter)]
diff --git a/library/core/src/ffi/c_str.rs b/library/core/src/ffi/c_str.rs
index 005db8d6883..15d9d013997 100644
--- a/library/core/src/ffi/c_str.rs
+++ b/library/core/src/ffi/c_str.rs
@@ -76,7 +76,7 @@ use crate::str;
 /// [str]: prim@str "str"
 #[derive(Hash)]
 #[cfg_attr(not(test), rustc_diagnostic_item = "CStr")]
-#[stable(feature = "rust1", since = "1.0.0")]
+#[unstable(feature = "core_c_str", issue = "94079")]
 #[cfg_attr(not(bootstrap), lang = "CStr")]
 // FIXME:
 // `fn from` in `impl From<&CStr> for Box<CStr>` current implementation relies
@@ -108,7 +108,7 @@ pub struct CStr {
 /// let _: FromBytesWithNulError = CStr::from_bytes_with_nul(b"f\0oo").unwrap_err();
 /// ```
 #[derive(Clone, PartialEq, Eq, Debug)]
-#[stable(feature = "cstr_from_bytes", since = "1.10.0")]
+#[unstable(feature = "core_c_str", issue = "94079")]
 pub struct FromBytesWithNulError {
     kind: FromBytesWithNulErrorKind,
 }
diff --git a/library/core/src/ffi/mod.rs b/library/core/src/ffi/mod.rs
index d2df2671204..6c49521c223 100644
--- a/library/core/src/ffi/mod.rs
+++ b/library/core/src/ffi/mod.rs
@@ -14,7 +14,7 @@ use crate::marker::PhantomData;
 use crate::num::*;
 use crate::ops::{Deref, DerefMut};
 
-#[stable(feature = "rust1", since = "1.0.0")]
+#[unstable(feature = "core_c_str", issue = "94079")]
 pub use self::c_str::{CStr, FromBytesUntilNulError, FromBytesWithNulError};
 
 mod c_str;
diff --git a/library/std/src/ffi/mod.rs b/library/std/src/ffi/mod.rs
index 5989ba71de0..0141a2bccdf 100644
--- a/library/std/src/ffi/mod.rs
+++ b/library/std/src/ffi/mod.rs
@@ -146,14 +146,24 @@
 
 #![stable(feature = "rust1", since = "1.0.0")]
 
+/// See [alloc::ffi::FromVecWithNulError].
 #[stable(feature = "cstring_from_vec_with_nul", since = "1.58.0")]
-pub use alloc::ffi::FromVecWithNulError;
+pub type FromVecWithNulError = alloc::ffi::FromVecWithNulError;
+/// See [alloc::ffi::CString].
 #[stable(feature = "rust1", since = "1.0.0")]
-pub use alloc::ffi::{CString, IntoStringError, NulError};
+pub type CString = alloc::ffi::CString;
+/// See [alloc::ffi::IntoStringError].
 #[stable(feature = "rust1", since = "1.0.0")]
-pub use core::ffi::CStr;
+pub type IntoStringError = alloc::ffi::IntoStringError;
+/// See [alloc::ffi::NulError].
+#[stable(feature = "rust1", since = "1.0.0")]
+pub type NulError = alloc::ffi::NulError;
+/// See [core::ffi::CStr].
+#[stable(feature = "rust1", since = "1.0.0")]
+pub type CStr = core::ffi::CStr;
+/// See [core::ffi::FromBytesWithNulError].
 #[stable(feature = "cstr_from_bytes", since = "1.10.0")]
-pub use core::ffi::FromBytesWithNulError;
+pub type FromBytesWithNulError = core::ffi::FromBytesWithNulError;
 
 #[stable(feature = "rust1", since = "1.0.0")]
 pub use self::os_str::{OsStr, OsString};
diff --git a/library/std/src/lib.rs b/library/std/src/lib.rs
index 411a38038f1..039e3d59a4d 100644
--- a/library/std/src/lib.rs
+++ b/library/std/src/lib.rs
@@ -260,6 +260,7 @@
 #![feature(atomic_mut_ptr)]
 #![feature(char_error_internals)]
 #![feature(char_internals)]
+#![feature(core_c_str)]
 #![feature(core_intrinsics)]
 #![feature(cstr_from_bytes_until_nul)]
 #![feature(cstr_internals)]
@@ -288,6 +289,7 @@
 //
 // Library features (alloc):
 #![feature(alloc_layout_extra)]
+#![feature(alloc_c_string)]
 #![feature(allocator_api)]
 #![feature(get_mut_unchecked)]
 #![feature(map_try_insert)]