musli/alloc/
array_buffer.rs1use core::mem::MaybeUninit;
2use core::ops::{Deref, DerefMut};
3
4use super::DEFAULT_ARRAY_BUFFER;
5
6#[repr(align(8))]
14pub struct ArrayBuffer<const N: usize = DEFAULT_ARRAY_BUFFER> {
15 data: [MaybeUninit<u8>; N],
16}
17
18impl ArrayBuffer {
19 pub const fn new() -> Self {
22 Self::with_size()
23 }
24}
25
26impl Default for ArrayBuffer {
27 #[inline]
28 fn default() -> Self {
29 Self::new()
30 }
31}
32
33impl<const N: usize> ArrayBuffer<N> {
34 pub const fn with_size() -> Self {
36 Self {
37 data: unsafe { MaybeUninit::uninit().assume_init() },
40 }
41 }
42}
43
44impl<const N: usize> Deref for ArrayBuffer<N> {
45 type Target = [MaybeUninit<u8>];
46
47 #[inline]
48 fn deref(&self) -> &Self::Target {
49 &self.data
50 }
51}
52
53impl<const N: usize> DerefMut for ArrayBuffer<N> {
54 #[inline]
55 fn deref_mut(&mut self) -> &mut Self::Target {
56 &mut self.data
57 }
58}