diff options
| author | Austin Bonander <austin.bonander@gmail.com> | 2018-10-02 03:42:01 -0700 |
|---|---|---|
| committer | Austin Bonander <austin.bonander@gmail.com> | 2018-10-02 04:25:40 -0700 |
| commit | 092bf2b50067a92e03da024b0406dca1c0e05d12 (patch) | |
| tree | 1905ff12c8786e6a013276ac1b300d4a2c1bd646 /src/libstd/ffi | |
| parent | e812ca472a2a5284e9f15cd9af32285d7ff3fd39 (diff) | |
| download | rust-092bf2b50067a92e03da024b0406dca1c0e05d12.tar.gz rust-092bf2b50067a92e03da024b0406dca1c0e05d12.zip | |
make `CStr::from_bytes_with_nul_unchecked()` a const fn
closes #54678
Diffstat (limited to 'src/libstd/ffi')
| -rw-r--r-- | src/libstd/ffi/c_str.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/libstd/ffi/c_str.rs b/src/libstd/ffi/c_str.rs index 63dd12f782f..dfec13cd2ec 100644 --- a/src/libstd/ffi/c_str.rs +++ b/src/libstd/ffi/c_str.rs @@ -1040,7 +1040,8 @@ impl CStr { /// ``` #[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 @@ mod tests { 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!"); + } } |
