Skip to main content

setting_boundries/
setting_boundries.rs

1// Import the Intersector
2use common_range_tools::Intersector;
3
4fn main() {
5    let mut isec = Intersector::num(
6        1, // step
7        1, // rebound
8        0, // min
9        8, // max
10    );
11    // 1 to 3
12    let range: std::ops::Range<i32> = 1..4;
13    isec.add_range(&range);
14
15    // 3 to 5
16    let range_inclusive: std::ops::RangeInclusive<i32> = 3..=5;
17    isec.add_range(&range_inclusive);
18
19    // 0 to 7
20    let min_to_end: std::ops::RangeToInclusive<i32> = ..=7;
21    isec.add_range(&min_to_end);
22
23    // 7 to 8
24    let begin_to_max: std::ops::RangeFrom<i32> = 7..;
25    isec.add_range(&begin_to_max);
26
27    // Note 7.. and ..7 include our min and max all ready!
28    let min_to_max: std::ops::RangeFull = ..;
29    isec.add_range(&min_to_max);
30    for i in isec.into_iter() {
31        println!("  Common Range {:^3}->{:^3}", i.start(), i.end());
32    }
33    // The output will be:
34    //  Common Range  0 -> 0
35    //  Common Range  1 -> 2
36    //  Common Range  3 -> 3
37    //  Common Range  4 -> 5
38    //  Common Range  6 -> 6
39    //  Common Range  7 -> 7
40    //  Common Range  8 -> 8
41}