Skip to content

Commit a56a623

Browse files
committed
---
yaml --- r: 129579 b: refs/heads/master c: d860a66 h: refs/heads/master i: 129577: f98bb72 129575: b265d7d v: v3
1 parent e363d63 commit a56a623

File tree

373 files changed

+5940
-3261
lines changed

Some content is hidden

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

373 files changed

+5940
-3261
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 4aff964463b90ae8a27d68ae7d85b6ba721d0779
2+
refs/heads/master: d860a667e7a856b72498bb70ee562a7ae364df5a
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 0d3bd7720c50e3ada4bac77331d43926493be4fe
55
refs/heads/try: 80b45ddbd351f0a4a939c3a3c4e20b4defec4b35

trunk/src/doc/guide.md

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1801,7 +1801,6 @@ Let's try compiling what Cargo gave us:
18011801
```{bash}
18021802
$ cargo build
18031803
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
1804-
$
18051804
```
18061805

18071806
Excellent! Open up your `src/main.rs` again. We'll be writing all of
@@ -1817,7 +1816,6 @@ $ cargo run
18171816
Compiling guessing_game v0.1.0 (file:/home/you/projects/guessing_game)
18181817
Running `target/guessing_game`
18191818
Hello, world!
1820-
$
18211819
```
18221820

18231821
Great! The `run` command comes in handy when you need to rapidly iterate on a project.
@@ -1962,7 +1960,6 @@ fn main() {
19621960
```{notrust,ignore}
19631961
$ cargo build
19641962
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
1965-
$
19661963
```
19671964

19681965
Excellent! Try running our new program a few times:
@@ -2021,7 +2018,7 @@ And trying it out:
20212018
```{notrust,ignore}
20222019
$ cargo build
20232020
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
2024-
$ ./target/guessing_game
2021+
$ ./target/guessing_game
20252022
Guess the number!
20262023
The secret number is: 57
20272024
Please input your guess.
@@ -2292,13 +2289,12 @@ print an error message and return. Let's give this a shot:
22922289
```{notrust,ignore}
22932290
$ cargo build
22942291
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
2295-
$ ./target/guessing_game
2292+
$ ./target/guessing_game
22962293
Guess the number!
22972294
The secret number is: 17
22982295
Please input your guess.
22992296
5
23002297
Please input a number!
2301-
$
23022298
```
23032299

23042300
Uh, what? But we did!
@@ -2358,14 +2354,13 @@ Let's try it!
23582354
```{notrust,ignore}
23592355
$ cargo build
23602356
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
2361-
$ ./target/guessing_game
2357+
$ ./target/guessing_game
23622358
Guess the number!
23632359
The secret number is: 58
23642360
Please input your guess.
2365-
76
2361+
76
23662362
You guessed: 76
23672363
Too big!
2368-
$
23692364
```
23702365

23712366
Nice! You can see I even added spaces before my guess, and it still figured
@@ -2436,7 +2431,7 @@ that `return`? If we give a non-number answer, we'll `return` and quit. Observe:
24362431
```{notrust,ignore}
24372432
$ cargo build
24382433
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
2439-
$ ./target/guessing_game
2434+
$ ./target/guessing_game
24402435
Guess the number!
24412436
The secret number is: 59
24422437
Please input your guess.
@@ -2454,7 +2449,6 @@ You win!
24542449
Please input your guess.
24552450
quit
24562451
Please input a number!
2457-
$
24582452
```
24592453

24602454
Ha! `quit` actually quits. As does any other non-number input. Well, this is
@@ -2569,7 +2563,7 @@ Now we should be good! Let's try:
25692563
```{rust,ignore}
25702564
$ cargo build
25712565
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
2572-
$ ./target/guessing_game
2566+
$ ./target/guessing_game
25732567
Guess the number!
25742568
The secret number is: 61
25752569
Please input your guess.
@@ -2771,7 +2765,6 @@ $ cargo run
27712765
Compiling modules v0.0.1 (file:///home/you/projects/modules)
27722766
Running `target/modules`
27732767
Hello, world!
2774-
$
27752768
```
27762769

