1use std::fmt::{Display, Formatter};
2
3pub mod leap_based;
4pub mod rabin;
5pub mod seq;
6pub mod supercdc;
7pub mod ultra;
8
9#[derive(Debug)]
10pub struct Chunk {
11 pub pos: usize,
12 pub len: usize,
13}
14
15impl Chunk {
16 fn new(pos: usize, len: usize) -> Self {
17 Chunk { pos, len }
18 }
19}
20
21#[derive(Copy, Clone, Debug, Eq, PartialEq)]
24pub struct SizeParams {
25 pub min: usize,
26 pub avg: usize,
27 pub max: usize,
28}
29
30impl SizeParams {
31 pub fn new(min: usize, avg: usize, max: usize) -> Self {
35 assert!(min <= avg && avg <= max && min <= max);
36
37 Self { min, avg, max }
38 }
39
40 pub fn leap_default() -> Self {
41 leap_based::Chunker::default_sizes()
42 }
43
44 pub fn rabin_default() -> Self {
45 rabin::Chunker::default_sizes()
46 }
47
48 pub fn super_default() -> Self {
49 supercdc::Chunker::default_sizes()
50 }
51
52 pub fn ultra_default() -> Self {
53 ultra::Chunker::default_sizes()
54 }
55
56 pub fn seq_default() -> Self {
57 seq::Chunker::default_sizes()
58 }
59}
60
61impl Display for SizeParams {
62 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
63 write!(f, "{}-{}-{}", self.min, self.avg, self.max)
64 }
65}