pub struct LzssEncoder<F>{ /* private fields */ }
Expand description
§Examples
use compression::prelude::*;
use std::cmp::Ordering;
fn main() {
pub fn comparison(lhs: LzssCode, rhs: LzssCode) -> Ordering {
match (lhs, rhs) {
(
LzssCode::Reference {
len: llen,
pos: lpos,
},
LzssCode::Reference {
len: rlen,
pos: rpos,
},
) => ((llen << 3) + rpos).cmp(&((rlen << 3) + lpos)).reverse(),
(LzssCode::Symbol(_), LzssCode::Symbol(_)) => Ordering::Equal,
(_, LzssCode::Symbol(_)) => Ordering::Greater,
(LzssCode::Symbol(_), _) => Ordering::Less,
}
}
let compressed = b"aabbaabbaabbaabb\n"
.into_iter()
.cloned()
.encode(&mut LzssEncoder::new(comparison, 0x1_0000, 256, 3, 3), Action::Finish)
.collect::<Result<Vec<_>, _>>()
.unwrap();
let decompressed = compressed
.iter()
.cloned()
.decode(&mut LzssDecoder::new(0x1_0000))
.collect::<Result<Vec<_>, _>>()
.unwrap();
}
Implementations§
Source§impl<F> LzssEncoder<F>
impl<F> LzssEncoder<F>
Trait Implementations§
Source§impl<F> Debug for LzssEncoder<F>
impl<F> Debug for LzssEncoder<F>
Source§impl<F> Encoder for LzssEncoder<F>
impl<F> Encoder for LzssEncoder<F>
Auto Trait Implementations§
impl<F> Freeze for LzssEncoder<F>where
F: Freeze,
impl<F> RefUnwindSafe for LzssEncoder<F>where
F: RefUnwindSafe,
impl<F> Send for LzssEncoder<F>where
F: Send,
impl<F> Sync for LzssEncoder<F>where
F: Sync,
impl<F> Unpin for LzssEncoder<F>where
F: Unpin,
impl<F> UnwindSafe for LzssEncoder<F>where
F: UnwindSafe,
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