27772770
Nice!
@@ -2922,7 +2915,6 @@ This should all compile as usual:
29222915
```{notrust,ignore}
29232916
$ cargo build
29242917
Compiling modules v0.0.1 (file:///home/you/projects/modules)
2925-
$
29262918
```
29272919

29282920
We've seen how the `::` operator can be used to call into modules, but when
@@ -3096,7 +3088,6 @@ $ cargo run
30963088
Compiling testing v0.0.1 (file:///home/you/projects/testing)
30973089
Running `target/testing`
30983090
Hello, world!
3099-
$
31003091
```
31013092

31023093
Great. Rust's infrastructure supports tests in two sorts of places, and they're
@@ -3249,7 +3240,6 @@ running 1 test
32493240
test foo ... ok
32503241
32513242
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
3252-
$
32533243
```
32543244

32553245
Nice! Our test passes, as we expected. Let's get rid of that warning for our `main`
@@ -3717,18 +3707,18 @@ That's a lot to take in. It's also one of the _most_ important concepts in
37173707
all of Rust. Let's see this syntax in action:
37183708

37193709
```{rust}
3720-
{
3710+
{
37213711
let x = 5i; // x is the owner of this integer, which is memory on the stack.
37223712
37233713
// other code here...
3724-
3714+
37253715
} // privilege 1: when x goes out of scope, this memory is deallocated
37263716
37273717
/// this function borrows an integer. It's given back automatically when the
37283718
/// function returns.
3729-
fn foo(x: &int) -> &int { x }
3719+
fn foo(x: &int) -> &int { x }
37303720
3731-
{
3721+
{
37323722
let x = 5i; // x is the owner of this integer, which is memory on the stack.
37333723
37343724
// privilege 2: you may lend that resource, to as many borrowers as you'd like
@@ -3738,14 +3728,14 @@ fn foo(x: &int) -> &int { x }
37383728
foo(&x); // functions can borrow too!
37393729
37403730
let a = &x; // we can do this alllllll day!
3741-
}
3731+
}
37423732
3743-
{
3733+
{
37443734
let mut x = 5i; // x is the owner of this integer, which is memory on the stack.
37453735
37463736
let y = &mut x; // privilege 3: you may lend that resource to a single borrower,
37473737
// mutably
3748-
}
3738+
}
37493739
```
37503740

37513741
If you are a borrower, you get a few privileges as well, but must also obey a
@@ -4534,7 +4524,7 @@ let one_to_one_hundred = range(0i, 100i).collect();
45344524
```
45354525

45364526
As you can see, we call `collect()` on our iterator. `collect()` takes
4537-
as many values as the iterator will give it, and returns a collection
4527+
as many values as the iterator will give it, and returns a collection
45384528
of the results. So why won't this compile? Rust can't determine what
45394529
type of things you want to collect, and so you need to let it know.
45404530
Here's the version that does compile:
@@ -5507,7 +5497,7 @@ fn main() {
55075497
}
55085498
```
55095499

5510-
Whew! This isn't too terrible. You can see that we still `let x = 5i`,
5500+
Whew! This isn't too terrible. You can see that we still `let x = 5i`,
55115501
but then things get a little bit hairy. Three more bindings get set: a
55125502
static format string, an argument vector, and the aruments. We then
55135503
invoke the `println_args` function with the generated arguments.
@@ -5530,9 +5520,9 @@ There are two circumstances where Rust's safety provisions don't work well.
55305520
The first is when interfacing with C code, and the second is when building
55315521
certain kinds of abstractions.
55325522

5533-
Rust has support for FFI, (which you can read about in the [FFI
5534-
Guide](guide-ffi.html)) but Rust can't guarantee that the C code will be safe,
5535-
like Rust's will. Therefore, Rust marks such functions with the `unsafe`
5523+
Rust has support for FFI (which you can read about in the [FFI
5524+
Guide](guide-ffi.html)), but can't guarantee that the C code will be safe.
5525+
Therefore, Rust marks such functions with the `unsafe`
55365526
keyword, which indicates that the function may not behave properly.
55375527

55385528
Second, if you'd like to create some sort of shared-memory data structure, Rust

trunk/src/doc/rust.md

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -891,9 +891,8 @@ There are several kinds of view item:
891891
##### Extern crate declarations
892892

893893
~~~~ {.ebnf .gram}
894-
extern_crate_decl : "extern" "crate" ident [ '(' link_attrs ')' ] ? [ '=' string_lit ] ? ;
895-
link_attrs : link_attr [ ',' link_attrs ] + ;
896-
link_attr : ident '=' literal ;
894+
extern_crate_decl : "extern" "crate" crate_name
895+
crate_name: ident | ( string_lit as ident )
897896
~~~~
898897

899898
An _`extern crate` declaration_ specifies a dependency on an external crate.
@@ -913,11 +912,9 @@ Four examples of `extern crate` declarations:
913912
~~~~ {.ignore}
914913
extern crate pcre;
915914
916-
extern crate std; // equivalent to: extern crate std = "std";
915+
extern crate std; // equivalent to: extern crate std as std;
917916
918-
extern crate ruststd = "std"; // linking to 'std' under another name
919-
920-
extern crate foo = "some/where/rust-foo#foo:1.0"; // a full crate ID for external tools
917+
extern crate "std" as ruststd; // linking to 'std' under another name
921918
~~~~
922919

923920
##### Use declarations

trunk/src/liballoc/heap.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
// FIXME: #13996: mark the `allocate` and `reallocate` return value as `noalias`
1313
// and `nonnull`
1414

15+
use core::ptr::RawPtr;
1516
#[cfg(not(test))] use core::raw;
1617
#[cfg(not(test))] use util;
1718

@@ -69,6 +70,11 @@ pub unsafe fn reallocate_inplace(ptr: *mut u8, size: uint, align: uint,
6970
/// the value returned by `usable_size` for the requested size.
7071
#[inline]
7172
pub unsafe fn deallocate(ptr: *mut u8, size: uint, align: uint) {
73+
// FIXME(14395) This is only required for DST ~[T], it should be removed once
74+
// we fix that representation to not use null pointers.
75+
if ptr.is_null() {
76+
return;
77+
}
7278
imp::deallocate(ptr, size, align)
7379
}
7480

trunk/src/libcollections/bitv.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2557,7 +2557,7 @@ mod tests {
25572557
}
25582558

25592559
fn rng() -> rand::IsaacRng {
2560-
let seed = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
2560+
let seed: &[_] = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
25612561
rand::SeedableRng::from_seed(seed)
25622562
}
25632563

trunk/src/libcollections/dlist.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1088,7 +1088,8 @@ mod tests {
10881088
let n = list_from([1i,2,3]);
10891089
spawn(proc() {
10901090
check_links(&n);
1091-
assert_eq!(&[&1,&2,&3], n.iter().collect::<Vec<&int>>().as_slice());
1091+
let a: &[_] = &[&1,&2,&3];
1092+
assert_eq!(a, n.iter().collect::<Vec<&int>>().as_slice());
10921093
});
10931094
}
10941095

trunk/src/libcollections/hash/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,8 @@ mod tests {
346346
assert_eq!(hasher.hash(&'a'), 97);
347347

348348
assert_eq!(hasher.hash(&("a")), 97 + 0xFF);
349-
assert_eq!(hasher.hash(& &[1u8, 2u8, 3u8]), 9);
349+
let cs: &[u8] = &[1u8, 2u8, 3u8];
350+
assert_eq!(hasher.hash(& cs), 9);
350351

351352
unsafe {
352353
let ptr: *const int = mem::transmute(5i);

trunk/src/libcollections/hash/sip.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -495,8 +495,8 @@ mod tests {
495495
assert!(s != t && t != u);
496496
assert!(hash(&s) != hash(&t) && hash(&s) != hash(&u));
497497

498-
let v = (&[1u8], &[0u8, 0], &[0u8]);
499-
let w = (&[1u8, 0, 0, 0], &[], &[]);
498+
let v: (&[u8], &[u8], &[u8]) = (&[1u8], &[0u8, 0], &[0u8]);
499+
let w: (&[u8], &[u8], &[u8]) = (&[1u8, 0, 0, 0], &[], &[]);
500500

501501
assert!(v != w);
502502
assert!(hash(&v) != hash(&w));

trunk/src/libcollections/ringbuf.rs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,8 @@ impl<T> RingBuf<T> {
243243
/// buf.push(5i);
244244
/// buf.push(3);
245245
/// buf.push(4);
246-
/// assert_eq!(buf.iter().collect::<Vec<&int>>().as_slice(), &[&5, &3, &4]);
246+
/// let b: &[_] = &[&5, &3, &4];
247+
/// assert_eq!(buf.iter().collect::<Vec<&int>>().as_slice(), b);
247248
/// ```
248249
pub fn iter<'a>(&'a self) -> Items<'a, T> {
249250
Items{index: 0, rindex: self.nelts, lo: self.lo, elts: self.elts.as_slice()}
@@ -263,7 +264,8 @@ impl<T> RingBuf<T> {
263264
/// for num in buf.mut_iter() {
264265
/// *num = *num - 2;
265266
/// }
266-
/// assert_eq!(buf.mut_iter().collect::<Vec<&mut int>>().as_slice(), &[&mut 3, &mut 1, &mut 2]);
267+
/// let b: &[_] = &[&mut 3, &mut 1, &mut 2];
268+
/// assert_eq!(buf.mut_iter().collect::<Vec<&mut int>>().as_slice(), b);
267269
/// ```
268270
pub fn mut_iter<'a>(&'a mut self) -> MutItems<'a, T> {
269271
let start_index = raw_index(self.lo, self.elts.len(), 0);
@@ -865,12 +867,18 @@ mod tests {
865867
for i in range(0i, 5) {
866868
d.push_back(i);
867869
}
868-
assert_eq!(d.iter().collect::<Vec<&int>>().as_slice(), &[&0,&1,&2,&3,&4]);
870+
{
871+
let b: &[_] = &[&0,&1,&2,&3,&4];
872+
assert_eq!(d.iter().collect::<Vec<&int>>().as_slice(), b);
873+
}
869874

870875
for i in range(6i, 9) {
871876
d.push_front(i);
872877
}
873-
assert_eq!(d.iter().collect::<Vec<&int>>().as_slice(), &[&8,&7,&6,&0,&1,&2,&3,&4]);
878+
{
879+
let b: &[_] = &[&8,&7,&6,&0,&1,&2,&3,&4];
880+
assert_eq!(d.iter().collect::<Vec<&int>>().as_slice(), b);
881+
}
874882

875883
let mut it = d.iter();
876884
let mut len = d.len();
@@ -890,12 +898,16 @@ mod tests {
890898
for i in range(0i, 5) {
891899
d.push_back(i);
892900
}
893-
assert_eq!(d.iter().rev().collect::<Vec<&int>>().as_slice(), &[&4,&3,&2,&1,&0]);
901+
{
902+
let b: &[_] = &[&4,&3,&2,&1,&0];
903+
assert_eq!(d.iter().rev().collect::<Vec<&int>>().as_slice(), b);
904+
}
894905

895906
for i in range(6i, 9) {
896907
d.push_front(i);
897908
}
898-
assert_eq!(d.iter().rev().collect::<Vec<&int>>().as_slice(), &[&4,&3,&2,&1,&0,&6,&7,&8]);
909+
let b: &[_] = &[&4,&3,&2,&1,&0,&6,&7,&8];
910+
assert_eq!(d.iter().rev().collect::<Vec<&int>>().as_slice(), b);
899911
}
900912

901913
#[test]

0 commit comments

Comments
 (0)