Skip to content

Commit 983169c

Browse files
committed
---
yaml --- r: 143201 b: refs/heads/try2 c: 766eb95 h: refs/heads/master i: 143199: 2645716 v: v3
1 parent 2e283d4 commit 983169c

File tree

141 files changed

+1801
-1222
lines changed

Some content is hidden

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

141 files changed

+1801
-1222
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: 7a6ebb36b0061f68c5122b3f475871239af6aa8a
8+
refs/heads/try2: 766eb950c6e7cdbab89e15200d0bd2dfee58e25e
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/doc/tutorial-container.md

Lines changed: 50 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -192,15 +192,15 @@ let mut it = xs.iter().zip(ys.iter());
192192

193193
// print out the pairs of elements up to (&3, &"baz")
194194
for it.advance |(x, y)| {
195-
println(fmt!("%d %s", *x, *y));
195+
printfln!("%d %s", *x, *y);
196196

197197
if *x == 3 {
198198
break;
199199
}
200200
}
201201

202202
// yield and print the last pair from the iterator
203-
println(fmt!("last: %?", it.next()));
203+
printfln!("last: %?", it.next());
204204

205205
// the iterator is now fully consumed
206206
assert!(it.next().is_none());
@@ -294,15 +294,59 @@ another `DoubleEndedIterator` with `next` and `next_back` exchanged.
294294
~~~
295295
let xs = [1, 2, 3, 4, 5, 6];
296296
let mut it = xs.iter();
297-
println(fmt!("%?", it.next())); // prints `Some(&1)`
298-
println(fmt!("%?", it.next())); // prints `Some(&2)`
299-
println(fmt!("%?", it.next_back())); // prints `Some(&6)`
297+
printfln!("%?", it.next()); // prints `Some(&1)`
298+
printfln!("%?", it.next()); // prints `Some(&2)`
299+
printfln!("%?", it.next_back()); // prints `Some(&6)`
300300

301301
// prints `5`, `4` and `3`
302302
for it.invert().advance |&x| {
303-
println(fmt!("%?", x))
303+
printfln!("%?", x)
304304
}
305305
~~~
306306
307307
The `rev_iter` and `mut_rev_iter` methods on vectors just return an inverted
308308
version of the standard immutable and mutable vector iterators.
309+
310+
The `chain_`, `transform`, `filter`, `filter_map` and `peek` adaptors are
311+
`DoubleEndedIterator` implementations if the underlying iterators are.
312+
313+
~~~
314+
let xs = [1, 2, 3, 4];
315+
let ys = [5, 6, 7, 8];
316+
let mut it = xs.iter().chain_(ys.iter()).transform(|&x| x * 2);
317+
318+
printfln!("%?", it.next()); // prints `Some(2)`
319+
320+
// prints `16`, `14`, `12`, `10`, `8`, `6`, `4`
321+
for it.invert().advance |x| {
322+
printfln!("%?", x);
323+
}
324+
~~~
325+
326+
## Random-access iterators
327+
328+
The `RandomAccessIterator` trait represents an iterator offering random access
329+
to the whole range. The `indexable` method retrieves the number of elements
330+
accessible with the `idx` method.
331+
332+
The `chain_` adaptor is an implementation of `RandomAccessIterator` if the
333+
underlying iterators are.
334+
335+
~~~
336+
let xs = [1, 2, 3, 4, 5];
337+
let ys = ~[7, 9, 11];
338+
let mut it = xs.iter().chain_(ys.iter());
339+
printfln!("%?", it.idx(0)); // prints `Some(&1)`
340+
printfln!("%?", it.idx(5)); // prints `Some(&7)`
341+
printfln!("%?", it.idx(7)); // prints `Some(&11)`
342+
printfln!("%?", it.idx(8)); // prints `None`
343+
344+
// yield two elements from the beginning, and one from the end
345+
it.next();
346+
it.next();
347+
it.next_back();
348+
349+
printfln!("%?", it.idx(0)); // prints `Some(&3)`
350+
printfln!("%?", it.idx(4)); // prints `Some(&9)`
351+
printfln!("%?", it.idx(6)); // prints `None`
352+
~~~

