Struct snarkvm_utilities::serialize::io::WriterPanicked [−][src]
pub struct WriterPanicked { /* fields omitted */ }
🔬 This is a nightly-only experimental API. (
bufwriter_into_parts
)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
#![feature(bufwriter_into_parts)] 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
pub fn into_inner(self) -> Vec<u8, Global>ⓘ
🔬 This is a nightly-only experimental API. (bufwriter_into_parts
)
pub fn into_inner(self) -> Vec<u8, Global>ⓘ
🔬 This is a nightly-only experimental API. (
bufwriter_into_parts
)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.