Skip to main content

StreamWriter

Struct StreamWriter 

Source
pub struct StreamWriter<'a, F: Write + Seek> { /* private fields */ }
Expand description

Allows writing data to a stream.

This object does not implement Seek and there is no variant of this object that allows seeking or writing to arbitrary offsets. Stream data must be written sequentially.

After a StreamWriter is closed (dropped), it is not possible to create a new StreamWriter for the same stream.

§Write calls are never split across chunks

The Write implementation of this type makes a guarantee: For a given call to StreamWriter::write, if the current stream is using chunked compression, then the data will be written to a single compressed chunk. This is an implementation guarantee; it is not required by the MSFZ specification.

This allows readers to rely on complete records being stored within a single chunk. For example, when copying the TPI, an encoder could issue a sequence of write() calls whose boundaries align with the boundaries of the records within the TPI. This would allow the reader to read records directly from the chunk decompressed buffer, without needing to allocate a separate buffer or copy the records. (We do not currently implement that behavior; this is describing a hypothetical.)

Implementations§

Source§

impl<'a, F: Write + Seek> StreamWriter<'a, F>

Source

pub fn end_chunk(&mut self) -> Result<()>

Ends the current chunk, if any.

This function is a performance hint for compression. It is not necessary to call this function.

Source

pub fn bytes_available_in_chunk_buffer(&self) -> usize

The number of bytes that can be written to the current chunk buffer, without exceeding the configured maximum.

Source

pub fn set_compression_enabled(&mut self, value: bool)

Specifies whether to use chunked compression or not. The default value for this setting is true (chunked compression is enabled).

This does not have any immediate effect. It controls the behavior of the write() implementation for this stream.

If this is called with false, then write() calls that follow this will cause stream data to be written to disk without compression.

Source

pub fn set_alignment(&mut self, value: Pow2)

Specifies the on-disk alignment requirement for the start of the stream data.

This only applies to uncompressed streams. Compressed stream data is always stored within compressed chunks, so the alignment is meaningless.

Trait Implementations§

Source§

impl<'a, F: Write + Seek> Write for StreamWriter<'a, F>

Source§

fn flush(&mut self) -> Result<()>

Flushes this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
Source§

fn write(&mut self, buf: &[u8]) -> Result<usize>

Writes a buffer into this writer, returning how many bytes were written. Read more
1.36.0 · Source§

fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>

Like write, except that it writes from a slice of buffers. Read more
Source§

fn is_write_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector)
Determines if this Writer has an efficient write_vectored implementation. Read more
1.0.0 · Source§

fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>

Attempts to write an entire buffer into this writer. Read more
Source§

fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>

🔬This is a nightly-only experimental API. (write_all_vectored)
Attempts to write multiple buffers into this writer. Read more
1.0.0 · Source§

fn write_fmt(&mut self, args: Arguments<'_>) -> Result<(), Error>

Writes a formatted string into this writer, returning any error encountered. Read more
1.0.0 · Source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adapter for this instance of Write. Read more

Auto Trait Implementations§

§

impl<'a, F> Freeze for StreamWriter<'a, F>

§

impl<'a, F> RefUnwindSafe for StreamWriter<'a, F>
where F: RefUnwindSafe,

§

impl<'a, F> Send for StreamWriter<'a, F>
where F: Send,

§

impl<'a, F> Sync for StreamWriter<'a, F>
where F: Sync,

§

impl<'a, F> Unpin for StreamWriter<'a, F>

§

impl<'a, F> !UnwindSafe for StreamWriter<'a, F>

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, 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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more