pub trait Operation {
// Required method
fn run<C: WriteBuf + ?Sized>(
&mut self,
input: &mut InBuffer<'_>,
output: &mut OutBuffer<'_, C>,
) -> Result<usize>;
// Provided methods
fn run_on_buffers(
&mut self,
input: &[u8],
output: &mut [u8],
) -> Result<Status> { ... }
fn flush<C: WriteBuf + ?Sized>(
&mut self,
output: &mut OutBuffer<'_, C>,
) -> Result<usize> { ... }
fn reinit(&mut self) -> Result<()> { ... }
fn finish<C: WriteBuf + ?Sized>(
&mut self,
output: &mut OutBuffer<'_, C>,
finished_frame: bool,
) -> Result<usize> { ... }
}
Expand description
Represents an abstract compression/decompression operation.
This trait covers both Encoder
and Decoder
.
Required Methods§
Provided Methods§
Sourcefn run_on_buffers(&mut self, input: &[u8], output: &mut [u8]) -> Result<Status>
fn run_on_buffers(&mut self, input: &[u8], output: &mut [u8]) -> Result<Status>
Performs a single step of this operation.
This is a comvenience wrapper around Operation::run
if you don’t
want to deal with InBuffer
/OutBuffer
.
Sourcefn flush<C: WriteBuf + ?Sized>(
&mut self,
output: &mut OutBuffer<'_, C>,
) -> Result<usize>
fn flush<C: WriteBuf + ?Sized>( &mut self, output: &mut OutBuffer<'_, C>, ) -> Result<usize>
Flushes any internal buffer, if any.
Returns the number of bytes still in the buffer.
To flush entirely, keep calling until it returns Ok(0)
.
Sourcefn reinit(&mut self) -> Result<()>
fn reinit(&mut self) -> Result<()>
Prepares the operation for a new frame.
This is hopefully cheaper than creating a new operation.
Sourcefn finish<C: WriteBuf + ?Sized>(
&mut self,
output: &mut OutBuffer<'_, C>,
finished_frame: bool,
) -> Result<usize>
fn finish<C: WriteBuf + ?Sized>( &mut self, output: &mut OutBuffer<'_, C>, finished_frame: bool, ) -> Result<usize>
Finishes the operation, writing any footer if necessary.
Returns the number of bytes still to write.
Keep calling this method until it returns Ok(0)
,
and then don’t ever call this method.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.