Struct sequoia_openpgp::serialize::stream::Compressor
source · pub struct Compressor<'a> { /* private fields */ }
Expand description
Compresses a message.
Writes a compressed data packet containing all packets written to this writer.
Implementations§
source§impl<'a> Compressor<'a>
impl<'a> Compressor<'a>
sourcepub fn new(inner: Message<'a>) -> Self
pub fn new(inner: Message<'a>) -> Self
Creates a new compressor using the default algorithm and compression level.
To change the compression algorithm use Compressor::algo
.
Use Compressor::level
to change the compression level.
§Examples
use std::io::Write;
use sequoia_openpgp as openpgp;
use openpgp::serialize::stream::{Message, Compressor, LiteralWriter};
use openpgp::types::CompressionAlgorithm;
let message = Message::new(&mut sink);
let message = Compressor::new(message)
// Customize the `Compressor` here.
.build()?;
let mut message = LiteralWriter::new(message).build()?;
message.write_all(b"Hello world.")?;
message.finalize()?;
sourcepub fn algo(self, algo: CompressionAlgorithm) -> Self
pub fn algo(self, algo: CompressionAlgorithm) -> Self
Sets the compression algorithm.
§Examples
use std::io::Write;
use sequoia_openpgp as openpgp;
use openpgp::serialize::stream::{Message, Compressor, LiteralWriter};
use openpgp::types::CompressionAlgorithm;
let mut sink = vec![];
{
let message = Message::new(&mut sink);
let message = Compressor::new(message)
.algo(CompressionAlgorithm::Uncompressed)
.build()?;
let mut message = LiteralWriter::new(message).build()?;
message.write_all(b"Hello world.")?;
message.finalize()?;
}
assert_eq!(b"\xc8\x15\x00\xcb\x12b\x00\x00\x00\x00\x00Hello world.",
sink.as_slice());
sourcepub fn level(self, level: CompressionLevel) -> Self
pub fn level(self, level: CompressionLevel) -> Self
Sets the compression level.
§Examples
use std::io::Write;
use sequoia_openpgp as openpgp;
use openpgp::serialize::stream::{Message, Compressor, LiteralWriter};
use openpgp::types::{CompressionAlgorithm, CompressionLevel};
let message = Message::new(&mut sink);
let message = Compressor::new(message)
.level(CompressionLevel::fastest())
.build()?;
let mut message = LiteralWriter::new(message).build()?;
message.write_all(b"Hello world.")?;
message.finalize()?;
sourcepub fn build(self) -> Result<Message<'a>>
pub fn build(self) -> Result<Message<'a>>
Builds the compressor, returning the writer stack.
The most useful filter to push to the writer stack next is the
Signer
or the LiteralWriter
. Finally, literal data
must be wrapped using the LiteralWriter
.
§Examples
use std::io::Write;
use sequoia_openpgp as openpgp;
use openpgp::serialize::stream::{Message, Compressor, LiteralWriter};
use openpgp::types::CompressionAlgorithm;
let message = Message::new(&mut sink);
let message = Compressor::new(message)
// Customize the `Compressor` here.
.build()?;
let mut message = LiteralWriter::new(message).build()?;
message.write_all(b"Hello world.")?;
message.finalize()?;
Trait Implementations§
source§impl<'a> Debug for Compressor<'a>
impl<'a> Debug for Compressor<'a>
source§impl<'a> Write for Compressor<'a>
impl<'a> Write for Compressor<'a>
source§fn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Write a buffer into this writer, returning how many bytes were written. Read more
source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Flush this output stream, ensuring that all intermediately buffered
contents reach their destination. Read more
source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector
)1.0.0 · source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
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>
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
Auto Trait Implementations§
impl<'a> Freeze for Compressor<'a>
impl<'a> !RefUnwindSafe for Compressor<'a>
impl<'a> Send for Compressor<'a>
impl<'a> Sync for Compressor<'a>
impl<'a> Unpin for Compressor<'a>
impl<'a> !UnwindSafe for Compressor<'a>
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