繁体   English   中英

为什么 to_ascii_lowercase 返回 String 而不是 Cow<str> ?

[英]Why does to_ascii_lowercase return a String rather than a Cow<str>?

str::to_ascii_lowercase返回一个字符串。 为什么它不像to_string_lossyString::from_utf8_lossy那样返回Cow<str>

这同样适用于str::to_ascii_uppercase

您可能想要返回Cow<str>大概是因为该字符串可能已经是小写了。 但是,当字符串还不是小写时,检测这种边缘情况也可能会导致性能下降,这在直觉上似乎是最常见的情况。

当然,您可以创建自己的函数来包装to_ascii_lowercase() ,检查它是否已经是小写,并返回Cow<str>

fn my_to_ascii_lowercase<'a>(s: &'a str) -> Cow<'a, str> {
    let bytes = s.as_bytes();
    if !bytes.iter().any(u8::is_ascii_uppercase) {
        Cow::Borrowed(s)
    } else {
        Cow::Owned(s.to_ascii_lowercase())
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM