本文簡要介紹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 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 core::str::Utf8Error。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。