1
Fork 0

library: Use type aliases to make CStr(ing) in libcore/liballoc unstable

This commit is contained in:
Vadim Petrochenkov 2022-04-06 17:04:18 +03:00
parent 5bee741a08
commit 7f3cc2fbbf
8 changed files with 28 additions and 13 deletions

View file

@ -106,7 +106,7 @@ use core::str::{self, Utf8Error};
/// and other memory errors. /// and other memory errors.
#[derive(PartialEq, PartialOrd, Eq, Ord, Hash, Clone)] #[derive(PartialEq, PartialOrd, Eq, Ord, Hash, Clone)]
#[cfg_attr(not(test), rustc_diagnostic_item = "cstring_type")] #[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 { pub struct CString {
// Invariant 1: the slice ends with a zero byte and has a length of at least one. // 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. // 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(); /// let _: NulError = CString::new(b"f\0oo".to_vec()).unwrap_err();
/// ``` /// ```
#[derive(Clone, PartialEq, Eq, Debug)] #[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>); pub struct NulError(usize, Vec<u8>);
#[derive(Clone, PartialEq, Eq, Debug)] #[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(); /// let _: FromVecWithNulError = CString::from_vec_with_nul(b"f\0oo".to_vec()).unwrap_err();
/// ``` /// ```
#[derive(Clone, PartialEq, Eq, Debug)] #[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 { pub struct FromVecWithNulError {
error_kind: FromBytesWithNulErrorKind, error_kind: FromBytesWithNulErrorKind,
bytes: Vec<u8>, bytes: Vec<u8>,
@ -221,7 +221,7 @@ impl FromVecWithNulError {
/// This `struct` is created by [`CString::into_string()`]. See /// This `struct` is created by [`CString::into_string()`]. See
/// its documentation for more. /// its documentation for more.
#[derive(Clone, PartialEq, Eq, Debug)] #[derive(Clone, PartialEq, Eq, Debug)]
#[stable(feature = "cstring_into", since = "1.7.0")] #[unstable(feature = "alloc_c_string", issue = "94079")]
pub struct IntoStringError { pub struct IntoStringError {
inner: CString, inner: CString,
error: Utf8Error, error: Utf8Error,

View file

@ -83,9 +83,9 @@
#[cfg(bootstrap)] #[cfg(bootstrap)]
#[unstable(feature = "cstr_internals", issue = "none")] #[unstable(feature = "cstr_internals", issue = "none")]
pub use self::c_str::CStrExt; 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; 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}; pub use self::c_str::{CString, IntoStringError, NulError};
mod c_str; mod c_str;

View file

@ -86,6 +86,7 @@
#![allow(explicit_outlives_requirements)] #![allow(explicit_outlives_requirements)]
// //
// Library features: // Library features:
#![cfg_attr(not(no_global_oom_handling), feature(alloc_c_string))]
#![feature(alloc_layout_extra)] #![feature(alloc_layout_extra)]
#![feature(allocator_api)] #![feature(allocator_api)]
#![feature(array_chunks)] #![feature(array_chunks)]
@ -105,6 +106,7 @@
#![feature(const_maybe_uninit_write)] #![feature(const_maybe_uninit_write)]
#![feature(const_maybe_uninit_as_mut_ptr)] #![feature(const_maybe_uninit_as_mut_ptr)]
#![feature(const_refs_to_cell)] #![feature(const_refs_to_cell)]
#![feature(core_c_str)]
#![feature(core_intrinsics)] #![feature(core_intrinsics)]
#![feature(core_ffi_c)] #![feature(core_ffi_c)]
#![feature(const_eval_select)] #![feature(const_eval_select)]

View file

@ -12,6 +12,7 @@
#![feature(const_nonnull_slice_from_raw_parts)] #![feature(const_nonnull_slice_from_raw_parts)]
#![feature(const_ptr_write)] #![feature(const_ptr_write)]
#![feature(const_try)] #![feature(const_try)]
#![feature(core_c_str)]
#![feature(core_ffi_c)] #![feature(core_ffi_c)]
#![feature(core_intrinsics)] #![feature(core_intrinsics)]
#![feature(drain_filter)] #![feature(drain_filter)]

View file

@ -76,7 +76,7 @@ use crate::str;
/// [str]: prim@str "str" /// [str]: prim@str "str"
#[derive(Hash)] #[derive(Hash)]
#[cfg_attr(not(test), rustc_diagnostic_item = "CStr")] #[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")] #[cfg_attr(not(bootstrap), lang = "CStr")]
// FIXME: // FIXME:
// `fn from` in `impl From<&CStr> for Box<CStr>` current implementation relies // `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(); /// let _: FromBytesWithNulError = CStr::from_bytes_with_nul(b"f\0oo").unwrap_err();
/// ``` /// ```
#[derive(Clone, PartialEq, Eq, Debug)] #[derive(Clone, PartialEq, Eq, Debug)]
#[stable(feature = "cstr_from_bytes", since = "1.10.0")] #[unstable(feature = "core_c_str", issue = "94079")]
pub struct FromBytesWithNulError { pub struct FromBytesWithNulError {
kind: FromBytesWithNulErrorKind, kind: FromBytesWithNulErrorKind,
} }

View file

@ -14,7 +14,7 @@ use crate::marker::PhantomData;
use crate::num::*; use crate::num::*;
use crate::ops::{Deref, DerefMut}; 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}; pub use self::c_str::{CStr, FromBytesUntilNulError, FromBytesWithNulError};
mod c_str; mod c_str;

View file

@ -146,14 +146,24 @@
#![stable(feature = "rust1", since = "1.0.0")] #![stable(feature = "rust1", since = "1.0.0")]
/// See [alloc::ffi::FromVecWithNulError].
#[stable(feature = "cstring_from_vec_with_nul", since = "1.58.0")] #[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")] #[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")] #[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")] #[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")] #[stable(feature = "rust1", since = "1.0.0")]
pub use self::os_str::{OsStr, OsString}; pub use self::os_str::{OsStr, OsString};

View file

@ -260,6 +260,7 @@
#![feature(atomic_mut_ptr)] #![feature(atomic_mut_ptr)]
#![feature(char_error_internals)] #![feature(char_error_internals)]
#![feature(char_internals)] #![feature(char_internals)]
#![feature(core_c_str)]
#![feature(core_intrinsics)] #![feature(core_intrinsics)]
#![feature(cstr_from_bytes_until_nul)] #![feature(cstr_from_bytes_until_nul)]
#![feature(cstr_internals)] #![feature(cstr_internals)]
@ -288,6 +289,7 @@
// //
// Library features (alloc): // Library features (alloc):
#![feature(alloc_layout_extra)] #![feature(alloc_layout_extra)]
#![feature(alloc_c_string)]
#![feature(allocator_api)] #![feature(allocator_api)]
#![feature(get_mut_unchecked)] #![feature(get_mut_unchecked)]
#![feature(map_try_insert)] #![feature(map_try_insert)]