pub struct Encoder { /* private fields */ }Expand description
Wraps compression_stream_process for encoding.
Implementations§
Source§impl Encoder
impl Encoder
Sourcepub fn new(algorithm: Algorithm) -> Result<Self>
pub fn new(algorithm: Algorithm) -> Result<Self>
Wraps new convenience around compression_stream_process.
Examples found in repository?
examples/01_roundtrip.rs (line 10)
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7 let input = pseudo_random_bytes(64 * 1024);
8 let split = input.len() / 2;
9
10 let mut encoder = Encoder::new(Algorithm::Lzfse)?;
11 let mut compressed = encoder.process(&input[..split])?;
12 compressed.extend(encoder.process(&input[split..])?);
13 compressed.extend(encoder.finish()?);
14
15 let mut decoder = Decoder::new(Algorithm::Lzfse)?;
16 let encoded_split = compressed.len() / 2;
17 let mut round_trip = decoder.process(&compressed[..encoded_split])?;
18 round_trip.extend(decoder.process(&compressed[encoded_split..])?);
19 round_trip.extend(decoder.finish()?);
20
21 assert_eq!(round_trip, input);
22 let input_len = input.len();
23 let compressed_len = compressed.len();
24 println!("input={input_len} compressed={compressed_len}");
25 println!("✅ compression stream round-trip OK");
26 Ok(())
27}Sourcepub fn process(&mut self, input: &[u8]) -> Result<Vec<u8>>
pub fn process(&mut self, input: &[u8]) -> Result<Vec<u8>>
Wraps process convenience around compression_stream_process.
Examples found in repository?
examples/01_roundtrip.rs (line 11)
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7 let input = pseudo_random_bytes(64 * 1024);
8 let split = input.len() / 2;
9
10 let mut encoder = Encoder::new(Algorithm::Lzfse)?;
11 let mut compressed = encoder.process(&input[..split])?;
12 compressed.extend(encoder.process(&input[split..])?);
13 compressed.extend(encoder.finish()?);
14
15 let mut decoder = Decoder::new(Algorithm::Lzfse)?;
16 let encoded_split = compressed.len() / 2;
17 let mut round_trip = decoder.process(&compressed[..encoded_split])?;
18 round_trip.extend(decoder.process(&compressed[encoded_split..])?);
19 round_trip.extend(decoder.finish()?);
20
21 assert_eq!(round_trip, input);
22 let input_len = input.len();
23 let compressed_len = compressed.len();
24 println!("input={input_len} compressed={compressed_len}");
25 println!("✅ compression stream round-trip OK");
26 Ok(())
27}Sourcepub fn finish(&mut self) -> Result<Vec<u8>>
pub fn finish(&mut self) -> Result<Vec<u8>>
Wraps finish convenience around compression_stream_process.
Examples found in repository?
examples/01_roundtrip.rs (line 13)
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7 let input = pseudo_random_bytes(64 * 1024);
8 let split = input.len() / 2;
9
10 let mut encoder = Encoder::new(Algorithm::Lzfse)?;
11 let mut compressed = encoder.process(&input[..split])?;
12 compressed.extend(encoder.process(&input[split..])?);
13 compressed.extend(encoder.finish()?);
14
15 let mut decoder = Decoder::new(Algorithm::Lzfse)?;
16 let encoded_split = compressed.len() / 2;
17 let mut round_trip = decoder.process(&compressed[..encoded_split])?;
18 round_trip.extend(decoder.process(&compressed[encoded_split..])?);
19 round_trip.extend(decoder.finish()?);
20
21 assert_eq!(round_trip, input);
22 let input_len = input.len();
23 let compressed_len = compressed.len();
24 println!("input={input_len} compressed={compressed_len}");
25 println!("✅ compression stream round-trip OK");
26 Ok(())
27}Trait Implementations§
Auto Trait Implementations§
impl !Send for Encoder
impl !Sync for Encoder
impl Freeze for Encoder
impl RefUnwindSafe for Encoder
impl Unpin for Encoder
impl UnsafeUnpin for Encoder
impl UnwindSafe for Encoder
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