branches/try2/doc/tutorial.md

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -499,8 +499,8 @@ types.
499499
> items.
500500
501501
~~~~
502-
# use std::float;
503-
# use std::num::atan;
502+
use std::float;
503+
use std::num::atan;
504504
fn angle(vector: (float, float)) -> float {
505505
let pi = float::consts::pi;
506506
match vector {
@@ -555,7 +555,7 @@ while cake_amount > 0 {
555555
`loop` denotes an infinite loop, and is the preferred way of writing `while true`:
556556

557557
~~~~
558-
# use std::int;
558+
use std::int;
559559
let mut x = 5;
560560
loop {
561561
x += x - 3;
@@ -701,7 +701,7 @@ get at their contents. All variant constructors can be used as
701701
patterns, as in this definition of `area`:
702702

703703
~~~~
704-
# use std::float;
704+
use std::float;
705705
# struct Point {x: float, y: float}
706706
# enum Shape { Circle(Point, float), Rectangle(Point, Point) }
707707
fn area(sh: Shape) -> float {
@@ -733,7 +733,7 @@ fn point_from_direction(dir: Direction) -> Point {
733733
Enum variants may also be structs. For example:
734734

735735
~~~~
736-
# use std::float;
736+
use std::float;
737737
# struct Point { x: float, y: float }
738738
# fn square(x: float) -> float { x * x }
739739
enum Shape {
@@ -1599,7 +1599,8 @@ lists back to back. Since that is so unsightly, empty argument lists
15991599
may be omitted from `do` expressions.
16001600

16011601
~~~~
1602-
# use std::task::spawn;
1602+
use std::task::spawn;
1603+
16031604
do spawn {
16041605
debug!("Kablam!");
16051606
}
@@ -1728,7 +1729,7 @@ impl Circle {
17281729
To call such a method, just prefix it with the type name and a double colon:
17291730

17301731
~~~~
1731-
# use std::float::consts::pi;
1732+
use std::float::consts::pi;
17321733
struct Circle { radius: float }
17331734
impl Circle {
17341735
fn new(area: float) -> Circle { Circle { radius: (area / pi).sqrt() } }
@@ -1774,7 +1775,7 @@ illegal to copy and pass by value.
17741775
Generic `type`, `struct`, and `enum` declarations follow the same pattern:
17751776

17761777
~~~~
1777-
# use std::hashmap::HashMap;
1778+
use std::hashmap::HashMap;
17781779
type Set<T> = HashMap<T, ()>;
17791780
17801781
struct Stack<T> {
@@ -2000,7 +2001,7 @@ name and a double colon. The compiler uses type inference to decide which
20002001
implementation to use.
20012002

20022003
~~~~
2003-
# use std::float::consts::pi;
2004+
use std::float::consts::pi;
20042005
trait Shape { fn new(area: float) -> Self; }
20052006
struct Circle { radius: float }
20062007
struct Square { length: float }
@@ -2156,7 +2157,7 @@ trait Circle : Shape { fn radius(&self) -> float; }
21562157
Now, we can implement `Circle` on a type only if we also implement `Shape`.
21572158

21582159
~~~~
2159-
# use std::float::consts::pi;
2160+
use std::float::consts::pi;
21602161
# trait Shape { fn area(&self) -> float; }
21612162
# trait Circle : Shape { fn radius(&self) -> float; }
21622163
# struct Point { x: float, y: float }
@@ -2191,7 +2192,7 @@ fn radius_times_area<T: Circle>(c: T) -> float {
21912192
Likewise, supertrait methods may also be called on trait objects.
21922193

21932194
~~~ {.xfail-test}
2194-
# use std::float::consts::pi;
2195+
use std::float::consts::pi;
21952196
# trait Shape { fn area(&self) -> float; }
21962197
# trait Circle : Shape { fn radius(&self) -> float; }
21972198
# struct Point { x: float, y: float }

branches/try2/src/compiletest/runtest.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ fn run_debuginfo_test(config: &config, props: &TestProps, testfile: &Path) {
292292
}
293293
}
294294
if i != num_check_lines {
295-
fatal_ProcRes(fmt!("line not found in debugger output: %s"
295+
fatal_ProcRes(fmt!("line not found in debugger output: %s",
296296
check_lines[i]), &ProcRes);
297297
}
298298
}

branches/try2/src/etc/emacs/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,8 @@ marking, press x, and ELPA will install the packages for you (under
9898
~/.emacs.d/elpa/).
9999

100100
* or using <kbd>M-x package-install rust-mode
101+
102+
### Known bugs
103+
104+
* Combining `global-whitespace-mode` and `rust-mode` is generally glitchy.
105+
See [Issue #3994](https://github.com/mozilla/rust/issues/3994).

branches/try2/src/libextra/base64.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ impl<'self> ToBase64 for &'self [u8] {
7575
*
7676
* fn main () {
7777
* let str = [52,32].to_base64(standard);
78-
* println(fmt!("%s", str));
78+
* printfln!("%s", str);
7979
* }
8080
* ~~~
8181
*/
@@ -164,7 +164,7 @@ impl<'self> ToBase64 for &'self str {
164164
*
165165
* fn main () {
166166
* let str = "Hello, World".to_base64(standard);
167-
* println(fmt!("%s",str));
167+
* printfln!("%s", str);
168168
* }
169169
* ~~~
170170
*
@@ -194,9 +194,9 @@ impl<'self> FromBase64 for &'self [u8] {
194194
*
195195
* fn main () {
196196
* let str = [52,32].to_base64(standard);
197-
* println(fmt!("%s", str));
197+
* printfln!("%s", str);
198198
* let bytes = str.from_base64();
199-
* println(fmt!("%?",bytes));
199+
* printfln!("%?", bytes);
200200
* }
201201
* ~~~
202202
*/
@@ -271,11 +271,11 @@ impl<'self> FromBase64 for &'self str {
271271
*
272272
* fn main () {
273273
* let hello_str = "Hello, World".to_base64(standard);
274-
* println(fmt!("%s",hello_str));
274+
* printfln!("%s", hello_str);
275275
* let bytes = hello_str.from_base64();
276-
* println(fmt!("%?",bytes));
276+
* printfln!("%?", bytes);
277277
* let result_str = str::from_bytes(bytes);
278-
* println(fmt!("%s",result_str));
278+
* printfln!("%s", result_str);
279279
* }
280280
* ~~~
281281
*/

branches/try2/src/libextra/future.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* # fn make_a_sandwich() {};
2020
* let mut delayed_fib = extra::future::spawn (|| fib(5000) );
2121
* make_a_sandwich();
22-
* println(fmt!("fib(5000) = %?", delayed_fib.get()))
22+
* printfln!("fib(5000) = %?", delayed_fib.get())
2323
* ~~~
2424
*/
2525

branches/try2/src/libextra/getopts.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
* }
4545
*
4646
* fn print_usage(program: &str, _opts: &[Opt]) {
47-
* println(fmt!("Usage: %s [options]", program));
47+
* printfln!("Usage: %s [options]", program);
4848
* println("-o\t\tOutput");
4949
* println("-h --help\tUsage");
5050
* }

branches/try2/src/libextra/json.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ pub enum Json {
4141
}
4242

4343
pub type List = ~[Json];
44-
pub type Object = HashMap<~str, Json>;
44+
pub type Object = TreeMap<~str, Json>;
4545

4646
#[deriving(Eq)]
4747
/// If an error occurs while parsing some JSON, this is the structure which is
@@ -809,7 +809,7 @@ impl<T : iterator::Iterator<char>> Parser<T> {
809809
self.bump();
810810
self.parse_whitespace();
811811

812-
let mut values = ~HashMap::new();
812+
let mut values = ~TreeMap::new();
813813

814814
if self.ch == '}' {
815815
self.bump();
@@ -1087,7 +1087,7 @@ impl serialize::Decoder for Decoder {
10871087
let len = match self.stack.pop() {
10881088
Object(obj) => {
10891089
let len = obj.len();
1090-
for obj.consume().advance |(key, value)| {
1090+
for obj.consume_iter().advance |(key, value)| {
10911091
self.stack.push(value);
10921092
self.stack.push(String(key));
10931093
}
@@ -1294,19 +1294,19 @@ impl<A:ToJson> ToJson for ~[A] {
12941294
fn to_json(&self) -> Json { List(self.map(|elt| elt.to_json())) }
12951295
}
12961296

1297-
impl<A:ToJson> ToJson for HashMap<~str, A> {
1297+
impl<A:ToJson> ToJson for TreeMap<~str, A> {
12981298
fn to_json(&self) -> Json {
1299-
let mut d = HashMap::new();
1299+
let mut d = TreeMap::new();
13001300
for self.iter().advance |(key, value)| {
13011301
d.insert((*key).clone(), value.to_json());
13021302
}
13031303
Object(~d)
13041304
}
13051305
}
13061306

1307-
impl<A:ToJson> ToJson for TreeMap<~str, A> {
1307+
impl<A:ToJson> ToJson for HashMap<~str, A> {
13081308
fn to_json(&self) -> Json {
1309-
let mut d = HashMap::new();
1309+
let mut d = TreeMap::new();
13101310
for self.iter().advance |(key, value)| {
13111311
d.insert((*key).clone(), value.to_json());
13121312
}
@@ -1338,11 +1338,11 @@ mod tests {
13381338

13391339
use super::*;
13401340

1341-
use std::hashmap::HashMap;
13421341
use std::io;
13431342
use std::result;
13441343

1345-
use extra::serialize::Decodable;
1344+
use serialize::Decodable;
1345+
use treemap::TreeMap;
13461346

13471347
#[deriving(Eq, Encodable, Decodable)]
13481348
enum Animal {
@@ -1363,7 +1363,7 @@ mod tests {
13631363
}
13641364

13651365
fn mk_object(items: &[(~str, Json)]) -> Json {
1366-
let mut d = ~HashMap::new();
1366+
let mut d = ~TreeMap::new();
13671367

13681368
for items.iter().advance |item| {
13691369
match *item {
@@ -1954,7 +1954,7 @@ mod tests {
19541954
fn test_decode_map() {
19551955
let s = ~"{\"a\": \"Dog\", \"b\": [\"Frog\", \"Henry\", 349]}";
19561956
let mut decoder = Decoder(from_str(s).unwrap());
1957-
let mut map: HashMap<~str, Animal> = Decodable::decode(&mut decoder);
1957+
let mut map: TreeMap<~str, Animal> = Decodable::decode(&mut decoder);
19581958
19591959
assert_eq!(map.pop(&~"a"), Some(Dog));
19601960
assert_eq!(map.pop(&~"b"), Some(Frog(~"Henry", 349)));

0 commit comments

Comments
 (0)