diff options
| author | Dylan DPC <dylan.dpc@gmail.com> | 2021-02-27 02:34:21 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-27 02:34:21 +0100 |
| commit | cabe97272d782294e0d642135f3d8b13579b2929 (patch) | |
| tree | 2af31ef1bee69e720a118099e88dbe0d33137255 /compiler/rustc_data_structures/src | |
| parent | db8ac16d000e9cd454f8ab99fb04c4410243fa88 (diff) | |
| parent | 38e4233a3291b0b8e3148e7ea47da66c9d8b307f (diff) | |
| download | rust-cabe97272d782294e0d642135f3d8b13579b2929.tar.gz rust-cabe97272d782294e0d642135f3d8b13579b2929.zip | |
Rollup merge of #82057 - upsuper-forks:cstr, r=davidtwco,wesleywiser
Replace const_cstr with cstr crate This PR replaces the `const_cstr` macro inside `rustc_data_structures` with `cstr` macro from [cstr](https://crates.io/crates/cstr) crate. The two macros basically serve the same purpose, which is to generate `&'static CStr` from a string literal. `cstr` is better because it validates the literal at compile time, while the existing `const_cstr` does it at runtime when `debug_assertions` is enabled. In addition, the value `cstr` generates can be used in constant context (which is seemingly not needed anywhere currently, though).
Diffstat (limited to 'compiler/rustc_data_structures/src')
| -rw-r--r-- | compiler/rustc_data_structures/src/const_cstr.rs | 30 | ||||
| -rw-r--r-- | compiler/rustc_data_structures/src/lib.rs | 1 |
2 files changed, 0 insertions, 31 deletions
diff --git a/compiler/rustc_data_structures/src/const_cstr.rs b/compiler/rustc_data_structures/src/const_cstr.rs deleted file mode 100644 index 1ebcb87818e..00000000000 --- a/compiler/rustc_data_structures/src/const_cstr.rs +++ /dev/null @@ -1,30 +0,0 @@ -/// This macro creates a zero-overhead &CStr by adding a NUL terminator to -/// the string literal passed into it at compile-time. Use it like: -/// -/// ``` -/// let some_const_cstr = const_cstr!("abc"); -/// ``` -/// -/// The above is roughly equivalent to: -/// -/// ``` -/// let some_const_cstr = CStr::from_bytes_with_nul(b"abc\0").unwrap() -/// ``` -/// -/// Note that macro only checks the string literal for internal NULs if -/// debug-assertions are enabled in order to avoid runtime overhead in release -/// builds. -#[macro_export] -macro_rules! const_cstr { - ($s:expr) => {{ - use std::ffi::CStr; - - let str_plus_nul = concat!($s, "\0"); - - if cfg!(debug_assertions) { - CStr::from_bytes_with_nul(str_plus_nul.as_bytes()).unwrap() - } else { - unsafe { CStr::from_bytes_with_nul_unchecked(str_plus_nul.as_bytes()) } - } - }}; -} diff --git a/compiler/rustc_data_structures/src/lib.rs b/compiler/rustc_data_structures/src/lib.rs index 4ab493d3cc9..fcb2bca7b4c 100644 --- a/compiler/rustc_data_structures/src/lib.rs +++ b/compiler/rustc_data_structures/src/lib.rs @@ -69,7 +69,6 @@ pub mod base_n; pub mod binary_search_util; pub mod box_region; pub mod captures; -pub mod const_cstr; pub mod flock; pub mod functor; pub mod fx; |
