Struct IntoInnerError

1.0.0 · Source
pub struct IntoInnerError<W>(/* private fields */);
Expand description

An error returned by BufWriter::into_inner which combines an error that happened while writing out the buffer, and the buffered writer object which may be used to recover from the condition.

§Examples

use std::io::BufWriter;
use std::net::TcpStream;

let mut stream = BufWriter::new(TcpStream::connect("127.0.0.1:34254").unwrap());

// do stuff with the stream

// we want to get our `TcpStream` back, so let's try:

let stream = match stream.into_inner() {
    Ok(s) => s,
    Err(e) => {
        // Here, e is an IntoInnerError
        panic!("An error occurred");
    }
};

Implementations§

Source§

impl<W> IntoInnerError<W>

1.0.0 · Source

pub fn error(&self) -> &Error

Returns the error which caused the call to BufWriter::into_inner() to fail.

This error was returned when attempting to write the internal buffer.

§Examples
use std::io::BufWriter;
use std::net::TcpStream;

let mut stream = BufWriter::new(TcpStream::connect("127.0.0.1:34254").unwrap());

// do stuff with the stream

// we want to get our `TcpStream` back, so let's try:

let stream = match stream.into_inner() {
    Ok(s) => s,
    Err(e) => {
        // Here, e is an IntoInnerError, let's log the inner error.
        //
        // We'll just 'log' to stdout for this example.
        println!("{}", e.error());

        panic!("An unexpected error occurred.");
    }
};
1.0.0 · Source

pub fn into_inner(self) -> W

Returns the buffered writer instance which generated the error.

The returned object can be used for error recovery, such as re-inspecting the buffer.

§Examples
use std::io::BufWriter;
use std::net::TcpStream;

let mut stream = BufWriter::new(TcpStream::connect("127.0.0.1:34254").unwrap());

// do stuff with the stream

// we want to get our `TcpStream` back, so let's try:

let stream = match stream.into_inner() {
    Ok(s) => s,
    Err(e) => {
        // Here, e is an IntoInnerError, let's re-examine the buffer:
        let buffer = e.into_inner();

        // do stuff to try to recover

        // afterwards, let's just return the stream
        buffer.into_inner().unwrap()
    }
};
1.55.0 · Source

pub fn into_error(self) -> Error

Consumes the IntoInnerError and returns the error which caused the call to BufWriter::into_inner() to fail. Unlike error, this can be used to obtain ownership of the underlying error.

§Example
use std::io::{BufWriter, ErrorKind, Write};

let mut not_enough_space = [0u8; 10];
let mut stream = BufWriter::new(not_enough_space.as_mut());
write!(stream, "this cannot be actually written").unwrap();
let into_inner_err = stream.into_inner().expect_err("now we discover it's too small");
let err = into_inner_err.into_error();
assert_eq!(err.kind(), ErrorKind::WriteZero);
1.55.0 · Source

pub fn into_parts(self) -> (Error, W)

Consumes the IntoInnerError and returns the error which caused the call to BufWriter::into_inner() to fail, and the underlying writer.

This can be used to simply obtain ownership of the underlying error; it can also be used for advanced error recovery.

§Example
use std::io::{BufWriter, ErrorKind, Write};

let mut not_enough_space = [0u8; 10];
let mut stream = BufWriter::new(not_enough_space.as_mut());
write!(stream, "this cannot be actually written").unwrap();
let into_inner_err = stream.into_inner().expect_err("now we discover it's too small");
let (err, recovered_writer) = into_inner_err.into_parts();
assert_eq!(err.kind(), ErrorKind::WriteZero);
assert_eq!(recovered_writer.buffer(), b"t be actually written");

Trait Implementations§

1.0.0 · Source§

impl<W: Debug> Debug for IntoInnerError<W>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
1.0.0 · Source§

impl<W> Display for IntoInnerError<W>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
1.0.0 · Source§

impl<W: Send + Debug> Error for IntoInnerError<W>

Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access #99301)
Provides type-based access to context intended for error reports. Read more
1.0.0 · Source§

impl<W> From<IntoInnerError<W>> for Error

Source§

fn from(iie: IntoInnerError<W>) -> Error

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<W> Freeze for IntoInnerError<W>
where W: Freeze,

§

impl<W> !RefUnwindSafe for IntoInnerError<W>

§

impl<W> Send for IntoInnerError<W>
where W: Send,

§

impl<W> Sync for IntoInnerError<W>
where W: Sync,

§

impl<W> Unpin for IntoInnerError<W>
where W: Unpin,

§

impl<W> !UnwindSafe for IntoInnerError<W>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy