about summary refs log tree commit diff
path: root/src/liballoc
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2018-06-15 03:56:35 +0200
committerSimon Sapin <simon.sapin@exyr.org>2018-06-29 14:01:33 +0200
commitb0547cea0ae50f49619ded26f43d0d55a1674b14 (patch)
treed8a9e6aabff391b23769efea837aee97a0e44c91 /src/liballoc
parent121b57b87ae4b58082f38a450373636286a8d678 (diff)
downloadrust-b0547cea0ae50f49619ded26f43d0d55a1674b14.tar.gz
rust-b0547cea0ae50f49619ded26f43d0d55a1674b14.zip
Move core::alloc::CollectionAllocErr to alloc::collections
Diffstat (limited to 'src/liballoc')
-rw-r--r--src/liballoc/collections/mod.rs29
-rw-r--r--src/liballoc/collections/vec_deque.rs2
-rw-r--r--src/liballoc/raw_vec.rs4
-rw-r--r--src/liballoc/string.rs2
-rw-r--r--src/liballoc/vec.rs2
5 files changed, 34 insertions, 5 deletions
diff --git a/src/liballoc/collections/mod.rs b/src/liballoc/collections/mod.rs
index 35c816a1ceb..96e0eb633b2 100644
--- a/src/liballoc/collections/mod.rs
+++ b/src/liballoc/collections/mod.rs
@@ -51,6 +51,35 @@ pub use self::linked_list::LinkedList;
 #[doc(no_inline)]
 pub use self::vec_deque::VecDeque;
 
+use alloc::{AllocErr, LayoutErr};
+
+/// Augments `AllocErr` with a CapacityOverflow variant.
+#[derive(Clone, PartialEq, Eq, Debug)]
+#[unstable(feature = "try_reserve", reason = "new API", issue="48043")]
+pub enum CollectionAllocErr {
+    /// Error due to the computed capacity exceeding the collection's maximum
+    /// (usually `isize::MAX` bytes).
+    CapacityOverflow,
+    /// Error due to the allocator (see the `AllocErr` type's docs).
+    AllocErr,
+}
+
+#[unstable(feature = "try_reserve", reason = "new API", issue="48043")]
+impl From<AllocErr> for CollectionAllocErr {
+    #[inline]
+    fn from(AllocErr: AllocErr) -> Self {
+        CollectionAllocErr::AllocErr
+    }
+}
+
+#[unstable(feature = "try_reserve", reason = "new API", issue="48043")]
+impl From<LayoutErr> for CollectionAllocErr {
+    #[inline]
+    fn from(_: LayoutErr) -> Self {
+        CollectionAllocErr::CapacityOverflow
+    }
+}
+
 /// An intermediate trait for specialization of `Extend`.
 #[doc(hidden)]
 trait SpecExtend<I: IntoIterator> {
diff --git a/src/liballoc/collections/vec_deque.rs b/src/liballoc/collections/vec_deque.rs
index 4753d36415c..ba92b886138 100644
--- a/src/liballoc/collections/vec_deque.rs
+++ b/src/liballoc/collections/vec_deque.rs
@@ -30,7 +30,7 @@ use core::slice;
 use core::hash::{Hash, Hasher};
 use core::cmp;
 
-use alloc::CollectionAllocErr;
+use collections::CollectionAllocErr;
 use raw_vec::RawVec;
 use vec::Vec;
 
diff --git a/src/liballoc/raw_vec.rs b/src/liballoc/raw_vec.rs
index 5095bbe96cc..4f2686abf45 100644
--- a/src/liballoc/raw_vec.rs
+++ b/src/liballoc/raw_vec.rs
@@ -18,8 +18,8 @@ use core::ptr::{self, NonNull, Unique};
 use core::slice;
 
 use alloc::{Alloc, Layout, Global, handle_alloc_error};
-use alloc::CollectionAllocErr;
-use alloc::CollectionAllocErr::*;
+use collections::CollectionAllocErr;
+use collections::CollectionAllocErr::*;
 use boxed::Box;
 
 /// A low-level utility for more ergonomically allocating, reallocating, and deallocating
diff --git a/src/liballoc/string.rs b/src/liballoc/string.rs
index a988b6a26d9..6b28687a060 100644
--- a/src/liballoc/string.rs
+++ b/src/liballoc/string.rs
@@ -66,7 +66,7 @@ use core::ptr;
 use core::str::pattern::Pattern;
 use core::str::lossy;
 
-use alloc::CollectionAllocErr;
+use collections::CollectionAllocErr;
 use borrow::{Cow, ToOwned};
 use boxed::Box;
 use str::{self, from_boxed_utf8_unchecked, FromStr, Utf8Error, Chars};
diff --git a/src/liballoc/vec.rs b/src/liballoc/vec.rs
index 752a6c966d5..fbbaced540e 100644
--- a/src/liballoc/vec.rs
+++ b/src/liballoc/vec.rs
@@ -80,7 +80,7 @@ use core::ptr;
 use core::ptr::NonNull;
 use core::slice;
 
-use alloc::CollectionAllocErr;
+use collections::CollectionAllocErr;
 use borrow::ToOwned;
 use borrow::Cow;
 use boxed::Box;