diff options
| author | kennytm <kennytm@gmail.com> | 2018-10-28 16:38:48 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-10-28 16:38:48 +0800 |
| commit | a79b91231e3dff407bdaee13e34c53f3451f40be (patch) | |
| tree | 3a4845568b1f71f046060c5f4bb6cbde7397bbee /src/libcore | |
| parent | 409382e100ab6b2434f194b37e7b691867d671ba (diff) | |
| parent | ac186354354e6032c34ad95ce22d526371729cb6 (diff) | |
| download | rust-a79b91231e3dff407bdaee13e34c53f3451f40be.tar.gz rust-a79b91231e3dff407bdaee13e34c53f3451f40be.zip | |
Rollup merge of #55252 - SimonSapin:maybeuninit-new, r=bluss
Add MaybeUninit::new Sometimes it *is* initialized!
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/lib.rs | 1 | ||||
| -rw-r--r-- | src/libcore/mem.rs | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/libcore/lib.rs b/src/libcore/lib.rs index 4156b1bec92..06727d8292d 100644 --- a/src/libcore/lib.rs +++ b/src/libcore/lib.rs @@ -82,6 +82,7 @@ #![feature(const_fn)] #![feature(const_int_ops)] #![feature(const_fn_union)] +#![feature(const_manually_drop_new)] #![feature(custom_attribute)] #![feature(doc_cfg)] #![feature(doc_spotlight)] diff --git a/src/libcore/mem.rs b/src/libcore/mem.rs index 27ee9556bd0..a955e0e662a 100644 --- a/src/libcore/mem.rs +++ b/src/libcore/mem.rs @@ -1021,6 +1021,15 @@ pub union MaybeUninit<T> { } impl<T> MaybeUninit<T> { + /// Create a new `MaybeUninit` initialized with the given value. + /// + /// Note that dropping a `MaybeUninit` will never call `T`'s drop code. + /// It is your responsibility to make sure `T` gets dropped if it got initialized. + #[unstable(feature = "maybe_uninit", issue = "53491")] + pub const fn new(val: T) -> MaybeUninit<T> { + MaybeUninit { value: ManuallyDrop::new(val) } + } + /// Create a new `MaybeUninit` in an uninitialized state. /// /// Note that dropping a `MaybeUninit` will never call `T`'s drop code. |
