lzfse_rust/lmd/
lmd_non_pack.rs1use super::lmd_type::LmdMax;
2use super::lmd_type::*;
3
4use std::fmt;
5
6#[derive(Copy, Clone, Eq, PartialEq)]
7pub struct Lmd<T: LmdMax>(pub LiteralLen<T>, pub MatchLen<T>, pub MatchDistance<T>);
8
9impl<T: LmdMax> Lmd<T> {
10 #[allow(dead_code)]
11 pub fn new(literal_len: u32, match_len: u32, match_distance: u32) -> Self {
12 Self(
13 LiteralLen::new(literal_len),
14 MatchLen::new(match_len),
15 MatchDistance::new(match_distance),
16 )
17 }
18
19 #[allow(dead_code)]
20 #[inline(always)]
21 pub unsafe fn new_unchecked(literal_len: u32, match_len: u32, match_distance: u32) -> Self {
22 Self(
23 LiteralLen::new_unchecked(literal_len),
24 MatchLen::new_unchecked(match_len),
25 MatchDistance::new_unchecked(match_distance),
26 )
27 }
28}
29
30impl<T: LmdMax> Default for Lmd<T> {
31 #[inline(always)]
32 fn default() -> Self {
33 Self(LiteralLen::default(), MatchLen::default(), MatchDistance::default())
34 }
35}
36
37impl<T: LmdMax> fmt::Debug for Lmd<T> {
38 fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
39 fmt.debug_tuple("Lmd")
40 .field(&self.0.get())
41 .field(&self.1.get())
42 .field(&self.2.get())
43 .finish()
44 }
45}