簡體   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