Mut::array
This commit is contained in:
@@ -31,7 +31,7 @@ unsafe impl<T> Sync for Mut<T> {}
|
||||
unsafe impl<T> Send for Mut<T> {}
|
||||
|
||||
impl<T: Sized> Mut<T> {
|
||||
#[inline(always)]#[inline(always)]
|
||||
#[inline(always)]
|
||||
pub const fn new(value: T) -> Self {
|
||||
Self(core::cell::UnsafeCell::new(value))
|
||||
}
|
||||
@@ -41,6 +41,25 @@ impl<T: Sized> Mut<T> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Sized + Copy> Mut<T> {
|
||||
|
||||
#[inline(always)]
|
||||
pub const fn array<const S: usize>(value: T) -> [Self;S] {
|
||||
unsafe {
|
||||
let mut a = MaybeUninit::<[Mut<T>;S]>::uninit();
|
||||
let mut i = 0usize;
|
||||
while i < S {
|
||||
a.as_mut_ptr()
|
||||
.cast::<Mut<T>>()
|
||||
.add(i)
|
||||
.write(Mut::new(value));
|
||||
i+= 1;
|
||||
}
|
||||
a.assume_init()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Pod> Mut<T> {
|
||||
#[inline(always)] pub unsafe fn set(&self, value: T) { unsafe { core::ptr::write(self.as_ptr(), value) } }
|
||||
#[inline(always)] pub fn get(&self) -> T { unsafe { core::ptr::read(self.as_ptr()) } }
|
||||
|
||||
Reference in New Issue
Block a user