Struct std::str::Utf8Error
pub struct Utf8Error { /* fields omitted */ }
Errors which can occur when attempting to interpret a sequence of u8
as a string.
As such, the from_utf8
family of functions and methods for both String
s and &str
s make use of this error, for example.
Examples
This error type’s methods can be used to create functionality similar to String::from_utf8_lossy
without allocating heap memory:
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 } } } } }
Implementations
impl Utf8Error
pub fn valid_up_to(&self) -> usize
Returns the index in the given string up to which valid UTF-8 was verified.
It is the maximum index such that from_utf8(&input[..index])
would return Ok(_)
.
Examples
Basic usage:
use std::str; // some invalid bytes, in a vector let sparkle_heart = vec![0, 159, 146, 150]; // std::str::from_utf8 returns a Utf8Error let error = str::from_utf8(&sparkle_heart).unwrap_err(); // the second byte is invalid here assert_eq!(1, error.valid_up_to());
pub fn error_len(&self) -> Option<usize>
Provides more information about the failure:
-
None
: the end of the input was reached unexpectedly.self.valid_up_to()
is 1 to 3 bytes from the end of the input. If a byte stream (such as a file or a network socket) is being decoded incrementally, this could be a validchar
whose UTF-8 byte sequence is spanning multiple chunks. -
Some(len)
: an unexpected byte was encountered. The length provided is that of the invalid byte sequence that starts at the index given byvalid_up_to()
. Decoding should resume after that sequence (after inserting aU+FFFD REPLACEMENT CHARACTER
) in case of lossy decoding.
Trait Implementations
impl Clone for Utf8Error
pub fn clone(&self) -> Utf8Error
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
impl Debug for Utf8Error
pub fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Formats the value using the given formatter. Read more
impl Display for Utf8Error
pub fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Formats the value using the given formatter. Read more
impl Error for Utf8Error
fn description(&self) -> &str
use the Display impl or to_string()
fn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more
fn backtrace(&self) -> Option<&Backtrace>
Returns a stack backtrace, if available, of where this error occurred. Read more
fn cause(&self) -> Option<&dyn Error>
replaced by Error::source, which can support downcasting
impl PartialEq<Utf8Error> for Utf8Error
pub fn eq(&self, other: &Utf8Error) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
pub fn ne(&self, other: &Utf8Error) -> bool
This method tests for !=
.
impl Copy for Utf8Error
impl Eq for Utf8Error
impl StructuralEq for Utf8Error
impl StructuralPartialEq for Utf8Error
Auto Trait Implementations
impl RefUnwindSafe for Utf8Error
impl Send for Utf8Error
impl Sync for Utf8Error
impl Unpin for Utf8Error
impl UnwindSafe for Utf8Error
Blanket Implementations
impl<T> From<T> for T
pub fn from(t: T) -> T
Performs the conversion.
pub fn into(self) -> U
Performs the conversion.
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
#41263)recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
Performs the conversion.
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
Performs the conversion.
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/str/struct.Utf8Error.html