diff --git a/src/Cargo.lock b/src/Cargo.lock index 80864340960..61f46bfbe5b 100644 --- a/src/Cargo.lock +++ b/src/Cargo.lock @@ -251,6 +251,14 @@ dependencies = [ "gcc 0.3.50 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "collections" +version = "0.0.0" +dependencies = [ + "alloc 0.0.0", + "core 0.0.0", +] + [[package]] name = "compiler_builtins" version = "0.0.0" @@ -1586,6 +1594,7 @@ dependencies = [ "alloc_jemalloc 0.0.0", "alloc_system 0.0.0", "build_helper 0.1.0", + "collections 0.0.0", "compiler_builtins 0.0.0", "core 0.0.0", "gcc 0.3.50 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs index 4d58620ca64..f92e6f50eb3 100644 --- a/src/bootstrap/dist.rs +++ b/src/bootstrap/dist.rs @@ -550,6 +550,7 @@ pub fn rust_src(build: &Build) { "src/liballoc_jemalloc", "src/liballoc_system", "src/libbacktrace", + "src/libcollections", "src/libcompiler_builtins", "src/libcore", "src/liblibc", diff --git a/src/bootstrap/doc.rs b/src/bootstrap/doc.rs index 23a38f6a896..30f631ca2df 100644 --- a/src/bootstrap/doc.rs +++ b/src/bootstrap/doc.rs @@ -254,7 +254,7 @@ pub fn std(build: &Build, stage: u32, target: &str) { // for which docs must be built. if !build.config.compiler_docs { cargo.arg("--no-deps"); - for krate in &["alloc", "core", "std", "std_unicode"] { + for krate in &["alloc", "collections", "core", "std", "std_unicode"] { cargo.arg("-p").arg(krate); // Create all crate output directories first to make sure rustdoc uses // relative links. diff --git a/src/doc/unstable-book/src/SUMMARY.md b/src/doc/unstable-book/src/SUMMARY.md index d8f742735a8..d7c36829211 100644 --- a/src/doc/unstable-book/src/SUMMARY.md +++ b/src/doc/unstable-book/src/SUMMARY.md @@ -108,6 +108,7 @@ - [char_escape_debug](library-features/char-escape-debug.md) - [coerce_unsized](library-features/coerce-unsized.md) - [collection_placement](library-features/collection-placement.md) + - [collections](library-features/collections.md) - [collections_range](library-features/collections-range.md) - [command_envs](library-features/command-envs.md) - [compiler_builtins_lib](library-features/compiler-builtins-lib.md) diff --git a/src/doc/unstable-book/src/library-features/collections.md b/src/doc/unstable-book/src/library-features/collections.md new file mode 100644 index 00000000000..5c937833c9e --- /dev/null +++ b/src/doc/unstable-book/src/library-features/collections.md @@ -0,0 +1,5 @@ +# `collections` + +This feature is internal to the Rust compiler and is not intended for general use. + +------------------------ diff --git a/src/libcollections/Cargo.toml b/src/libcollections/Cargo.toml new file mode 100644 index 00000000000..800e36161d2 --- /dev/null +++ b/src/libcollections/Cargo.toml @@ -0,0 +1,12 @@ +[package] +authors = ["The Rust Project Developers"] +name = "collections" +version = "0.0.0" + +[lib] +name = "collections" +path = "lib.rs" + +[dependencies] +alloc = { path = "../liballoc" } +core = { path = "../libcore" } diff --git a/src/libcollections/lib.rs b/src/libcollections/lib.rs new file mode 100644 index 00000000000..de5d6df328c --- /dev/null +++ b/src/libcollections/lib.rs @@ -0,0 +1,72 @@ +// Copyright 2017 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![crate_name = "collections"] +#![crate_type = "rlib"] +#![allow(unused_attributes)] +#![unstable(feature = "collections", + reason = "this library is unlikely to be stabilized in its current \ + form or name", + issue = "27783")] +#![rustc_deprecated(since = "1.20.0", + reason = "collections moved to `alloc`")] +#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png", + html_favicon_url = "https://doc.rust-lang.org/favicon.ico", + html_root_url = "https://doc.rust-lang.org/nightly/", + issue_tracker_base_url = "https://github.com/rust-lang/rust/issues/", + test(no_crate_inject, attr(allow(unused_variables), deny(warnings))))] +#![no_std] +#![needs_allocator] +#![deny(warnings)] + +#![feature(alloc)] +#![feature(collections_range)] +#![feature(macro_reexport)] +#![feature(needs_allocator)] +#![feature(staged_api)] + +//! Collection types +//! +//! See [`std::collections`](../std/collections/index.html) for a detailed +//! discussion of collections in Rust. + +#[macro_reexport(vec, format)] +extern crate alloc; + +pub use alloc::Bound; + +pub use alloc::binary_heap; +pub use alloc::borrow; +pub use alloc::fmt; +pub use alloc::linked_list; +pub use alloc::range; +pub use alloc::slice; +pub use alloc::str; +pub use alloc::string; +pub use alloc::vec; +pub use alloc::vec_deque; + +pub use alloc::btree_map; +pub use alloc::btree_set; + +#[doc(no_inline)] +pub use alloc::binary_heap::BinaryHeap; +#[doc(no_inline)] +pub use alloc::btree_map::BTreeMap; +#[doc(no_inline)] +pub use alloc::btree_set::BTreeSet; +#[doc(no_inline)] +pub use alloc::linked_list::LinkedList; +#[doc(no_inline)] +pub use alloc::vec_deque::VecDeque; +#[doc(no_inline)] +pub use alloc::string::String; +#[doc(no_inline)] +pub use alloc::vec::Vec; diff --git a/src/libstd/Cargo.toml b/src/libstd/Cargo.toml index f93af4c1920..b516cbd08ca 100644 --- a/src/libstd/Cargo.toml +++ b/src/libstd/Cargo.toml @@ -15,6 +15,7 @@ alloc_jemalloc = { path = "../liballoc_jemalloc", optional = true } alloc_system = { path = "../liballoc_system" } panic_unwind = { path = "../libpanic_unwind", optional = true } panic_abort = { path = "../libpanic_abort" } +collections = { path = "../libcollections" } core = { path = "../libcore" } libc = { path = "../rustc/libc_shim" } rand = { path = "../librand" }