str_utils/
to_uppercase.rs1use alloc::{borrow::Cow, str};
2
3pub trait ToUppercase {
5 fn is_uppercase(&self) -> bool;
7
8 fn is_ascii_uppercase(&self) -> bool;
10
11 fn to_uppercase_cow(&self) -> Cow<'_, str>;
13
14 fn to_ascii_uppercase_cow(&self) -> Cow<'_, str>;
16}
17
18impl<T: AsRef<str>> ToUppercase for T {
19 #[inline]
20 fn is_uppercase(&self) -> bool {
21 self.as_ref().chars().all(|c| c.is_uppercase())
22 }
23
24 #[inline]
25 fn is_ascii_uppercase(&self) -> bool {
26 self.as_ref().chars().all(|c| c.is_ascii_uppercase())
27 }
28
29 #[inline]
30 fn to_uppercase_cow(&self) -> Cow<'_, str> {
31 if self.is_uppercase() {
32 Cow::from(self.as_ref())
33 } else {
34 Cow::from(self.as_ref().to_uppercase())
35 }
36 }
37
38 #[inline]
39 fn to_ascii_uppercase_cow(&self) -> Cow<'_, str> {
40 if self.is_ascii_uppercase() {
41 Cow::from(self.as_ref())
42 } else {
43 Cow::from(self.as_ref().to_ascii_uppercase())
44 }
45 }
46}