* '0.4' of https://github.com/bluss/arrayvec:
  0.4.10
  FIX: Remove unused Copy/Clone for MaybeUninit
  FIX: Use repr(C) MaybeUninit after discussion with RalfJung
This commit is contained in:
bluss
2018-12-22 20:05:42 +01:00
3 changed files with 7 additions and 7 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "arrayvec" name = "arrayvec"
version = "0.4.9" version = "0.4.10"
authors = ["bluss"] authors = ["bluss"]
license = "MIT/Apache-2.0" license = "MIT/Apache-2.0"
+5
View File
@@ -22,6 +22,11 @@ __ https://docs.rs/arrayvec
Recent Changes (arrayvec) Recent Changes (arrayvec)
------------------------- -------------------------
- 0.4.10
- Use ``repr(C)`` in the ``union`` version that was introduced in 0.4.9, to
allay some soundness concerns.
- 0.4.9 - 0.4.9
- Use ``union`` in the implementation on when this is detected to be supported - Use ``union`` in the implementation on when this is detected to be supported
+1 -6
View File
@@ -6,18 +6,13 @@ use std::mem::ManuallyDrop;
/// A combination of ManuallyDrop and “maybe uninitialized”; /// A combination of ManuallyDrop and “maybe uninitialized”;
/// this wraps a value that can be wholly or partially uninitialized; /// this wraps a value that can be wholly or partially uninitialized;
/// it also has no drop regardless of the type of T. /// it also has no drop regardless of the type of T.
#[derive(Copy)] #[repr(C)] // for cast from self ptr to value
pub union MaybeUninit<T> { pub union MaybeUninit<T> {
empty: (), empty: (),
value: ManuallyDrop<T>, value: ManuallyDrop<T>,
} }
// Why we don't use std's MaybeUninit on nightly? See the ptr method // Why we don't use std's MaybeUninit on nightly? See the ptr method
impl<T> Clone for MaybeUninit<T> where T: Copy
{
fn clone(&self) -> Self { *self }
}
impl<T> MaybeUninit<T> { impl<T> MaybeUninit<T> {
/// Create a new MaybeUninit with uninitialized interior /// Create a new MaybeUninit with uninitialized interior
pub unsafe fn uninitialized() -> Self { pub unsafe fn uninitialized() -> Self {