pub struct WriterPanicked { /* private fields */ }
Expand description
Error returned for the buffered data from BufWriter::into_parts
, when the underlying
writer has previously panicked. Contains the (possibly partly written) buffered data.
ยงExample
use std::io::{self, BufWriter, Write};
use std::panic::{catch_unwind, AssertUnwindSafe};
struct PanickingWriter;
impl Write for PanickingWriter {
fn write(&mut self, buf: &[u8]) -> io::Result<usize> { panic!() }
fn flush(&mut self) -> io::Result<()> { panic!() }
}
let mut stream = BufWriter::new(PanickingWriter);
write!(stream, "some data").unwrap();
let result = catch_unwind(AssertUnwindSafe(|| {
stream.flush().unwrap()
}));
assert!(result.is_err());
let (recovered_writer, buffered_data) = stream.into_parts();
assert!(matches!(recovered_writer, PanickingWriter));
assert_eq!(buffered_data.unwrap_err().into_inner(), b"some data");
Implementationsยง
Sourceยงimpl WriterPanicked
impl WriterPanicked
1.56.0 ยท Sourcepub fn into_inner(self) -> Vec<u8> โ
pub fn into_inner(self) -> Vec<u8> โ
Returns the perhaps-unwritten data. Some of this data may have been written by the panicking call(s) to the underlying writer, so simply writing it again is not a good idea.
Trait Implementationsยง
1.56.0 ยท Sourceยงimpl Debug for WriterPanicked
impl Debug for WriterPanicked
1.56.0 ยท Sourceยงimpl Display for WriterPanicked
impl Display for WriterPanicked
1.56.0 ยท Sourceยงimpl Error for WriterPanicked
impl Error for WriterPanicked
Sourceยงfn description(&self) -> &str
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)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
Auto Trait Implementationsยง
impl Freeze for WriterPanicked
impl RefUnwindSafe for WriterPanicked
impl Send for WriterPanicked
impl Sync for WriterPanicked
impl Unpin for WriterPanicked
impl UnwindSafe for WriterPanicked
Blanket Implementationsยง
Sourceยงimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Sourceยงfn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more