commonlibsse_ng\re\b\BSTArray/
mod.rs

1mod scrap;
2pub mod IAllocatorFunctor;
3mod allocator;
4mod heap;
5mod small_heap;
6
7use core::ptr::NonNull;
8use core::slice;
9
10pub use self::scrap::BSScrapArray;
11pub use self::{heap::BSTArray, small_heap::BSTSmallArray};
12
13#[repr(C)]
14#[derive(Debug, PartialEq)]
15pub struct BSStaticArray<T> {
16    data: NonNull<T>,
17    size: u32,
18}
19
20impl<T> BSStaticArray<T> {
21    /// # Panics
22    #[inline]
23    pub const fn new(data: *mut T, size: u32) -> Self {
24        Self { data: NonNull::new(data).expect("data pointer must not be null"), size }
25    }
26
27    #[inline]
28    pub const fn as_slice(&self) -> &[T] {
29        unsafe { slice::from_raw_parts(self.data.as_ptr(), self.size as usize) }
30    }
31
32    #[inline]
33    pub const fn as_mut_slice(&mut self) -> &mut [T] {
34        unsafe { slice::from_raw_parts_mut(self.data.as_ptr(), self.size as usize) }
35    }
36
37    #[inline]
38    pub const fn len(&self) -> u32 {
39        self.size
40    }
41
42    #[inline]
43    pub const fn is_empty(&self) -> bool {
44        self.size == 0
45    }
46
47    #[inline]
48    pub fn get(&self, index: u32) -> Option<&T> {
49        self.as_slice().get(index as usize)
50    }
51
52    #[inline]
53    pub fn get_mut(&mut self, index: u32) -> Option<&mut T> {
54        self.as_mut_slice().get_mut(index as usize)
55    }
56
57    #[inline]
58    pub fn front(&self) -> Option<&T> {
59        self.get(0)
60    }
61
62    #[inline]
63    pub fn front_mut(&mut self) -> Option<&mut T> {
64        self.get_mut(0)
65    }
66
67    #[inline]
68    pub fn back(&self) -> Option<&T> {
69        self.get(self.size - 1)
70    }
71
72    #[inline]
73    pub fn back_mut(&mut self) -> Option<&mut T> {
74        self.get_mut(self.size - 1)
75    }
76
77    #[inline]
78    pub fn iter(&self) -> core::slice::Iter<T> {
79        self.as_slice().iter()
80    }
81
82    #[inline]
83    pub fn iter_mut(&mut self) -> core::slice::IterMut<T> {
84        self.as_mut_slice().iter_mut()
85    }
86}