diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:41:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:41:41 +0000 |
commit | 10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87 (patch) | |
tree | bdffd5d80c26cf4a7a518281a204be1ace85b4c1 /vendor/arrayvec-0.5.2/src/maybe_uninit.rs | |
parent | Releasing progress-linux version 1.70.0+dfsg1-9~progress7.99u1. (diff) | |
download | rustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.tar.xz rustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.zip |
Merging upstream version 1.70.0+dfsg2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/arrayvec-0.5.2/src/maybe_uninit.rs')
-rw-r--r-- | vendor/arrayvec-0.5.2/src/maybe_uninit.rs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/vendor/arrayvec-0.5.2/src/maybe_uninit.rs b/vendor/arrayvec-0.5.2/src/maybe_uninit.rs new file mode 100644 index 000000000..e009abfc8 --- /dev/null +++ b/vendor/arrayvec-0.5.2/src/maybe_uninit.rs @@ -0,0 +1,44 @@ + + +use crate::array::Array; +use std::mem::MaybeUninit as StdMaybeUninit; + +#[derive(Copy)] +pub struct MaybeUninit<T> { + inner: StdMaybeUninit<T>, +} + +impl<T> Clone for MaybeUninit<T> + where T: Copy +{ + fn clone(&self) -> Self { *self } +} + +impl<T> MaybeUninit<T> { + /// Create a new MaybeUninit with uninitialized interior + pub const unsafe fn uninitialized() -> Self { + MaybeUninit { inner: StdMaybeUninit::uninit() } + } + + /// Create a new MaybeUninit from the value `v`. + pub fn from(v: T) -> Self { + MaybeUninit { inner: StdMaybeUninit::new(v) } + } + + // Raw pointer casts written so that we don't reference or access the + // uninitialized interior value + + /// Return a raw pointer to the start of the interior array + pub fn ptr(&self) -> *const T::Item + where T: Array + { + self.inner.as_ptr() as *const T::Item + } + + /// Return a mut raw pointer to the start of the interior array + pub fn ptr_mut(&mut self) -> *mut T::Item + where T: Array + { + self.inner.as_mut_ptr() as *mut T::Item + } +} |