about summary refs log tree commit diff
path: root/compiler/rustc_data_structures/src
diff options
context:
space:
mode:
authorDylan DPC <dylan.dpc@gmail.com>2021-02-27 02:34:21 +0100
committerGitHub <noreply@github.com>2021-02-27 02:34:21 +0100
commitcabe97272d782294e0d642135f3d8b13579b2929 (patch)
tree2af31ef1bee69e720a118099e88dbe0d33137255 /compiler/rustc_data_structures/src
parentdb8ac16d000e9cd454f8ab99fb04c4410243fa88 (diff)
parent38e4233a3291b0b8e3148e7ea47da66c9d8b307f (diff)
downloadrust-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.rs30
-rw-r--r--compiler/rustc_data_structures/src/lib.rs1
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;