pub struct FromUtf8Error<'bump> { /* private fields */ }
Expand description

A possible error value when converting a String from a UTF-8 byte vector.

This type is the error type for the from_utf8 method on String. It is designed in such a way to carefully avoid reallocations: the into_bytes method will give back the byte vector that was used in the conversion attempt.

The Utf8Error type provided by std::str represents an error that may occur when converting a slice of u8s to a &str. In this sense, it’s an analogue to FromUtf8Error, and you can get one from a FromUtf8Error through the utf8_error method.

Examples

Basic usage:

use bumpalo::{Bump, collections::String};

let b = Bump::new();

// some invalid bytes, in a vector
let bytes = bumpalo::vec![in &b; 0, 159];

let value = String::from_utf8(bytes);

assert!(value.is_err());
assert_eq!(bumpalo::vec![in &b; 0, 159], value.unwrap_err().into_bytes());

Implementations§

Returns a slice of bytes that were attempted to convert to a String.

Examples

Basic usage:

use bumpalo::{Bump, collections::String};

let b = Bump::new();

// some invalid bytes, in a vector
let bytes = bumpalo::vec![in &b; 0, 159];

let value = String::from_utf8(bytes);

assert_eq!(&[0, 159], value.unwrap_err().as_bytes());

Returns the bytes that were attempted to convert to a String.

This method is carefully constructed to avoid allocation. It will consume the error, moving out the bytes, so that a copy of the bytes does not need to be made.

Examples

Basic usage:

use bumpalo::{Bump, collections::String};

let b = Bump::new();

// some invalid bytes, in a vector
let bytes = bumpalo::vec![in &b; 0, 159];

let value = String::from_utf8(bytes);

assert_eq!(bumpalo::vec![in &b; 0, 159], value.unwrap_err().into_bytes());

Fetch a Utf8Error to get more details about the conversion failure.

The Utf8Error type provided by std::str represents an error that may occur when converting a slice of u8s to a &str. In this sense, it’s an analogue to FromUtf8Error. See its documentation for more details on using it.

Examples

Basic usage:

use bumpalo::{Bump, collections::String};

let b = Bump::new();

// some invalid bytes, in a vector
let bytes = bumpalo::vec![in &b; 0, 159];

let error = String::from_utf8(bytes).unwrap_err().utf8_error();

// the first byte is invalid here
assert_eq!(1, error.valid_up_to());

Trait Implementations§

Formats the value using the given formatter. Read more
Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.