# Struct std::string::FromUtf8Error [−] [src]

    pub struct FromUtf8Error {
        // some fields omitted
    }

1.0.0

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 `u8`s 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:

fn main() { // some invalid bytes, in a vector let bytes = vec![0, 159]; let value = String::from_utf8(bytes); assert!(value.is_err()); assert_eq!(vec![0, 159], value.unwrap_err().into_bytes()); }

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

    let value = String::from_utf8(bytes);

    assert!(value.is_err());
    assert_eq!(vec![0, 159], value.unwrap_err().into_bytes());

## Methods

### `impl FromUtf8Error`

#### `fn into_bytes(self) -> Vec<u8>`

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:

fn main() { // some invalid bytes, in a vector let bytes = vec![0, 159]; let value = String::from_utf8(bytes); assert_eq!(vec![0, 159], value.unwrap_err().into_bytes()); }

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

    let value = String::from_utf8(bytes);

    assert_eq!(vec![0, 159], value.unwrap_err().into_bytes());

#### `fn utf8_error(&self) -> Utf8Error`

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 `u8`s to a `&str`. In this sense, it's an analogue to `FromUtf8Error`. See its documentation for more details on using it.

# Examples

Basic usage:

fn main() { // some invalid bytes, in a vector let bytes = vec![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()); }

    // some invalid bytes, in a vector
    let bytes = vec![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

### `impl Display for FromUtf8Error`

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

### `impl Error for FromUtf8Error`

#### `fn description(&self) -> &str`

#### `fn cause(&self) -> Option<&Error>`

### Derived Implementations

### `impl Debug for FromUtf8Error`

#### `fn fmt(&self, __arg_0: &mut Formatter) -> Result<(), Error>`

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)