Skip to content

Commit a2d91c2

Browse files
committed
---
yaml --- r: 142811 b: refs/heads/try2 c: 184fa42 h: refs/heads/master i: 142809: 855e6ae 142807: b42d2ed v: v3
1 parent a06def6 commit a2d91c2

Some content is hidden

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

77 files changed

+369
-736
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: 1ee54a86171d70f439b3cf77e566150b78251bc2
8+
refs/heads/try2: 184fa42d33ab53cc37f7fc315105ae7de3c70c9a
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: 0 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -205,104 +205,3 @@ println(fmt!("last: %?", it.next()));
205205
// the iterator is now fully consumed
206206
assert!(it.next().is_none());
207207
~~~
208-
209-
## Conversion
210-
211-
Iterators offer generic conversion to containers with the `collect` adaptor:
212-
213-
~~~
214-
let xs = [0, 1, 1, 2, 3, 5, 8];
215-
let ys = xs.rev_iter().skip(1).transform(|&x| x * 2).collect::<~[int]>();
216-
assert_eq!(ys, ~[10, 6, 4, 2, 2, 0]);
217-
~~~
218-
219-
The method requires a type hint for the container type, if the surrounding code
220-
does not provide sufficient information.
221-
222-
Containers can provide conversion from iterators through `collect` by
223-
implementing the `FromIterator` trait. For example, the implementation for
224-
vectors is as follows:
225-
226-
~~~
227-
impl<A, T: Iterator<A>> FromIterator<A, T> for ~[A] {
228-
pub fn from_iterator(iterator: &mut T) -> ~[A] {
229-
let (lower, _) = iterator.size_hint();
230-
let mut xs = with_capacity(lower);
231-
for iterator.advance |x| {
232-
xs.push(x);
233-
}
234-
xs
235-
}
236-
}
237-
~~~
238-
239-
### Size hints
240-
241-
The `Iterator` trait provides a `size_hint` default method, returning a lower
242-
bound and optionally on upper bound on the length of the iterator:
243-
244-
~~~
245-
fn size_hint(&self) -> (uint, Option<uint>) { (0, None) }
246-
~~~
247-
248-
The vector implementation of `FromIterator` from above uses the lower bound
249-
to pre-allocate enough space to hold the minimum number of elements the
250-
iterator will yield.
251-
252-
The default implementation is always correct, but it should be overridden if
253-
the iterator can provide better information.
254-
255-
The `ZeroStream` from earlier can provide an exact lower and upper bound:
256-
257-
~~~
258-
/// A stream of N zeroes
259-
struct ZeroStream {
260-
priv remaining: uint
261-
}
262-
263-
impl ZeroStream {
264-
fn new(n: uint) -> ZeroStream {
265-
ZeroStream { remaining: n }
266-
}
267-
268-
fn size_hint(&self) -> (uint, Option<uint>) {
269-
(self.remaining, Some(self.remaining))
270-
}
271-
}
272-
273-
impl Iterator<int> for ZeroStream {
274-
fn next(&mut self) -> Option<int> {
275-
if self.remaining == 0 {
276-
None
277-
} else {
278-
self.remaining -= 1;
279-
Some(0)
280-
}
281-
}
282-
}
283-
~~~
284-
285-
## Double-ended iterators
286-
287-
The `DoubleEndedIterator` trait represents an iterator able to yield elements
288-
from either end of a range. It inherits from the `Iterator` trait and extends
289-
it with the `next_back` function.
290-
291-
A `DoubleEndedIterator` can be flipped with the `invert` adaptor, returning
292-
another `DoubleEndedIterator` with `next` and `next_back` exchanged.
293-
294-
~~~
295-
let xs = [1, 2, 3, 4, 5, 6];
296-
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)`
300-
301-
// prints `5`, `4` and `3`
302-
for it.invert().advance |&x| {
303-
println(fmt!("%?", x))
304-
}
305-
~~~
306-
307-
The `rev_iter` and `mut_rev_iter` methods on vectors just return an inverted
308-
version of the standard immutable and mutable vector iterators.

branches/try2/src/etc/vim/ftplugin/rust.vim

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,11 @@ if exists("g:ftplugin_rust_source_path")
3333
let &l:path=g:ftplugin_rust_source_path . ',' . &l:path
3434
endif
3535

36-
let b:undo_ftplugin = "setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd<"
36+
if exists("g:loaded_delimitMate")
37+
if exists("b:delimitMate_excluded_regions")
38+
let b:rust_original_delimitMate_excluded_regions = b:delimitMate_excluded_regions
39+
endif
40+
let b:delimitMate_excluded_regions = delimitMate#Get("excluded_regions") . ',rustLifetimeCandidate,rustGenericLifetimeCandidate'
41+
endif
42+
43+
let b:undo_ftplugin = "setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd< | if exists('b:rust_original_delimitMate_excluded_regions') | let b:delimitMate_excluded_regions = b:rust_original_delimitMate_excluded_regions | unlet b:rust_original_delimitMate_excluded_regions | else | unlet b:delimitMate_excluded_regions | endif"

branches/try2/src/etc/vim/syntax/rust.vim

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,11 @@ syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\(f\|f32\|f64\)\>
113113
syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\%([eE][+-]\=[0-9_]\+\)\>"
114114
syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\%([eE][+-]\=[0-9_]\+\)\(f\|f32\|f64\)\>"
115115

116+
" For the benefit of delimitMate
117+
syn region rustLifetimeCandidate display start=/&'\%(\([^'\\]\|\\\(['nrt\\\"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'\)\@!/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustLifetime
118+
syn region rustGenericRegion display start=/<\%('\|[^[cntrl:][:space:][:punct:]]\)\@=')\S\@=/ end=/>/ contains=rustGenericLifetimeCandidate
119+
syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustLifetime
120+
116121
"rustLifetime must appear before rustCharacter, or chars will get the lifetime highlighting
117122
syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*"
118123
syn match rustCharacter "'\([^'\\]\|\\\(['nrt\\\"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'"

0 commit comments

Comments
 (0)