当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust Utf8Error用法及代码示例


本文简要介绍rust语言中 Struct core::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 core::str::Utf8Error。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。