summaryrefslogtreecommitdiffstats
path: root/vendor/arrayvec-0.5.2/src/maybe_uninit.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:41:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:41:41 +0000
commit10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87 (patch)
treebdffd5d80c26cf4a7a518281a204be1ace85b4c1 /vendor/arrayvec-0.5.2/src/maybe_uninit.rs
parentReleasing progress-linux version 1.70.0+dfsg1-9~progress7.99u1. (diff)
downloadrustc-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.rs44
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
+ }
+}