Struct Utf8Error
pub struct Utf8Error { pub(in ::str) valid_up_to: usize, pub(in ::str) error_len: Option<u8> }
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 Strings
and &strs 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:
Fields
valid_up_to: usizeerror_len: Option<u8>
Implementations
impl Utf8Error
const fn valid_up_to(&self) -> usizeReturns 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 returnOk(_).Examples
Basic usage:
use str; // some invalid bytes, in a vector let sparkle_heart = vec!; // std::str::from_utf8 returns a Utf8Error let error = strfrom_utf8.unwrap_err; // the second byte is invalid here assert_eq!;const 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 validcharwhose 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
fn clone(&self) -> Utf8Error
impl Copy for Utf8Error
impl Debug for Utf8Error
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Display for Utf8Error
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Eq for Utf8Error
fn assert_fields_are_eq(&self)
impl Error for Utf8Error
impl PartialEq for Utf8Error
fn eq(&self, other: &Utf8Error) -> bool
impl StructuralPartialEq for Utf8Error
impl TrivialClone for Utf8Error
Auto Trait Implementations
impl Freeze for Utf8Error
impl RefUnwindSafe for Utf8Error
impl Send for Utf8Error
impl Sync for Utf8Error
impl Unpin for Utf8Error
impl UnsafeUnpin for Utf8Error
impl UnwindSafe for Utf8Error
Blanket Implementations
impl<T> Any for Utf8Error
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Utf8Error
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Utf8Error
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for Utf8Error
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for Utf8Error
fn from(t: T) -> TReturns the argument unchanged.
impl<T> Printable for Utf8Error
where
T: Copy + Debug,
impl<T> SizeHint for Utf8Error
where
T: ?Sized,
fn lower_bound(&self) -> usizefn upper_bound(&self) -> Option<usize>
impl<T> SizedTypeProperties for Utf8Error
impl<T, U> Into<U> for Utf8Error
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Utf8Error
where
U: Into<T>,
type Error = Infallible;fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto<U> for Utf8Error
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>