make CStr::from_bytes_with_nul_unchecked() a const fn

closes #54678
This commit is contained in:
Austin Bonander 2018-10-02 03:42:01 -07:00
parent e812ca472a
commit 092bf2b500
2 changed files with 12 additions and 1 deletions

View File

@ -1040,7 +1040,8 @@ pub fn from_bytes_with_nul(bytes: &[u8])
/// ```
#[inline]
#[stable(feature = "cstr_from_bytes", since = "1.10.0")]
pub unsafe fn from_bytes_with_nul_unchecked(bytes: &[u8]) -> &CStr {
#[rustc_const_unstable(feature = "const_cstr_unchecked")]
pub const unsafe fn from_bytes_with_nul_unchecked(bytes: &[u8]) -> &CStr {
&*(bytes as *const [u8] as *const CStr)
}
@ -1471,4 +1472,13 @@ fn into_rc() {
assert_eq!(&*rc2, cstr);
assert_eq!(&*arc2, cstr);
}
#[test]
fn cstr_const_constructor() {
const CSTR: &'static CStr = unsafe {
CStr::from_bytes_with_nul_unchecked(b"Hello, world!\0")
};
assert_eq!(CSTR.to_str().unwrap(), "Hello, world!");
}
}

View File

@ -253,6 +253,7 @@
#![feature(min_const_fn)]
#![feature(const_int_ops)]
#![feature(const_ip)]
#![feature(const_raw_ptr_deref)]
#![feature(core_intrinsics)]
#![feature(dropck_eyepatch)]
#![feature(exact_size_is_empty)]