debug_demo/
debug_demo.rs

1use ranges_ext::{RangeInfo, RangeSetHeapless};
2use std::ops::Range;
3
4// 简单的区间信息实现,用于示例
5#[derive(Clone, Debug, PartialEq, Eq)]
6struct DemoRange<T> {
7    range: core::ops::Range<T>,
8    kind: (),
9    overwritable: bool,
10}
11
12impl<T> DemoRange<T> {
13    fn new(range: core::ops::Range<T>, overwritable: bool) -> Self {
14        Self {
15            range,
16            kind: (),
17            overwritable,
18        }
19    }
20}
21
22impl<T: core::fmt::Debug + Clone + Ord + Copy> RangeInfo for DemoRange<T> {
23    type Kind = ();
24    type Type = T;
25
26    fn range(&self) -> Range<Self::Type> {
27        self.range.clone()
28    }
29
30    fn kind(&self) -> Self::Kind {
31        self.kind
32    }
33
34    fn overwritable(&self) -> bool {
35        self.overwritable
36    }
37
38    fn clone_with_range(&self, range: Range<Self::Type>) -> Self {
39        Self {
40            range,
41            kind: self.kind,
42            overwritable: self.overwritable,
43        }
44    }
45}
46
47fn main() -> Result<(), Box<dyn std::error::Error>> {
48    let mut set: RangeSetHeapless<DemoRange<i32>, 16> = RangeSetHeapless::default();
49    set.add(DemoRange::new(1..5, true))?;
50    set.add(DemoRange::new(3..8, true))?;
51    set.add(DemoRange::new(10..15, true))?;
52    set.add(DemoRange::new(12..18, true))?;
53
54    println!("=== 区间合并结果 ===");
55    for (i, info) in set.iter().enumerate() {
56        println!(
57            "Element {}: [{}, {})",
58            i,
59            info.range().start,
60            info.range().end
61        );
62    }
63
64    println!("\n=== Debug 格式 ===");
65    for (i, info) in set.iter().enumerate() {
66        println!("Element {}: {:?}", i, info);
67    }
68
69    println!("\n=== 完整切片 ===");
70    println!("{:?}", set.as_slice());
71
72    Ok(())
73}