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