Struct datafusion::common::arrow::ipc::writer::StreamWriter
source · pub struct StreamWriter<W>where
W: Write,{ /* private fields */ }
Expand description
Writer for an IPC stream
Implementations§
source§impl<W> StreamWriter<W>where
W: Write,
impl<W> StreamWriter<W>where
W: Write,
sourcepub fn try_new(
writer: W,
schema: &Schema,
) -> Result<StreamWriter<W>, ArrowError>
pub fn try_new( writer: W, schema: &Schema, ) -> Result<StreamWriter<W>, ArrowError>
Try to create a new writer, with the schema written as part of the header
pub fn try_new_with_options( writer: W, schema: &Schema, write_options: IpcWriteOptions, ) -> Result<StreamWriter<W>, ArrowError>
sourcepub fn write(&mut self, batch: &RecordBatch) -> Result<(), ArrowError>
pub fn write(&mut self, batch: &RecordBatch) -> Result<(), ArrowError>
Write a record batch to the stream
sourcepub fn finish(&mut self) -> Result<(), ArrowError>
pub fn finish(&mut self) -> Result<(), ArrowError>
Write continuation bytes, and mark the stream as done
sourcepub fn get_mut(&mut self) -> &mut W
pub fn get_mut(&mut self) -> &mut W
Gets a mutable reference to the underlying writer.
It is inadvisable to directly write to the underlying writer.
sourcepub fn into_inner(self) -> Result<W, ArrowError>
pub fn into_inner(self) -> Result<W, ArrowError>
Unwraps the BufWriter housed in StreamWriter.writer, returning the underlying writer
The buffer is flushed and the StreamWriter is finished before returning the writer.
§Errors
An [‘Err’] may be returned if an error occurs while finishing the StreamWriter or while flushing the buffer.
§Example
// The result we expect from an empty schema
let expected = vec![
255, 255, 255, 255, 48, 0, 0, 0,
16, 0, 0, 0, 0, 0, 10, 0,
12, 0, 10, 0, 9, 0, 4, 0,
10, 0, 0, 0, 16, 0, 0, 0,
0, 1, 4, 0, 8, 0, 8, 0,
0, 0, 4, 0, 8, 0, 0, 0,
4, 0, 0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0, 0, 0
];
let schema = Schema::empty();
let buffer: Vec<u8> = Vec::new();
let options = IpcWriteOptions::try_new(8, false, MetadataVersion::V5)?;
let stream_writer = StreamWriter::try_new_with_options(buffer, &schema, options)?;
assert_eq!(stream_writer.into_inner()?, expected);
Trait Implementations§
source§impl<W> RecordBatchWriter for StreamWriter<W>where
W: Write,
impl<W> RecordBatchWriter for StreamWriter<W>where
W: Write,
source§fn write(&mut self, batch: &RecordBatch) -> Result<(), ArrowError>
fn write(&mut self, batch: &RecordBatch) -> Result<(), ArrowError>
Write a single batch to the writer.
Auto Trait Implementations§
impl<W> Freeze for StreamWriter<W>where
W: Freeze,
impl<W> RefUnwindSafe for StreamWriter<W>where
W: RefUnwindSafe,
impl<W> Send for StreamWriter<W>where
W: Send,
impl<W> Sync for StreamWriter<W>where
W: Sync,
impl<W> Unpin for StreamWriter<W>where
W: Unpin,
impl<W> UnwindSafe for StreamWriter<W>where
W: UnwindSafe,
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
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more