Skip to content

Commit 51e7e13

Browse files
committed
---
yaml --- r: 187871 b: refs/heads/tmp c: 8c9fe23 h: refs/heads/master i: 187869: 643f0fc 187867: a230326 187863: 485be22 187855: e86affb 187839: 23f333a v: v3
1 parent ca59298 commit 51e7e13

Some content is hidden

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

65 files changed

+1156
-165
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,5 @@ refs/heads/building: 126db549b038c84269a1e4fe46f051b2c15d6970
3434
refs/heads/beta: 522d09dfecbeca1595f25ac58c6d0178bbd21d7d
3535
refs/heads/windistfix: 7608dbad651f02e837ed05eef3d74a6662a6e928
3636
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
37-
refs/heads/tmp: 9cdb2568ca3c1fd5569b3073e757ccee0ec6c5a8
37+
refs/heads/tmp: 8c9fe23ff0479ea3a23cd8fcede13044d316ea34
3838
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f

branches/tmp/src/doc/reference.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ nonzero_dec: '1' | '2' | '3' | '4'
302302

303303
A _character literal_ is a single Unicode character enclosed within two
304304
`U+0027` (single-quote) characters, with the exception of `U+0027` itself,
305-
which must be _escaped_ by a preceding U+005C character (`\`).
305+
which must be _escaped_ by a preceding `U+005C` character (`\`).
306306

307307
##### String literals
308308

@@ -311,6 +311,19 @@ A _string literal_ is a sequence of any Unicode characters enclosed within two
311311
which must be _escaped_ by a preceding `U+005C` character (`\`), or a _raw
312312
string literal_.
313313

314+
A multi-line string literal may be defined by terminating each line with a
315+
`U+005C` character (`\`) immediately before the newline. This causes the
316+
`U+005C` character, the newline, and all whitespace at the beginning of the
317+
next line to be ignored.
318+
319+
```rust
320+
let a = "foobar";
321+
let b = "foo\
322+
bar";
323+
324+
assert_eq!(a,b);
325+
```
326+
314327
##### Character escapes
315328

316329
Some additional _escapes_ are available in either character or non-raw string

branches/tmp/src/doc/trpl/hello-cargo.md

Lines changed: 62 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ the Cargo
1818
README](https://github.com/rust-lang/cargo#installing-cargo-from-nightlies)
1919
for specific instructions about installing it.
2020

21+
## Converting to Cargo
22+
2123
Let's convert Hello World to Cargo.
2224

2325
To Cargo-ify our project, we need to do two things: Make a `Cargo.toml`
2426
configuration file, and put our source file in the right place. Let's
2527
do that part first:
2628

27-
```{bash}
29+
```bash
2830
$ mkdir src
2931
$ mv main.rs src/main.rs
3032
```
@@ -36,7 +38,7 @@ place for everything, and everything in its place.
3638

3739
Next, our configuration file:
3840

39-
```{bash}
41+
```bash
4042
$ editor Cargo.toml
4143
```
4244

@@ -73,7 +75,7 @@ well as what it is named.
7375

7476
Once you have this file in place, we should be ready to build! Try this:
7577

76-
```{bash}
78+
```bash
7779
$ cargo build
7880
Compiling hello_world v0.0.1 (file:///home/yourname/projects/hello_world)
7981
$ ./target/hello_world
@@ -103,6 +105,62 @@ That's it! We've successfully built `hello_world` with Cargo. Even though our
103105
program is simple, it's using much of the real tooling that you'll use for the
104106
rest of your Rust career.
105107

108+
## A New Project
109+
110+
You don't have to go through this whole process every time you want to start a new
111+
project! Cargo has the ability to make a bare-bones project directory in which you
112+
can start developing right away.
113+
114+
To start a new project with Cargo, use `cargo new`:
115+
116+
```bash
117+
$ cargo new hello_world --bin
118+
```
119+
120+
We're passing `--bin` because we're making a binary program: if we
121+
were making a library, we'd leave it off.
122+
123+
Let's check out what Cargo has generated for us:
124+
125+
```bash
126+
$ cd hello_world
127+
$ tree .
128+
.
129+
├── Cargo.toml
130+
└── src
131+
└── main.rs
132+
133+
1 directory, 2 files
134+
```
135+
136+
If you don't have the `tree` command, you can probably get it from your distro's package
137+
manager. It's not necessary, but it's certainly useful.
138+
139+
This is all we need to get started. First, let's check out `Cargo.toml`:
140+
141+
```toml
142+
[package]
143+
144+
name = "hello_world"
145+
version = "0.0.1"
146+
authors = ["Your Name <[email protected]>"]
147+
```
148+
149+
Cargo has populated this file with reasonable defaults based off the arguments you gave
150+
it and your `git` global configuration. You may notice that Cargo has also initialized
151+
the `hello_world` directory as a `git` repository.
152+
153+
Here's what's in `src/main.rs`:
154+
155+
```rust
156+
fn main() {
157+
println!("Hello, world!");
158+
}
159+
```
160+
161+
Cargo has generated a "Hello World!" for us, and you're ready to start coding! A
162+
much more in-depth guide to Cargo can be found [here](http://doc.crates.io/guide.html).
163+
106164
Now that you've got the tools down, let's actually learn more about the Rust
107165
language itself. These are the basics that will serve you well through the rest
108-
of your time with Rust.
166+
of your time with Rust.

branches/tmp/src/etc/htmldocck.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@
9696
highlights for example. If you want to simply check the presence of
9797
given node or attribute, use an empty string (`""`) as a `PATTERN`.
9898
99+
* `@count PATH XPATH COUNT' checks for the occurrence of given XPath
100+
in the given file. The number of occurrences must match the given count.
101+
99102
All conditions can be negated with `!`. `@!has foo/type.NoSuch.html`
100103
checks if the given file does not exist, for example.
101104
@@ -333,6 +336,11 @@ def check_tree_text(tree, path, pat, regexp):
333336
return ret
334337

335338

339+
def check_tree_count(tree, path, count):
340+
path = normalize_xpath(path)
341+
return len(tree.findall(path)) == count
342+
343+
336344
def check(target, commands):
337345
cache = CachedFiles(target)
338346
for c in commands:
@@ -360,6 +368,13 @@ def check(target, commands):
360368
raise RuntimeError('Invalid number of @{} arguments \
361369
at line {}'.format(c.cmd, c.lineno))
362370

371+
elif c.cmd == 'count': # count test
372+
if len(c.args) == 3: # @count <path> <pat> <count> = count test
373+
ret = check_tree_count(cache.get_tree(c.args[0]), c.args[1], int(c.args[2]))
374+
else:
375+
raise RuntimeError('Invalid number of @{} arguments \
376+
at line {}'.format(c.cmd, c.lineno))
377+
363378
elif c.cmd == 'valid-html':
364379
raise RuntimeError('Unimplemented @valid-html at line {}'.format(c.lineno))
365380

branches/tmp/src/liballoc/arc.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,13 @@ pub struct Weak<T> {
139139
unsafe impl<T: Sync + Send> Send for Weak<T> { }
140140
unsafe impl<T: Sync + Send> Sync for Weak<T> { }
141141

142+
#[stable(feature = "rust1", since = "1.0.0")]
143+
impl<T: fmt::Debug> fmt::Debug for Weak<T> {
144+
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
145+
write!(f, "(Weak)")
146+
}
147+
}
148+
142149
struct ArcInner<T> {
143150
strong: atomic::AtomicUsize,
144151
weak: atomic::AtomicUsize,

branches/tmp/src/liballoc/heap.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ mod imp {
300300
libc::realloc(ptr as *mut libc::c_void, size as libc::size_t) as *mut u8
301301
} else {
302302
let new_ptr = allocate(size, align);
303-
ptr::copy_memory(new_ptr, ptr, cmp::min(size, old_size));
303+
ptr::copy(new_ptr, ptr, cmp::min(size, old_size));
304304
deallocate(ptr, old_size, align);
305305
new_ptr
306306
}

branches/tmp/src/libcollections/btree/node.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,7 +1085,7 @@ impl<K, V> Node<K, V> {
10851085
vals: RawItems::from_slice(self.vals()),
10861086
edges: RawItems::from_slice(self.edges()),
10871087

1088-
ptr: *self.keys as *mut u8,
1088+
ptr: Unique::new(*self.keys as *mut u8),
10891089
capacity: self.capacity(),
10901090
is_leaf: self.is_leaf()
10911091
},
@@ -1354,11 +1354,14 @@ struct MoveTraversalImpl<K, V> {
13541354
edges: RawItems<Node<K, V>>,
13551355

13561356
// For deallocation when we are done iterating.
1357-
ptr: *mut u8,
1357+
ptr: Unique<u8>,
13581358
capacity: usize,
13591359
is_leaf: bool
13601360
}
13611361

1362+
unsafe impl<K: Sync, V: Sync> Sync for MoveTraversalImpl<K, V> {}
1363+
unsafe impl<K: Send, V: Send> Send for MoveTraversalImpl<K, V> {}
1364+
13621365
impl<K, V> TraversalImpl for MoveTraversalImpl<K, V> {
13631366
type Item = (K, V);
13641367
type Edge = Node<K, V>;
@@ -1401,7 +1404,7 @@ impl<K, V> Drop for MoveTraversalImpl<K, V> {
14011404

14021405
let (alignment, size) =
14031406
calculate_allocation_generic::<K, V>(self.capacity, self.is_leaf);
1404-
unsafe { heap::deallocate(self.ptr, size, alignment) };
1407+
unsafe { heap::deallocate(*self.ptr, size, alignment) };
14051408
}
14061409
}
14071410

@@ -1425,12 +1428,12 @@ pub enum TraversalItem<K, V, E> {
14251428
/// A traversal over a node's entries and edges
14261429
pub type Traversal<'a, K, V> = AbsTraversal<ElemsAndEdges<Zip<slice::Iter<'a, K>,
14271430
slice::Iter<'a, V>>,
1428-
slice::Iter<'a, Node<K, V>>>>;
1431+
slice::Iter<'a, Node<K, V>>>>;
14291432

14301433
/// A mutable traversal over a node's entries and edges
14311434
pub type MutTraversal<'a, K, V> = AbsTraversal<ElemsAndEdges<Zip<slice::Iter<'a, K>,
14321435
slice::IterMut<'a, V>>,
1433-
slice::IterMut<'a, Node<K, V>>>>;
1436+
slice::IterMut<'a, Node<K, V>>>>;
14341437

14351438
/// An owning traversal over a node's entries and edges
14361439
pub type MoveTraversal<K, V> = AbsTraversal<MoveTraversalImpl<K, V>>;

branches/tmp/src/libcollections/linked_list.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ struct Rawlink<T> {
5151
}
5252

5353
impl<T> Copy for Rawlink<T> {}
54-
unsafe impl<T:'static+Send> Send for Rawlink<T> {}
55-
unsafe impl<T:Send+Sync> Sync for Rawlink<T> {}
54+
unsafe impl<T:Send> Send for Rawlink<T> {}
55+
unsafe impl<T:Sync> Sync for Rawlink<T> {}
5656

5757
struct Node<T> {
5858
next: Link<T>,

branches/tmp/src/libcollections/vec.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1755,6 +1755,9 @@ pub struct Drain<'a, T:'a> {
17551755
marker: PhantomData<&'a T>,
17561756
}
17571757

1758+
unsafe impl<'a, T: Sync> Sync for Drain<'a, T> {}
1759+
unsafe impl<'a, T: Send> Send for Drain<'a, T> {}
1760+
17581761
#[stable(feature = "rust1", since = "1.0.0")]
17591762
impl<'a, T> Iterator for Drain<'a, T> {
17601763
type Item = T;

branches/tmp/src/libcollections/vec_deque.rs

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ use core::cmp::Ordering;
2424
use core::default::Default;
2525
use core::fmt;
2626
use core::iter::{self, repeat, FromIterator, IntoIterator, RandomAccessIterator};
27-
use core::marker;
2827
use core::mem;
2928
use core::num::{Int, UnsignedInt};
3029
use core::ops::{Index, IndexMut};
@@ -59,12 +58,6 @@ pub struct VecDeque<T> {
5958
ptr: Unique<T>,
6059
}
6160

62-
#[stable(feature = "rust1", since = "1.0.0")]
63-
unsafe impl<T: Send> Send for VecDeque<T> {}
64-
65-
#[stable(feature = "rust1", since = "1.0.0")]
66-
unsafe impl<T: Sync> Sync for VecDeque<T> {}
67-
6861
#[stable(feature = "rust1", since = "1.0.0")]
6962
impl<T: Clone> Clone for VecDeque<T> {
7063
fn clone(&self) -> VecDeque<T> {
@@ -545,9 +538,7 @@ impl<T> VecDeque<T> {
545538
IterMut {
546539
tail: self.tail,
547540
head: self.head,
548-
cap: self.cap,
549-
ptr: *self.ptr,
550-
marker: marker::PhantomData,
541+
ring: unsafe { self.buffer_as_mut_slice() },
551542
}
552543
}
553544

@@ -1515,17 +1506,12 @@ impl<'a, T> RandomAccessIterator for Iter<'a, T> {
15151506
}
15161507
}
15171508

1518-
// FIXME This was implemented differently from Iter because of a problem
1519-
// with returning the mutable reference. I couldn't find a way to
1520-
// make the lifetime checker happy so, but there should be a way.
15211509
/// `VecDeque` mutable iterator.
15221510
#[stable(feature = "rust1", since = "1.0.0")]
15231511
pub struct IterMut<'a, T:'a> {
1524-
ptr: *mut T,
1512+
ring: &'a mut [T],
15251513
tail: usize,
15261514
head: usize,
1527-
cap: usize,
1528-
marker: marker::PhantomData<&'a mut T>,
15291515
}
15301516

15311517
#[stable(feature = "rust1", since = "1.0.0")]
@@ -1538,16 +1524,17 @@ impl<'a, T> Iterator for IterMut<'a, T> {
15381524
return None;
15391525
}
15401526
let tail = self.tail;
1541-
self.tail = wrap_index(self.tail + 1, self.cap);
1527+
self.tail = wrap_index(self.tail + 1, self.ring.len());
15421528

15431529
unsafe {
1544-
Some(&mut *self.ptr.offset(tail as isize))
1530+
let elem = self.ring.get_unchecked_mut(tail);
1531+
Some(&mut *(elem as *mut _))
15451532
}
15461533
}
15471534

15481535
#[inline]
15491536
fn size_hint(&self) -> (usize, Option<usize>) {
1550-
let len = count(self.tail, self.head, self.cap);
1537+
let len = count(self.tail, self.head, self.ring.len());
15511538
(len, Some(len))
15521539
}
15531540
}
@@ -1559,10 +1546,11 @@ impl<'a, T> DoubleEndedIterator for IterMut<'a, T> {
15591546
if self.tail == self.head {
15601547
return None;
15611548
}
1562-
self.head = wrap_index(self.head - 1, self.cap);
1549+
self.head = wrap_index(self.head - 1, self.ring.len());
15631550

15641551
unsafe {
1565-
Some(&mut *self.ptr.offset(self.head as isize))
1552+
let elem = self.ring.get_unchecked_mut(self.head);
1553+
Some(&mut *(elem as *mut _))
15661554
}
15671555
}
15681556
}

branches/tmp/src/libcore/fmt/mod.rs

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,7 @@ pub trait Write {
110110
/// traits.
111111
#[stable(feature = "rust1", since = "1.0.0")]
112112
pub struct Formatter<'a> {
113-
#[cfg(not(stage0))]
114113
flags: u32,
115-
#[cfg(stage0)]
116-
flags: usize,
117114
fill: char,
118115
align: rt::v1::Alignment,
119116
width: Option<usize>,
@@ -159,13 +156,6 @@ impl<'a> ArgumentV1<'a> {
159156
}
160157
}
161158

162-
#[cfg(stage0)]
163-
#[doc(hidden)]
164-
#[stable(feature = "rust1", since = "1.0.0")]
165-
pub fn from_uint(x: &uint) -> ArgumentV1 {
166-
ArgumentV1::new(x, ArgumentV1::show_usize)
167-
}
168-
#[cfg(not(stage0))]
169159
#[doc(hidden)]
170160
#[stable(feature = "rust1", since = "1.0.0")]
171161
pub fn from_usize(x: &usize) -> ArgumentV1 {
@@ -605,14 +595,9 @@ impl<'a> Formatter<'a> {
605595
write(self.buf, fmt)
606596
}
607597

608-
#[cfg(not(stage0))]
609598
/// Flags for formatting (packed version of rt::Flag)
610599
#[stable(feature = "rust1", since = "1.0.0")]
611600
pub fn flags(&self) -> u32 { self.flags }
612-
#[cfg(stage0)]
613-
/// Flags for formatting (packed version of rt::Flag)
614-
#[stable(feature = "rust1", since = "1.0.0")]
615-
pub fn flags(&self) -> usize { self.flags }
616601

617602
/// Character used as 'fill' whenever there is alignment
618603
#[unstable(feature = "core", reason = "method was just created")]

0 commit comments

Comments
 (0)