Commit graph

29 commits

Author SHA1 Message Date
Ralf Jung
e1875742d0 assume_init: warn about valid != safe 2019-08-05 20:13:59 +02:00
Mazdak Farrokhzad
4520a39b94
Rollup merge of #63215 - gnzlbg:patch-6, r=Centril
Clarify semantics of mem::zeroed

Clarifies the semantics of `mem::zeroed`.

r? @Centril

cc @RalfJung
2019-08-03 00:09:14 +02:00
gnzlbg
3725e3542f
Consistency. 2019-08-02 15:07:19 +02:00
gnzlbg
13b4afe4ba
Remove trailing whitespace
I had one job...
2019-08-02 14:12:12 +02:00
gnzlbg
57f94237e1
Clarify semantics of mem::zeroed 2019-08-02 13:39:07 +02:00
Bruce Mitchener
86633b6389 Fix typos in doc comments. 2019-08-02 01:36:36 +07:00
Mazdak Farrokhzad
fbfd542277
Rollup merge of #62360 - Aaron1011:patch-2, r=RalfJung
Document that ManuallyDrop::drop should not called more than once

Double dropping is unsound (e.g. https://github.com/rust-lang/rust/issues/60977). This commit documents the fact that `ManuallyDrop::drop` should not be called multiple times on the same instance, as it might not be immediately obvious that this counts as a use of uninitialized data.
2019-07-28 21:19:52 +02:00
Aaron Hill
a93f4abe24
Update wording 2019-07-27 18:42:47 -04:00
Mika Lehtinen
a44f43e8b5 Fix typo in mem::uninitialized doc 2019-07-24 11:34:30 +03:00
Ralf Jung
f3abbf7103 tidy is being silly 2019-07-21 12:59:51 +02:00
Ralf Jung
4b47e78a16 use a const to hack around promotion limitations 2019-07-21 12:28:18 +02:00
Ralf Jung
e074db764a use const array repeat expressions for uninit_array 2019-07-19 14:47:56 +02:00
Mark Rousskov
caf10b5ffe
Rollup merge of #62634 - llogiq:uninit-array-docs, r=RalfJung
Less unsafe in the array example of MaybeUninit docs

I believe this is an acceptable way to initialize elements of `[MaybeUninit<T>; _]` arrays. Miri agrees. Conceptually, we are working at the array level, above the `MaybeUninit`, and as we are replacing it wholesale, this should pose no problem to soundness. And the code is easier to read.

r? @RalfJung
2019-07-15 19:55:04 -04:00
Andre Bogus
cb3aa4ce2c Less unsafe in the array example of MaybeUninit docs 2019-07-14 13:32:14 +02:00
Ralf Jung
608249703c move mem::uninitialized deprecation back by 1 release, to 1.39 2019-07-11 22:24:01 +02:00
Mazdak Farrokhzad
1d45156866
Rollup merge of #62150 - alex:mem-uninit-refactor, r=RalfJung
Implement mem::{zeroed,uninitialized} in terms of MaybeUninit.

Refs #62061

r? @oli-obk
2019-07-05 13:53:00 +02:00
Mark Rousskov
8a7dded1a2 Switch master to 1.38 2019-07-04 11:26:57 -04:00
Alex Gaynor
e4f250e405 Implement mem::{zeroed,uninitialized} in terms of MaybeUninit.
Refs #62061
2019-07-04 09:33:15 -04:00
Aaron Hill
626ae7585c
Improve formatting of 'ManuallyDrop'
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-07-03 22:16:48 -04:00
Aaron Hill
af96b1df1d
Document that ManuallyDrop::drop should not called more than once
Double dropping is unsound (e.g. https://github.com/rust-lang/rust/issues/60977). This commit documents the fact that `ManuallyDrop::drop` should not be called multiple times on the same instance, as it might not be immediately obvious that this counts as a use of uninitialized data.
2019-07-03 21:45:17 -04:00
Chris Gregory
f7061db7e9 Update mem::replace example to not be identical to mem::take
This also adds assertions that the operations work as expected.
2019-06-30 12:27:32 -07:00
Mazdak Farrokhzad
6c0ab739fb
Rollup merge of #61199 - ollie27:rustdoc_cfg_test, r=QuietMisdreavus
Revert "Set test flag when rustdoc is running with --test option"

Reverts https://github.com/rust-lang/rust/pull/59940.

It caused doctests in this repository to no longer be tested including all of the core crate.
2019-06-29 11:18:06 +02:00
Michael Bradshaw
0f9dc6c48e Make MaybeUninit #[repr(transparent)]
Tracking issue: #60405
2019-06-18 06:31:23 -07:00
Oliver Middleton
c77024ca4e Fix more tests after revert of rustdoc cfg(test) feature 2019-06-09 18:15:53 +01:00
bors
d132f544f9 Auto merge of #61130 - jonhoo:mem-take, r=SimonSapin
Add std::mem::take as suggested in #61129

This PR implements #61129 by adding `std::mem::take`.

The added function is equivalent to:
```rust
std::mem::replace(dest, Default::default())
```

This particular pattern is fairly common, especially when implementing `Future::poll`, where you often need to yield an owned value in `Async::Ready`. This change allows you to write
```rust
return Async::Ready(std::mem::take(self.result));
```
instead of
```rust
return Async::Ready(std::mem::replace(self.result, Vec::new()));
```

EDIT: Changed name from `take` to `swap_default`.
EDIT: Changed name back to `take`.
2019-06-07 18:26:15 +00:00
Chris Gregory
408895d5b3 Escape needs_drop in the needs_drop documentation 2019-06-05 18:22:31 -07:00
Chris Gregory
94ea5dc597 Escape HashMap with backticks in needs_drop docs 2019-06-05 18:21:17 -07:00
Jon Gjengset
5a01b54707
Add std::mem::take as suggested in #61129
The name `swap_default` was suggested but rejected. @SimonSapin observed
that this operation isn't really a `swap` in the same sense as
`mem::swap`; it is a `replace`. Since `replace_default` is a bit
misleading, the "correct" name would be `replace_with_default`, which is
quite verbose.

@czipperz observed that we have precedence for using `take` to refer to
methods that replace with `Default` in `Cell::take` and `Option::take`,
so this reverts commit 99c00591c29b472c8a87c4a9342d0e0c508647a3 to
return to the original `take` method name.

The name `replace_with_default` was suggested, but was deemed too
verbose, especially given that we use `take` for methods that replace
with `Default` elsewhere.
2019-05-29 18:14:55 -04:00
Ralf Jung
1529067a04 split libcore::mem into multiple files 2019-05-29 10:00:13 +02:00