Struct eos_rs::api::io::IntoInnerError
source · pub struct IntoInnerError<W>(_, _);
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 acid_io::{BufWriter, Write};
let mut writer = BufWriter::new(Vec::new());
// do stuff with the vec
writer.write_all("I live in a vector now!".as_bytes())?;
// we want to get our `Vec` back, so let's try:
let buf = match writer.into_inner() {
Ok(b) => b,
Err(e) => {
// Here, e is an IntoInnerError
panic!("An error occurred");
}
};
Implementations§
source§impl<W> IntoInnerError<W>
impl<W> IntoInnerError<W>
sourcepub fn error(&self) -> &Error
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 acid_io::{BufWriter, Write};
let mut writer = BufWriter::new(Vec::new());
// do stuff with the vec
writer.write_all("I live in a vector now!".as_bytes())?;
// we want to get our `Vec` back, so let's try:
let buf = match writer.into_inner() {
Ok(b) => b,
Err(e) => {
// Here, e is an IntoInnerError
panic!("An error occurred: {}", e.error());
}
};
sourcepub fn into_inner(self) -> W
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 acid_io::{BufWriter, Write};
let mut writer = BufWriter::new(Vec::new());
// do stuff with the vec
writer.write_all("I live in a vector now!".as_bytes())?;
// we want to get our `Vec` back, so let's try:
let buf = match writer.into_inner() {
Ok(b) => b,
Err(e) => {
// Get the writer back after an error:
let w: BufWriter<_> = e.into_inner();
// And unwrap the buffer:
w.into_inner().unwrap()
}
};
sourcepub fn into_error(self) -> Error
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 acid_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);
sourcepub fn into_parts(self) -> (Error, W)
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 acid_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");