本文简要介绍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 Utf8Error用法及代码示例
- Rust Utf8Error.valid_up_to用法及代码示例
- Rust UdpSocket.set_multicast_loop_v6用法及代码示例
- Rust UnixStream用法及代码示例
- Rust UnixStream.take_error用法及代码示例
- Rust UnixListener.accept用法及代码示例
- Rust UnsafeCell.new用法及代码示例
- Rust UnixListener.bind用法及代码示例
- Rust UnixDatagram.peek_from用法及代码示例
- Rust UnsafeCell.into_inner用法及代码示例
- Rust UdpSocket.send用法及代码示例
- Rust UnixDatagram.recv_from用法及代码示例
- Rust UdpSocket.ttl用法及代码示例
- Rust UdpSocket.set_write_timeout用法及代码示例
- Rust UnixListener.incoming用法及代码示例
- Rust UnixStream.read_timeout用法及代码示例
- Rust UnixDatagram.take_error用法及代码示例
- Rust Union用法及代码示例
- Rust UnixDatagram.peek用法及代码示例
- Rust UnixDatagram.send_to_addr用法及代码示例
- Rust UnixDatagram.read_timeout用法及代码示例
- Rust UnixDatagram.set_nonblocking用法及代码示例
- Rust UnixDatagram.connect用法及代码示例
- Rust UnsafeCell.get用法及代码示例
- Rust UnixDatagram.set_read_timeout用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Struct std::str::Utf8Error。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。