Skip to content

Commit 65f3578

Browse files
committed
Rename reserve to reserve_exact and reserve_at_least to reserve
Changes in std::{str,vec,hashmap} and extra::{priority_queue,ringbuf}. Fixes #11949
1 parent 1d49419 commit 65f3578

File tree

5 files changed

+51
-53
lines changed

5 files changed

+51
-53
lines changed

src/libextra/priority_queue.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,14 @@ impl<T:Ord> PriorityQueue<T> {
5151
/// Returns the number of elements the queue can hold without reallocating
5252
pub fn capacity(&self) -> uint { self.data.capacity() }
5353

54-
pub fn reserve(&mut self, n: uint) { self.data.reserve(n) }
55-
56-
pub fn reserve_at_least(&mut self, n: uint) {
57-
self.data.reserve_at_least(n)
54+
/// Reserve capacity for exactly n elements in the PriorityQueue.
55+
/// Do nothing if the capacity is already sufficient.
56+
pub fn reserve_exact(&mut self, n: uint) { self.data.reserve_exact(n) }
57+
58+
/// Reserve capacity for at least n elements in the PriorityQueue.
59+
/// Do nothing if the capacity is already sufficient.
60+
pub fn reserve(&mut self, n: uint) {
61+
self.data.reserve(n)
5862
}
5963

6064
/// Pop the greatest item from the queue - fails if empty
@@ -203,7 +207,7 @@ impl<T: Ord> Extendable<T> for PriorityQueue<T> {
203207
let (lower, _) = iter.size_hint();
204208

205209
let len = self.capacity();
206-
self.reserve_at_least(len + lower);
210+
self.reserve(len + lower);
207211

208212
for elem in *iter {
209213
self.push(elem);

src/libextra/ringbuf.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,8 @@ impl<T> RingBuf<T> {
168168
/// # Arguments
169169
///
170170
/// * n - The number of elements to reserve space for
171-
pub fn reserve(&mut self, n: uint) {
172-
self.elts.reserve(n);
171+
pub fn reserve_exact(&mut self, n: uint) {
172+
self.elts.reserve_exact(n);
173173
}
174174

175175
/// Reserve capacity for at least `n` elements in the given RingBuf,
@@ -182,8 +182,8 @@ impl<T> RingBuf<T> {
182182
/// # Arguments
183183
///
184184
/// * n - The number of elements to reserve space for
185-
pub fn reserve_at_least(&mut self, n: uint) {
186-
self.elts.reserve_at_least(n);
185+
pub fn reserve(&mut self, n: uint) {
186+
self.elts.reserve(n);
187187
}
188188

189189
/// Front-to-back iterator.
@@ -641,26 +641,26 @@ mod tests {
641641
}
642642

643643
#[test]
644-
fn test_reserve() {
644+
fn test_reserve_exact() {
645645
let mut d = RingBuf::new();
646646
d.push_back(0u64);
647-
d.reserve(50);
647+
d.reserve_exact(50);
648648
assert_eq!(d.elts.capacity(), 50);
649649
let mut d = RingBuf::new();
650650
d.push_back(0u32);
651-
d.reserve(50);
651+
d.reserve_exact(50);
652652
assert_eq!(d.elts.capacity(), 50);
653653
}
654654

655655
#[test]
656-
fn test_reserve_at_least() {
656+
fn test_reserve() {
657657
let mut d = RingBuf::new();
658658
d.push_back(0u64);
659-
d.reserve_at_least(50);
659+
d.reserve(50);
660660
assert_eq!(d.elts.capacity(), 64);
661661
let mut d = RingBuf::new();
662662
d.push_back(0u32);
663-
d.reserve_at_least(50);
663+
d.reserve(50);
664664
assert_eq!(d.elts.capacity(), 64);
665665
}
666666

src/libstd/hashmap.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ impl<K: Hash + Eq, V> HashMap<K, V> {
384384
}
385385

386386
/// Reserve space for at least `n` elements in the hash table.
387-
pub fn reserve_at_least(&mut self, n: uint) {
387+
pub fn reserve(&mut self, n: uint) {
388388
if n > self.buckets.len() {
389389
let buckets = n * 4 / 3 + 1;
390390
self.resize(num::next_power_of_two(buckets));
@@ -793,8 +793,8 @@ impl<T:Hash + Eq> HashSet<T> {
793793
}
794794

795795
/// Reserve space for at least `n` elements in the hash table.
796-
pub fn reserve_at_least(&mut self, n: uint) {
797-
self.map.reserve_at_least(n)
796+
pub fn reserve(&mut self, n: uint) {
797+
self.map.reserve(n)
798798
}
799799

800800
/// Returns true if the hash set contains a value equivalent to the

src/libstd/str.rs

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ use iter::{Iterator, FromIterator, Extendable, range};
104104
use iter::{Filter, AdditiveIterator, Map};
105105
use iter::{Rev, DoubleEndedIterator, ExactSize};
106106
use libc;
107-
use num::{Saturating, checked_next_power_of_two};
107+
use num::Saturating;
108108
use option::{None, Option, Some};
109109
use ptr;
110110
use ptr::RawPtr;
@@ -186,12 +186,7 @@ pub fn from_char(ch: char) -> ~str {
186186

187187
/// Convert a vector of chars to a string
188188
pub fn from_chars(chs: &[char]) -> ~str {
189-
let mut buf = ~"";
190-
buf.reserve(chs.len());
191-
for ch in chs.iter() {
192-
buf.push_char(*ch)
193-
}
194-
buf
189+
chs.iter().map(|c| *c).collect()
195190
}
196191

197192
#[doc(hidden)]
@@ -875,8 +870,7 @@ pub fn utf16_chars(v: &[u16], f: |char|) {
875870

876871
/// Allocates a new string from the utf-16 slice provided
877872
pub fn from_utf16(v: &[u16]) -> ~str {
878-
let mut buf = ~"";
879-
buf.reserve(v.len());
873+
let mut buf = with_capacity(v.len());
880874
utf16_chars(v, |ch| buf.push_char(ch));
881875
buf
882876
}
@@ -2166,17 +2160,15 @@ impl<'a> StrSlice<'a> for &'a str {
21662160
}
21672161

21682162
fn escape_default(&self) -> ~str {
2169-
let mut out: ~str = ~"";
2170-
out.reserve_at_least(self.len());
2163+
let mut out = with_capacity(self.len());
21712164
for c in self.chars() {
21722165
c.escape_default(|c| out.push_char(c));
21732166
}
21742167
out
21752168
}
21762169

21772170
fn escape_unicode(&self) -> ~str {
2178-
let mut out: ~str = ~"";
2179-
out.reserve_at_least(self.len());
2171+
let mut out = with_capacity(self.len());
21802172
for c in self.chars() {
21812173
c.escape_unicode(|c| out.push_char(c));
21822174
}
@@ -2508,7 +2500,7 @@ pub trait OwnedStr {
25082500
///
25092501
/// * s - A string
25102502
/// * n - The number of bytes to reserve space for
2511-
fn reserve(&mut self, n: uint);
2503+
fn reserve_exact(&mut self, n: uint);
25122504

25132505
/// Reserves capacity for at least `n` bytes in the given string.
25142506
///
@@ -2526,7 +2518,7 @@ pub trait OwnedStr {
25262518
///
25272519
/// * s - A string
25282520
/// * n - The number of bytes to reserve space for
2529-
fn reserve_at_least(&mut self, n: uint);
2521+
fn reserve(&mut self, n: uint);
25302522

25312523
/// Returns the number of single-byte characters the string can hold without
25322524
/// reallocating
@@ -2552,7 +2544,7 @@ impl OwnedStr for ~str {
25522544
#[inline]
25532545
fn push_str_no_overallocate(&mut self, rhs: &str) {
25542546
let new_cap = self.len() + rhs.len();
2555-
self.reserve(new_cap);
2547+
self.reserve_exact(new_cap);
25562548
self.push_str(rhs);
25572549
}
25582550

@@ -2631,15 +2623,17 @@ impl OwnedStr for ~str {
26312623
}
26322624

26332625
#[inline]
2634-
fn reserve(&mut self, n: uint) {
2626+
fn reserve_exact(&mut self, n: uint) {
26352627
unsafe {
2636-
raw::as_owned_vec(self).reserve(n)
2628+
raw::as_owned_vec(self).reserve_exact(n)
26372629
}
26382630
}
26392631

26402632
#[inline]
2641-
fn reserve_at_least(&mut self, n: uint) {
2642-
self.reserve(checked_next_power_of_two(n).unwrap_or(n))
2633+
fn reserve(&mut self, n: uint) {
2634+
unsafe {
2635+
raw::as_owned_vec(self).reserve(n)
2636+
}
26432637
}
26442638

26452639
#[inline]
@@ -2711,7 +2705,7 @@ impl Extendable<char> for ~str {
27112705
fn extend<T: Iterator<char>>(&mut self, iterator: &mut T) {
27122706
let (lower, _) = iterator.size_hint();
27132707
let reserve = lower + self.len();
2714-
self.reserve_at_least(reserve);
2708+
self.reserve(reserve);
27152709
for ch in *iterator {
27162710
self.push_char(ch)
27172711
}

src/libstd/vec.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1335,7 +1335,7 @@ pub trait OwnedVector<T> {
13351335
* This method always succeeds in reserving space for `n` elements, or it does
13361336
* not return.
13371337
*/
1338-
fn reserve(&mut self, n: uint);
1338+
fn reserve_exact(&mut self, n: uint);
13391339
/**
13401340
* Reserves capacity for at least `n` elements in the given vector.
13411341
*
@@ -1350,7 +1350,7 @@ pub trait OwnedVector<T> {
13501350
*
13511351
* * n - The number of elements to reserve space for
13521352
*/
1353-
fn reserve_at_least(&mut self, n: uint);
1353+
fn reserve(&mut self, n: uint);
13541354
/**
13551355
* Reserves capacity for at least `n` additional elements in the given vector.
13561356
*
@@ -1468,7 +1468,7 @@ impl<T> OwnedVector<T> for ~[T] {
14681468
self.move_iter().rev()
14691469
}
14701470

1471-
fn reserve(&mut self, n: uint) {
1471+
fn reserve_exact(&mut self, n: uint) {
14721472
// Only make the (slow) call into the runtime if we have to
14731473
if self.capacity() < n {
14741474
unsafe {
@@ -1486,16 +1486,16 @@ impl<T> OwnedVector<T> for ~[T] {
14861486
}
14871487

14881488
#[inline]
1489-
fn reserve_at_least(&mut self, n: uint) {
1490-
self.reserve(checked_next_power_of_two(n).unwrap_or(n));
1489+
fn reserve(&mut self, n: uint) {
1490+
self.reserve_exact(checked_next_power_of_two(n).unwrap_or(n));
14911491
}
14921492

14931493
#[inline]
14941494
fn reserve_additional(&mut self, n: uint) {
14951495
if self.capacity() - self.len() < n {
14961496
match self.len().checked_add(&n) {
14971497
None => fail!("vec::reserve_additional: `uint` overflow"),
1498-
Some(new_cap) => self.reserve_at_least(new_cap)
1498+
Some(new_cap) => self.reserve(new_cap)
14991499
}
15001500
}
15011501
}
@@ -1678,7 +1678,7 @@ impl<T> OwnedVector<T> for ~[T] {
16781678
}
16791679
fn grow_fn(&mut self, n: uint, op: |uint| -> T) {
16801680
let new_len = self.len() + n;
1681-
self.reserve_at_least(new_len);
1681+
self.reserve(new_len);
16821682
let mut i: uint = 0u;
16831683
while i < n {
16841684
self.push(op(i));
@@ -1737,15 +1737,15 @@ impl<T:Clone> OwnedCloneableVector<T> for ~[T] {
17371737
#[inline]
17381738
fn push_all(&mut self, rhs: &[T]) {
17391739
let new_len = self.len() + rhs.len();
1740-
self.reserve(new_len);
1740+
self.reserve_exact(new_len);
17411741

17421742
for elt in rhs.iter() {
17431743
self.push((*elt).clone())
17441744
}
17451745
}
17461746
fn grow(&mut self, n: uint, initval: &T) {
17471747
let new_len = self.len() + n;
1748-
self.reserve_at_least(new_len);
1748+
self.reserve(new_len);
17491749
let mut i: uint = 0u;
17501750

17511751
while i < n {
@@ -2900,7 +2900,7 @@ impl<A> Extendable<A> for ~[A] {
29002900
fn extend<T: Iterator<A>>(&mut self, iterator: &mut T) {
29012901
let (lower, _) = iterator.size_hint();
29022902
let len = self.len();
2903-
self.reserve(len + lower);
2903+
self.reserve_exact(len + lower);
29042904
for x in *iterator {
29052905
self.push(x);
29062906
}
@@ -3630,10 +3630,10 @@ mod tests {
36303630
#[test]
36313631
fn test_capacity() {
36323632
let mut v = ~[0u64];
3633-
v.reserve(10u);
3633+
v.reserve_exact(10u);
36343634
assert_eq!(v.capacity(), 10u);
36353635
let mut v = ~[0u32];
3636-
v.reserve(10u);
3636+
v.reserve_exact(10u);
36373637
assert_eq!(v.capacity(), 10u);
36383638
}
36393639

@@ -4070,7 +4070,7 @@ mod tests {
40704070
#[should_fail]
40714071
fn test_overflow_does_not_cause_segfault() {
40724072
let mut v = ~[];
4073-
v.reserve(-1);
4073+
v.reserve_exact(-1);
40744074
v.push(1);
40754075
v.push(2);
40764076
}
@@ -4080,7 +4080,7 @@ mod tests {
40804080
fn test_overflow_does_not_cause_segfault_managed() {
40814081
use rc::Rc;
40824082
let mut v = ~[Rc::new(1)];
4083-
v.reserve(-1);
4083+
v.reserve_exact(-1);
40844084
v.push(Rc::new(2));
40854085
}
40864086

0 commit comments

Comments
 (0)