# Struct alloc::string::FromUtf8Error 1.0.0 [−] [src]

    pub struct FromUtf8Error { /* fields omitted */ }

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:

    // 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`
[src]

#### `fn as_bytes(&self) -> &[u8]`

🔬 This is a nightly-only experimental API. (`from_utf8_error_as_bytes` #40895)

recently added

Returns a slice of [`u8`]s bytes that were attempted to convert to a `String`.

# Examples

Basic usage:

    #![feature(from_utf8_error_as_bytes)]
    // some invalid bytes, in a vector
    let bytes = vec![0, 159];

    let value = String::from_utf8(bytes);

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

#### `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:

    // 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:

    // 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 Debug for FromUtf8Error`
[src]

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

Formats the value using the given formatter.

### `impl Display for FromUtf8Error`
[src]

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

Formats the value using the given formatter. Read more

# 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
+
  Collapse/expand all sections

## 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`)