main/
main.rs

1use std::{fs, path::Path};
2
3use brk_core::{DateIndex, Height, Version};
4use brk_vec::{AnyVec, CollectableVec, Format, GenericStoredVec, StoredVec, VecIterator};
5
6type I = DateIndex;
7#[allow(clippy::upper_case_acronyms)]
8type VEC = StoredVec<I, u32>;
9
10fn main() -> Result<(), Box<dyn std::error::Error>> {
11    let _ = fs::remove_dir_all("./vec");
12
13    let version = Version::TWO;
14    let format = Format::Raw;
15
16    {
17        let mut vec: VEC = StoredVec::forced_import(Path::new("."), "vec", version, format)?;
18
19        (0..21_u32).for_each(|v| {
20            vec.push(v);
21        });
22
23        let mut iter = vec.into_iter();
24        dbg!(iter.get(0.into()));
25        dbg!(iter.get(1.into()));
26        dbg!(iter.get(2.into()));
27        dbg!(iter.get(20.into()));
28        dbg!(iter.get(21.into()));
29
30        vec.flush()?;
31
32        // dbg!(vec.header());
33    }
34
35    {
36        let mut vec: VEC = StoredVec::forced_import(Path::new("."), "vec", version, format)?;
37
38        vec.mut_header().update_height(Height::new(100));
39
40        let mut iter = vec.into_iter();
41        dbg!(iter.get(0.into()));
42        dbg!(iter.get(1.into()));
43        dbg!(iter.get(2.into()));
44        dbg!(iter.get(3.into()));
45        dbg!(iter.get(4.into()));
46        dbg!(iter.get(5.into()));
47        dbg!(iter.get(20.into()));
48        dbg!(iter.get(20.into()));
49        dbg!(iter.get(0.into()));
50
51        vec.push(21);
52        vec.push(22);
53
54        let mut iter = vec.into_iter();
55
56        dbg!(iter.get(20.into()));
57        dbg!(iter.get(21.into()));
58        dbg!(iter.get(22.into()));
59        dbg!(iter.get(23.into()));
60
61        vec.flush()?;
62    }
63
64    {
65        let mut vec: VEC = StoredVec::forced_import(Path::new("."), "vec", version, format)?;
66        let mut iter = vec.into_iter();
67
68        dbg!(iter.get(0.into()));
69        dbg!(iter.get(20.into()));
70        dbg!(iter.get(21.into()));
71        dbg!(iter.get(22.into()));
72
73        vec.truncate_if_needed(14.into())?;
74
75        let mut iter = vec.into_iter();
76
77        iter.get(0.into());
78        iter.get(5.into());
79        dbg!(iter.get(20.into()));
80
81        dbg!(vec.collect_signed_range(Some(-5), None)?);
82
83        vec.push(vec.len() as u32);
84        dbg!(VecIterator::last(vec.into_iter()));
85
86        dbg!(vec.into_iter().collect::<Vec<_>>());
87    }
88
89    {
90        let mut vec: VEC = StoredVec::forced_import(Path::new("."), "vec", version, format)?;
91
92        vec.reset()?;
93
94        dbg!(vec.header(), vec.pushed_len(), vec.stored_len(), vec.len());
95
96        (0..21_u32).for_each(|v| {
97            vec.push(v);
98        });
99
100        let mut iter = vec.into_iter();
101        dbg!(iter.get(0.into()));
102        dbg!(iter.get(20.into()));
103        dbg!(iter.get(21.into()));
104
105        let mmap = vec.create_mmap()?;
106        dbg!(vec.take(10.into(), &mmap)?);
107        dbg!(vec.get_or_read(10.into(), &mmap)?);
108        dbg!(vec.holes());
109        vec.flush()?;
110        dbg!(vec.holes());
111    }
112
113    {
114        let mut vec: VEC = StoredVec::forced_import(Path::new("."), "vec", version, format)?;
115
116        let mmap = vec.create_mmap()?;
117
118        dbg!(vec.holes());
119        dbg!(vec.get_or_read(10.into(), &mmap)?);
120
121        vec.update(10.into(), 10)?;
122        vec.update(0.into(), 10)?;
123        dbg!(
124            vec.holes(),
125            vec.get_or_read(0.into(), &mmap)?,
126            vec.get_or_read(10.into(), &mmap)?
127        );
128
129        vec.flush()?;
130    }
131
132    {
133        let vec: VEC = StoredVec::forced_import(Path::new("."), "vec", version, format)?;
134
135        dbg!(vec.collect()?);
136    }
137
138    Ok(())
139}