nacre_array.rs
rust
1pub struct NacreArray<T: OrganicElement> { /* ... */ }
2
3impl<T: OrganicElement> NacreArray<T> {
4 pub fn new(segment_capacity: usize) -> Self;
5 pub fn with_capacity(total: usize, seg_cap: usize) -> Self;
6 pub fn with_cooldown(self, config: CooldownConfig) -> Self;
7 pub fn with_segment_cache(self, enabled: bool) -> Self;
8
9 // Core
10 pub fn len(&self) -> usize;
11 pub fn is_empty(&self) -> bool;
12 pub fn segment_count(&self) -> usize;
13 pub fn segment_capacity(&self) -> usize;
14
15 // Access & Mutation
16 pub fn push(&mut self, value: T);
17 pub fn get(&self, index: usize) -> Option<&T>;
18 pub fn read(&mut self, index: usize) -> Option<T>;
19 pub fn get_mut(&mut self, index: usize) -> Option<&mut T>;
20 pub fn set(&mut self, index: usize, value: T) -> Option<T>;
21 pub fn insert(&mut self, index: usize, value: T);
22 pub fn remove(&mut self, index: usize) -> Option<T>;
23
24 // Iteration
25 pub fn iter(&self) -> NacreIter<T>;
26 pub fn iter_mut(&mut self) -> NacreIterMut<T>;
27
28 // Fracture
29 pub fn split_at(&mut self, index: usize) -> NacreArray<T>;
30 pub fn fracture_planes(&self) -> Vec<usize>;
31 pub fn nearest_fracture(&self, index: usize) -> usize;
32
33 // Scanning
34 pub fn scan_headers(&self, pred: impl Fn(&ElementHeader) -> bool) -> Vec<&T>;
35 pub fn scan_segments(&self, pred: impl Fn(&SegmentSummary) -> bool) -> Vec<usize>;
36
37 // Segment access
38 pub fn segment(&self, index: usize) -> Option<&Segment<T>>;
39 pub fn segment_mut(&mut self, index: usize) -> Option<&mut Segment<T>>;
40 pub fn par_segments(&self) -> &[Segment<T>];
41
42 // Maintenance
43 pub fn tick(&mut self) -> MaintenanceReport;
44 pub fn compression_stats(&self) -> CompressionStats;
45}
46