mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-15 20:45:45 +03:00
Stabilize const_cstr_from_ptr (CStr::from_ptr, CStr::count_bytes)
This commit is contained in:
@@ -263,8 +263,6 @@ impl CStr {
|
||||
/// ```
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(const_cstr_from_ptr)]
|
||||
///
|
||||
/// use std::ffi::{c_char, CStr};
|
||||
///
|
||||
/// const HELLO_PTR: *const c_char = {
|
||||
@@ -280,7 +278,7 @@ impl CStr {
|
||||
#[inline] // inline is necessary for codegen to see strlen.
|
||||
#[must_use]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[rustc_const_unstable(feature = "const_cstr_from_ptr", issue = "113219")]
|
||||
#[rustc_const_stable(feature = "const_cstr_from_ptr", since = "CURRENT_RUSTC_VERSION")]
|
||||
pub const unsafe fn from_ptr<'a>(ptr: *const c_char) -> &'a CStr {
|
||||
// SAFETY: The caller has provided a pointer that points to a valid C
|
||||
// string with a NUL terminator less than `isize::MAX` from `ptr`.
|
||||
@@ -542,7 +540,7 @@ const fn as_non_null_ptr(&self) -> NonNull<c_char> {
|
||||
#[must_use]
|
||||
#[doc(alias("len", "strlen"))]
|
||||
#[stable(feature = "cstr_count_bytes", since = "1.79.0")]
|
||||
#[rustc_const_unstable(feature = "const_cstr_from_ptr", issue = "113219")]
|
||||
#[rustc_const_stable(feature = "const_cstr_from_ptr", since = "CURRENT_RUSTC_VERSION")]
|
||||
pub const fn count_bytes(&self) -> usize {
|
||||
self.inner.len() - 1
|
||||
}
|
||||
@@ -742,6 +740,8 @@ fn as_ref(&self) -> &CStr {
|
||||
/// The pointer must point to a valid buffer that contains a NUL terminator. The NUL must be
|
||||
/// located within `isize::MAX` from `ptr`.
|
||||
#[inline]
|
||||
#[rustc_const_stable(feature = "const_cstr_from_ptr", since = "CURRENT_RUSTC_VERSION")]
|
||||
#[rustc_allow_const_fn_unstable(const_eval_select)]
|
||||
const unsafe fn const_strlen(ptr: *const c_char) -> usize {
|
||||
const fn strlen_ct(s: *const c_char) -> usize {
|
||||
let mut len = 0;
|
||||
|
||||
Reference in New Issue
Block a user