Skip to content

Commit

Permalink
Rollup merge of #130819 - bjoernager:char-must-use-len-utf, r=Noratrieb
Browse files Browse the repository at this point in the history
Add `must_use` attribute to `len_utf8` and `len_utf16`.

The `len_utf8` and `len_utf16` methods in `char` should have the `must_use` attribute.

The somewhat similar method `<[T]>::len` has had this attribute since #95274. Considering that these two methods would most likely be used to test the size of a buffer (before a call to `encode_utf8` or `encode_utf16`), *not* using their return values could indicate a bug.

According to ["When to add `#[must_use]`](https://std-dev-guide.rust-lang.org/policy/must-use.html), this is **not** considered a breaking change (and could be reverted again at a later time).
  • Loading branch information
matthiaskrgr authored Sep 25, 2024
2 parents 3ee3e06 + b466fa6 commit 3b25809
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions library/core/src/char/methods.rs
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,7 @@ impl char {
#[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_stable(feature = "const_char_len_utf", since = "1.52.0")]
#[inline]
#[must_use]
pub const fn len_utf8(self) -> usize {
len_utf8(self as u32)
}
Expand Down Expand Up @@ -637,6 +638,7 @@ impl char {
#[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_stable(feature = "const_char_len_utf", since = "1.52.0")]
#[inline]
#[must_use]
pub const fn len_utf16(self) -> usize {
len_utf16(self as u32)
}
Expand Down Expand Up @@ -1738,6 +1740,7 @@ impl EscapeDebugExtArgs {
}

#[inline]
#[must_use]
const fn len_utf8(code: u32) -> usize {
match code {
..MAX_ONE_B => 1,
Expand All @@ -1748,6 +1751,7 @@ const fn len_utf8(code: u32) -> usize {
}

#[inline]
#[must_use]
const fn len_utf16(code: u32) -> usize {
if (code & 0xFFFF) == code { 1 } else { 2 }
}
Expand Down

0 comments on commit 3b25809

Please sign in to comment.