Skip to main content

overlaps/
overlaps.rs

1use common_range_tools::{Consolidate, ConsolidationOrder};
2
3fn main() {
4    for result in Consolidate::num_defaults(
5        [
6            1..=4,
7            3..=5,
8            10..=12,
9            10..=11,
10            13..=13,
11            // This will produce an error, because 13..=13 is "After" 1..=2.
12            1..=2,
13        ]
14        .into_iter(),
15    )
16    .to_consolidate_checker(ConsolidationOrder::Forward)
17    {
18        match result {
19            Ok(row) => {
20                // get our outer range and src rows.
21                let (outer, src) = row.as_src();
22                println!("Outer Range: {}->{}", outer.start(), outer.end());
23                for (id, original) in src {
24                    println!(
25                        "  Row: {}, Range: {}->{}",
26                        id,
27                        original.start(),
28                        original.end()
29                    );
30                }
31            }
32            Err((msg, row)) => {
33                let (outer, src) = row.as_src();
34                println!(
35                    "Error: {}, \n    Produced range: {}->{}",
36                    msg,
37                    outer.start(),
38                    outer.end()
39                );
40                for (id, original) in src {
41                    println!(
42                        "      Caused by: Row: {}, Range: {}->{}",
43                        id,
44                        original.start(),
45                        original.end()
46                    );
47                }
48            }
49        }
50    }
51}
52
53// Resulting Output will be:
54//  Outer Range: 1->5
55//    Row: 0, Range: 1->4
56//    Row: 1, Range: 3->5
57//  Outer Range: 10->12
58//    Row: 2, Range: 10->12
59//    Row: 3, Range: 10->11
60//  Error: Out of Forward Sequence, Expected: Before|Last|Overlap, got: After,
61//      Produced range: 1->13
62//        Caused by: Row: 4, Range: 13->13
63//        Caused by: Row: 5, Range: 1->2