Skip to content

Commit db7324b

Browse files
committed
---
yaml --- r: 195323 b: refs/heads/snap-stage3 c: 4037f2a h: refs/heads/master i: 195321: 726c323 195319: eeb0dc1 v: v3
1 parent 2a155cf commit db7324b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+593
-275
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 14192d6df5cc714e5c9a3ca70b08f2514d977be2
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 27af78c6dddc95c7c82dc21926d6ea81562e1211
4+
refs/heads/snap-stage3: 4037f2a368edd75c561bc6f3d8c6f0d644bc4180
55
refs/heads/try: 961e0358e1a5c0faaef606e31e9965742c1643bf
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d

branches/snap-stage3/src/libcollections/btree/map.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -904,14 +904,11 @@ impl<K: Ord, V: Ord> Ord for BTreeMap<K, V> {
904904
#[stable(feature = "rust1", since = "1.0.0")]
905905
impl<K: Debug, V: Debug> Debug for BTreeMap<K, V> {
906906
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
907-
try!(write!(f, "{{"));
908-
909-
for (i, (k, v)) in self.iter().enumerate() {
910-
if i != 0 { try!(write!(f, ", ")); }
911-
try!(write!(f, "{:?}: {:?}", *k, *v));
907+
let mut builder = f.debug_map();
908+
for (k, v) in self {
909+
builder = builder.entry(k, v);
912910
}
913-
914-
write!(f, "}}")
911+
builder.finish()
915912
}
916913
}
917914

branches/snap-stage3/src/libcollections/btree/set.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -628,14 +628,11 @@ impl<'a, 'b, T: Ord + Clone> BitOr<&'b BTreeSet<T>> for &'a BTreeSet<T> {
628628
#[stable(feature = "rust1", since = "1.0.0")]
629629
impl<T: Debug> Debug for BTreeSet<T> {
630630
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
631-
try!(write!(f, "{{"));
632-
633-
for (i, x) in self.iter().enumerate() {
634-
if i != 0 { try!(write!(f, ", ")); }
635-
try!(write!(f, "{:?}", *x));
631+
let mut builder = f.debug_set();
632+
for x in self {
633+
builder = builder.entry(x);
636634
}
637-
638-
write!(f, "}}")
635+
builder.finish()
639636
}
640637
}
641638

branches/snap-stage3/src/libcollections/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
#![feature(str_char)]
4141
#![feature(convert)]
4242
#![feature(slice_patterns)]
43+
#![feature(debug_builders)]
4344
#![cfg_attr(test, feature(rand, rustc_private, test, hash, collections))]
4445
#![cfg_attr(test, allow(deprecated))] // rand
4546

branches/snap-stage3/src/libcollections/linked_list.rs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -927,14 +927,11 @@ impl<A: Clone> Clone for LinkedList<A> {
927927
#[stable(feature = "rust1", since = "1.0.0")]
928928
impl<A: fmt::Debug> fmt::Debug for LinkedList<A> {
929929
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
930-
try!(write!(f, "["));
931-
932-
for (i, e) in self.iter().enumerate() {
933-
if i != 0 { try!(write!(f, ", ")); }
934-
try!(write!(f, "{:?}", *e));
930+
let mut builder = f.debug_list();
931+
for e in self {
932+
builder = builder.entry(e);
935933
}
936-
937-
write!(f, "]")
934+
builder.finish()
938935
}
939936
}
940937

@@ -951,7 +948,7 @@ impl<A: Hash> Hash for LinkedList<A> {
951948
#[cfg(test)]
952949
mod test {
953950
use std::clone::Clone;
954-
use std::iter::Iterator;
951+
use std::iter::{Iterator, IteratorExt};
955952
use std::option::Option::{Some, None, self};
956953
use std::rand;
957954
use std::thread;

branches/snap-stage3/src/libcollections/slice.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
//! iterators.
7777
//! * Further methods that return iterators are `.split()`, `.splitn()`,
7878
//! `.chunks()`, `.windows()` and more.
79+
7980
#![doc(primitive = "slice")]
8081
#![stable(feature = "rust1", since = "1.0.0")]
8182

@@ -84,7 +85,7 @@ use core::convert::AsRef;
8485
use core::clone::Clone;
8586
use core::cmp::Ordering::{self, Greater, Less};
8687
use core::cmp::{self, Ord, PartialEq};
87-
use core::iter::Iterator;
88+
use core::iter::{Iterator, IteratorExt};
8889
use core::iter::MultiplicativeIterator;
8990
use core::marker::Sized;
9091
use core::mem::size_of;
@@ -130,7 +131,7 @@ mod hack {
130131
use alloc::boxed::Box;
131132
use core::clone::Clone;
132133
#[cfg(test)]
133-
use core::iter::Iterator;
134+
use core::iter::{Iterator, IteratorExt};
134135
use core::mem;
135136
#[cfg(test)]
136137
use core::option::Option::{Some, None};

branches/snap-stage3/src/libcollections/str.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ use self::DecompositionType::*;
5858

5959
use core::clone::Clone;
6060
use core::iter::AdditiveIterator;
61-
use core::iter::{Iterator, Extend};
61+
use core::iter::{Iterator, IteratorExt, Extend};
6262
use core::option::Option::{self, Some, None};
6363
use core::result::Result;
6464
use core::str as core_str;

branches/snap-stage3/src/libcollections/vec_deque.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1785,7 +1785,7 @@ impl<T: fmt::Debug> fmt::Debug for VecDeque<T> {
17851785

17861786
#[cfg(test)]
17871787
mod test {
1788-
use core::iter::{Iterator, self};
1788+
use core::iter::{IteratorExt, self};
17891789
use core::option::Option::Some;
17901790

17911791
use test;

branches/snap-stage3/src/libcollectionstest/bench.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ macro_rules! map_find_rand_bench {
6666
($name: ident, $n: expr, $map: ident) => (
6767
#[bench]
6868
pub fn $name(b: &mut ::test::Bencher) {
69-
use std::iter::Iterator;
69+
use std::iter::IteratorExt;
7070
use std::rand::Rng;
7171
use std::rand;
7272
use std::vec::Vec;

branches/snap-stage3/src/libcore/fmt/builders.rs

Lines changed: 85 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -177,64 +177,107 @@ impl<'a, 'b: 'a> DebugTuple<'a, 'b> {
177177
}
178178
}
179179

180+
struct DebugInner<'a, 'b: 'a> {
181+
fmt: &'a mut fmt::Formatter<'b>,
182+
result: fmt::Result,
183+
has_fields: bool,
184+
}
185+
186+
impl<'a, 'b: 'a> DebugInner<'a, 'b> {
187+
fn entry(&mut self, entry: &fmt::Debug) {
188+
self.result = self.result.and_then(|_| {
189+
if self.is_pretty() {
190+
let mut writer = PadAdapter::new(self.fmt);
191+
let prefix = if self.has_fields { "," } else { "" };
192+
fmt::write(&mut writer, format_args!("{}\n{:#?}", prefix, entry))
193+
} else {
194+
let prefix = if self.has_fields { ", " } else { "" };
195+
write!(self.fmt, "{}{:?}", prefix, entry)
196+
}
197+
});
198+
199+
self.has_fields = true;
200+
}
201+
202+
pub fn finish(&mut self) {
203+
let prefix = if self.is_pretty() && self.has_fields { "\n" } else { "" };
204+
self.result = self.result.and_then(|_| self.fmt.write_str(prefix));
205+
}
206+
207+
fn is_pretty(&self) -> bool {
208+
self.fmt.flags() & (1 << (FlagV1::Alternate as usize)) != 0
209+
}
210+
}
211+
180212
/// A struct to help with `fmt::Debug` implementations.
181213
///
182214
/// Constructed by the `Formatter::debug_set` method.
183215
#[must_use]
184216
pub struct DebugSet<'a, 'b: 'a> {
185-
fmt: &'a mut fmt::Formatter<'b>,
186-
result: fmt::Result,
187-
has_fields: bool,
217+
inner: DebugInner<'a, 'b>,
188218
}
189219

190-
pub fn debug_set_new<'a, 'b>(fmt: &'a mut fmt::Formatter<'b>, name: &str) -> DebugSet<'a, 'b> {
191-
let result = write!(fmt, "{} {{", name);
220+
pub fn debug_set_new<'a, 'b>(fmt: &'a mut fmt::Formatter<'b>) -> DebugSet<'a, 'b> {
221+
let result = write!(fmt, "{{");
192222
DebugSet {
193-
fmt: fmt,
194-
result: result,
195-
has_fields: false,
223+
inner: DebugInner {
224+
fmt: fmt,
225+
result: result,
226+
has_fields: false,
227+
}
196228
}
197229
}
198230

199231
impl<'a, 'b: 'a> DebugSet<'a, 'b> {
200232
/// Adds a new entry to the set output.
201233
#[unstable(feature = "debug_builders", reason = "method was just created")]
202234
pub fn entry(mut self, entry: &fmt::Debug) -> DebugSet<'a, 'b> {
203-
self.result = self.result.and_then(|_| {
204-
let prefix = if self.has_fields {
205-
","
206-
} else {
207-
""
208-
};
209-
210-
if self.is_pretty() {
211-
let mut writer = PadAdapter::new(self.fmt);
212-
fmt::write(&mut writer, format_args!("{}\n{:#?}", prefix, entry))
213-
} else {
214-
write!(self.fmt, "{} {:?}", prefix, entry)
215-
}
216-
});
217-
218-
self.has_fields = true;
235+
self.inner.entry(entry);
219236
self
220237
}
221238

222239
/// Consumes the `DebugSet`, finishing output and returning any error
223240
/// encountered.
224241
#[unstable(feature = "debug_builders", reason = "method was just created")]
225-
pub fn finish(self) -> fmt::Result {
226-
self.result.and_then(|_| {
227-
let end = match (self.has_fields, self.is_pretty()) {
228-
(false, _) => "}",
229-
(true, false) => " }",
230-
(true, true) => "\n}",
231-
};
232-
self.fmt.write_str(end)
233-
})
242+
pub fn finish(mut self) -> fmt::Result {
243+
self.inner.finish();
244+
self.inner.result.and_then(|_| self.inner.fmt.write_str("}"))
234245
}
246+
}
235247

236-
fn is_pretty(&self) -> bool {
237-
self.fmt.flags() & (1 << (FlagV1::Alternate as usize)) != 0
248+
/// A struct to help with `fmt::Debug` implementations.
249+
///
250+
/// Constructed by the `Formatter::debug_list` method.
251+
#[must_use]
252+
pub struct DebugList<'a, 'b: 'a> {
253+
inner: DebugInner<'a, 'b>,
254+
}
255+
256+
pub fn debug_list_new<'a, 'b>(fmt: &'a mut fmt::Formatter<'b>) -> DebugList<'a, 'b> {
257+
let result = write!(fmt, "[");
258+
DebugList {
259+
inner: DebugInner {
260+
fmt: fmt,
261+
result: result,
262+
has_fields: false,
263+
}
264+
}
265+
}
266+
267+
impl<'a, 'b: 'a> DebugList<'a, 'b> {
268+
/// Adds a new entry to the set output.
269+
#[unstable(feature = "debug_builders", reason = "method was just created")]
270+
pub fn entry(mut self, entry: &fmt::Debug) -> DebugList<'a, 'b> {
271+
self.inner.entry(entry);
272+
self
273+
}
274+
275+
/// Consumes the `DebugSet`, finishing output and returning any error
276+
/// encountered.
277+
#[unstable(feature = "debug_builders", reason = "method was just created")]
278+
pub fn finish(mut self) -> fmt::Result {
279+
self.inner.finish();
280+
self.inner.result.and_then(|_| self.inner.fmt.write_str("]"))
238281
}
239282
}
240283

@@ -248,8 +291,8 @@ pub struct DebugMap<'a, 'b: 'a> {
248291
has_fields: bool,
249292
}
250293

251-
pub fn debug_map_new<'a, 'b>(fmt: &'a mut fmt::Formatter<'b>, name: &str) -> DebugMap<'a, 'b> {
252-
let result = write!(fmt, "{} {{", name);
294+
pub fn debug_map_new<'a, 'b>(fmt: &'a mut fmt::Formatter<'b>) -> DebugMap<'a, 'b> {
295+
let result = write!(fmt, "{{");
253296
DebugMap {
254297
fmt: fmt,
255298
result: result,
@@ -262,37 +305,26 @@ impl<'a, 'b: 'a> DebugMap<'a, 'b> {
262305
#[unstable(feature = "debug_builders", reason = "method was just created")]
263306
pub fn entry(mut self, key: &fmt::Debug, value: &fmt::Debug) -> DebugMap<'a, 'b> {
264307
self.result = self.result.and_then(|_| {
265-
let prefix = if self.has_fields {
266-
","
267-
} else {
268-
""
269-
};
270-
271308
if self.is_pretty() {
272309
let mut writer = PadAdapter::new(self.fmt);
310+
let prefix = if self.has_fields { "," } else { "" };
273311
fmt::write(&mut writer, format_args!("{}\n{:#?}: {:#?}", prefix, key, value))
274312
} else {
275-
write!(self.fmt, "{} {:?}: {:?}", prefix, key, value)
313+
let prefix = if self.has_fields { ", " } else { "" };
314+
write!(self.fmt, "{}{:?}: {:?}", prefix, key, value)
276315
}
277316
});
278317

279318
self.has_fields = true;
280-
281319
self
282320
}
283321

284322
/// Consumes the `DebugMap`, finishing output and returning any error
285323
/// encountered.
286324
#[unstable(feature = "debug_builders", reason = "method was just created")]
287325
pub fn finish(self) -> fmt::Result {
288-
self.result.and_then(|_| {
289-
let end = match (self.has_fields, self.is_pretty()) {
290-
(false, _) => "}",
291-
(true, false) => " }",
292-
(true, true) => "\n}",
293-
};
294-
self.fmt.write_str(end)
295-
})
326+
let prefix = if self.is_pretty() && self.has_fields { "\n" } else { "" };
327+
self.result.and_then(|_| write!(self.fmt, "{}}}", prefix))
296328
}
297329

298330
fn is_pretty(&self) -> bool {

branches/snap-stage3/src/libcore/fmt/float.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ pub use self::SignFormat::*;
1717
use char;
1818
use char::CharExt;
1919
use fmt;
20-
use iter::Iterator;
20+
use iter::IteratorExt;
2121
use num::{cast, Float, ToPrimitive};
2222
use num::FpCategory as Fp;
2323
use ops::FnOnce;

0 commit comments

Comments
 (0)