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>
Writes a buffer into this writer, returning how many bytes were written. Read more
Source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Flushes 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