pub struct Decoder { /* private fields */ }Expand description
Wraps compression_stream_process for decoding.
Implementations§
Source§impl Decoder
impl Decoder
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 15)
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 17)
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 19)
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 Freeze for Decoder
impl RefUnwindSafe for Decoder
impl !Send for Decoder
impl !Sync for Decoder
impl Unpin for Decoder
impl UnsafeUnpin for Decoder
impl UnwindSafe for Decoder
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