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