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 }
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}