Skip to content

Commit

Permalink
Rollup merge of #109682 - clubby789:c-str-inline, r=scottmcm
Browse files Browse the repository at this point in the history
Add `#[inline]` to CStr trait implementations

Fixes #109674

I noticed other usages of traits on `CStr` weren't being inlined, so also added hints to the other implementations
  • Loading branch information
matthiaskrgr authored Mar 28, 2023
2 parents fceb3d4 + 901f108 commit 90b6c71
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions library/core/src/ffi/c_str.rs
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ impl fmt::Debug for CStr {

#[stable(feature = "cstr_default", since = "1.10.0")]
impl Default for &CStr {
#[inline]
fn default() -> Self {
const SLICE: &[c_char] = &[0];
// SAFETY: `SLICE` is indeed pointing to a valid nul-terminated string.
Expand Down Expand Up @@ -623,6 +624,7 @@ impl CStr {

#[stable(feature = "rust1", since = "1.0.0")]
impl PartialEq for CStr {
#[inline]
fn eq(&self, other: &CStr) -> bool {
self.to_bytes().eq(other.to_bytes())
}
Expand All @@ -631,12 +633,14 @@ impl PartialEq for CStr {
impl Eq for CStr {}
#[stable(feature = "rust1", since = "1.0.0")]
impl PartialOrd for CStr {
#[inline]
fn partial_cmp(&self, other: &CStr) -> Option<Ordering> {
self.to_bytes().partial_cmp(&other.to_bytes())
}
}
#[stable(feature = "rust1", since = "1.0.0")]
impl Ord for CStr {
#[inline]
fn cmp(&self, other: &CStr) -> Ordering {
self.to_bytes().cmp(&other.to_bytes())
}
Expand All @@ -646,6 +650,7 @@ impl Ord for CStr {
impl ops::Index<ops::RangeFrom<usize>> for CStr {
type Output = CStr;

#[inline]
fn index(&self, index: ops::RangeFrom<usize>) -> &CStr {
let bytes = self.to_bytes_with_nul();
// we need to manually check the starting index to account for the null
Expand Down

0 comments on commit 90b6c71

Please sign in to comment.