Rollup merge of #130819 - bjoernager:char-must-use-len-utf, r=Noratrieb
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).
This commit is contained in:
commit
3b2580914b
@ -606,6 +606,7 @@ pub fn escape_default(self) -> EscapeDefault {
|
||||
#[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)
|
||||
}
|
||||
@ -637,6 +638,7 @@ pub const fn len_utf8(self) -> usize {
|
||||
#[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)
|
||||
}
|
||||
@ -1738,6 +1740,7 @@ impl EscapeDebugExtArgs {
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[must_use]
|
||||
const fn len_utf8(code: u32) -> usize {
|
||||
match code {
|
||||
..MAX_ONE_B => 1,
|
||||
@ -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 }
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user