diff options
| author | bors <bors@rust-lang.org> | 2019-02-24 06:59:13 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-02-24 06:59:13 +0000 |
| commit | e17c48e2f21eefd59748e364234efc7037a3ec96 (patch) | |
| tree | a989c587e29193df64c07d603037060b3dcefc6b /src/liballoc | |
| parent | 7cb3ee453b829a513749eb49e6cbe7fe4da527b1 (diff) | |
| parent | f01ebc56dc9000f0f6507121e6702f83c2b8d2e2 (diff) | |
| download | rust-e17c48e2f21eefd59748e364234efc7037a3ec96.tar.gz rust-e17c48e2f21eefd59748e364234efc7037a3ec96.zip | |
Auto merge of #58691 - Centril:rollup, r=Centril
Rollup of 6 pull requests Successful merges: - #57364 (Improve parsing diagnostic for negative supertrait bounds) - #58183 (Clarify guarantees for `Box` allocation) - #58442 (Simplify the unix `Weak` functionality) - #58454 (Refactor Windows stdio and remove stdin double buffering ) - #58511 (Const to op simplification) - #58642 (rustdoc: support methods on primitives in intra-doc links) Failed merges: r? @ghost
Diffstat (limited to 'src/liballoc')
| -rw-r--r-- | src/liballoc/alloc.rs | 3 | ||||
| -rw-r--r-- | src/liballoc/boxed.rs | 10 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/liballoc/alloc.rs b/src/liballoc/alloc.rs index ec652df3b37..f3877e51a66 100644 --- a/src/liballoc/alloc.rs +++ b/src/liballoc/alloc.rs @@ -34,6 +34,9 @@ extern "Rust" { /// This type implements the [`Alloc`] trait by forwarding calls /// to the allocator registered with the `#[global_allocator]` attribute /// if there is one, or the `std` crate’s default. +/// +/// Note: while this type is unstable, the functionality it provides can be +/// accessed through the [free functions in `alloc`](index.html#functions). #[unstable(feature = "allocator_api", issue = "32838")] #[derive(Copy, Clone, Default, Debug)] pub struct Global; diff --git a/src/liballoc/boxed.rs b/src/liballoc/boxed.rs index 0cd2373c7f0..e99ae6315f8 100644 --- a/src/liballoc/boxed.rs +++ b/src/liballoc/boxed.rs @@ -4,6 +4,16 @@ //! heap allocation in Rust. Boxes provide ownership for this allocation, and //! drop their contents when they go out of scope. //! +//! For non-zero-sized values, a [`Box`] will use the [`Global`] allocator for +//! its allocation. It is valid to convert both ways between a [`Box`] and a +//! raw pointer allocated with the [`Global`] allocator, given that the +//! [`Layout`] used with the allocator is correct for the type. More precisely, +//! a `value: *mut T` that has been allocated with the [`Global`] allocator +//! with `Layout::for_value(&*value)` may be converted into a box using +//! `Box::<T>::from_raw(value)`. Conversely, the memory backing a `value: *mut +//! T` obtained from `Box::<T>::into_raw` may be deallocated using the +//! [`Global`] allocator with `Layout::for_value(&*value)`. +//! //! # Examples //! //! Move a value from the stack to the heap by creating a [`Box`]: |
