當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust Utf8Error用法及代碼示例


本文簡要介紹rust語言中 Struct std::str::Utf8Error 的用法。

用法

pub struct Utf8Error { /* fields omitted */ }

嘗試將 u8 序列解釋為字符串時可能發生的錯誤。

因此,例如, String &str from_utf8 係列函數和方法利用了這個錯誤。

例子

此錯誤類型的方法可用於創建類似於 String::from_utf8_lossy 的函數,而無需分配堆內存:

fn from_utf8_lossy<F>(mut input: &[u8], mut push: F) where F: FnMut(&str) {
    loop {
        match std::str::from_utf8(input) {
            Ok(valid) => {
                push(valid);
                break
            }
            Err(error) => {
                let (valid, after_valid) = input.split_at(error.valid_up_to());
                unsafe {
                    push(std::str::from_utf8_unchecked(valid))
                }
                push("\u{FFFD}");

                if let Some(invalid_sequence_length) = error.error_len() {
                    input = &after_valid[invalid_sequence_length..]
                } else {
                    break
                }
            }
        }
    }
}

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Struct std::str::Utf8Error。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。