From: Amanieu d'Antras Date: Thu, 7 Feb 2019 11:28:27 +0000 (+0100) Subject: Add try_reserve to HashSet X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=a533504ca12ed93fec3cfb1d42add1a32bbc27cf;p=rust.git Add try_reserve to HashSet --- diff --git a/src/libstd/collections/hash/set.rs b/src/libstd/collections/hash/set.rs index 0fbf374fa49..f8a93b680f7 100644 --- a/src/libstd/collections/hash/set.rs +++ b/src/libstd/collections/hash/set.rs @@ -1,4 +1,5 @@ use crate::borrow::Borrow; +use crate::collections::CollectionAllocErr; use crate::fmt; use crate::hash::{Hash, BuildHasher}; use crate::iter::{Chain, FromIterator, FusedIterator}; @@ -357,6 +358,29 @@ pub fn reserve(&mut self, additional: usize) { self.map.reserve(additional) } + /// Tries to reserve capacity for at least `additional` more elements to be inserted + /// in the given `HashSet`. The collection may reserve more space to avoid + /// frequent reallocations. + /// + /// # Errors + /// + /// If the capacity overflows, or the allocator reports a failure, then an error + /// is returned. + /// + /// # Examples + /// + /// ``` + /// #![feature(try_reserve)] + /// use std::collections::HashSet; + /// let mut set: HashSet = HashSet::new(); + /// set.try_reserve(10).expect("why is the test harness OOMing on 10 bytes?"); + /// ``` + #[inline] + #[unstable(feature = "try_reserve", reason = "new API", issue="48043")] + pub fn try_reserve(&mut self, additional: usize) -> Result<(), CollectionAllocErr> { + self.map.try_reserve(additional) + } + /// Shrinks the capacity of the set as much as possible. It will drop /// down as much as possible while maintaining the internal rules /// and possibly leaving some space in accordance with the resize policy.