-// Copyright 2014-2015 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
//! Memory allocation APIs
#![stable(feature = "alloc_module", since = "1.28.0")]
pub use core::alloc::*;
extern "Rust" {
+ // These are the magic symbols to call the global allocator. rustc generates
+ // them from the `#[global_allocator]` attribute if there is one, or uses the
+ // default implementations in libstd (`__rdl_alloc` etc in `src/libstd/alloc.rs`)
+ // otherwise.
#[allocator]
#[rustc_allocator_nounwind]
fn __rust_alloc(size: usize, align: usize) -> *mut u8;
/// 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;
#[cfg(test)]
mod tests {
extern crate test;
- use self::test::Bencher;
- use boxed::Box;
- use alloc::{Global, Alloc, Layout, handle_alloc_error};
+ use test::Bencher;
+ use crate::boxed::Box;
+ use crate::alloc::{Global, Alloc, Layout, handle_alloc_error};
#[test]
fn allocate_zeroed() {