bors
eb0e2f45ec
auto merge of #6591 : bjz/rust/tuple-elements, r=thestinger
...
This commit implements element getters for tuples with an arity of 2 to 12. The getters return references to the elements, so no copying occurs. The traits are re-exported in `core::prelude` so you can use them from regular Rust code.
Here is an example of one of the getters in use:
~~~rust
assert_eq!((2, "hi", 75.0).n1(), &"hi");
~~~
2013-05-18 03:13:28 -07:00
Brendan Zabarauskas
b6038b7633
Return a reference to the tuple elements instead of copying
2013-05-18 20:05:40 +10:00
Olivier Saut
4b13895c2f
Remove trailing whitespaces
2013-05-18 11:53:51 +02:00
Brendan Zabarauskas
5242464d54
Merge trait and impl macros by using an inner module
2013-05-18 19:43:14 +10:00
Brendan Zabarauskas
c1eb539e12
Use assert_eq! instead of assert!
2013-05-18 19:10:49 +10:00
Brendan Zabarauskas
96cb0dc8a0
use n{0..11} instead of _{0..12} for accessor method names
2013-05-18 19:10:12 +10:00
Brendan Zabarauskas
6742f91192
Create tuple element accessor traits
2013-05-18 18:59:16 +10:00
Daniel Micay
d953a5ce43
replace old_iter::repeat with the Times trait
2013-05-18 04:57:21 -04:00
Daniel Micay
fc656262a9
iterator: use advance to implement FilterMapIterator
2013-05-18 04:48:22 -04:00
Daniel Micay
073225572a
iterator: reword docstring
2013-05-18 04:44:44 -04:00
Daniel Micay
883d583faa
iterator: reuse iter::to_vec, and use &mut self
2013-05-18 04:37:48 -04:00
Daniel Micay
ea8a55b821
iterator: make nth and last return Option
...
There isn't a way to take the length of any iterator, so failing on a
zero length would make these much less useful.
2013-05-18 04:35:58 -04:00
Daniel Micay
a9c465ce1f
iterator: remove first
...
it's the same as `next.unwrap()`, but there's no way to check the
length of an iterator so this isn't a good pattern
2013-05-18 04:35:48 -04:00
bors
e91daaa8a9
auto merge of #6586 : bjz/rust/formatting-and-conditionals, r=thestinger
2013-05-18 00:34:24 -07:00
Brendan Zabarauskas
ad6ee5f4e5
Use four-space indentation, add trailing commas, and remove unnecessary uses of the return keyword
2013-05-18 17:29:19 +10:00
Brendan Zabarauskas
60ea6d6957
Convert various inner doc-comments to outer doc-comments
2013-05-18 17:29:14 +10:00
Brendan Zabarauskas
728fe775a2
Use pattern-matching instead of conditionals where appropriate to improve code clarity
2013-05-18 17:29:12 +10:00
Brendan Zabarauskas
a10974da2d
Use cond! macro where appropriate
2013-05-18 17:29:07 +10:00
bors
ac74bbec93
auto merge of #6582 : catamorphism/rust/cleanup, r=catamorphism
2013-05-17 21:49:25 -07:00
Tim Chevalier
f21fb3aff5
rustc: Cleaning up bad copies and other XXXes
2013-05-17 21:41:54 -07:00
bors
799d9fa32b
auto merge of #6560 : gifnksm/rust/iterator-utils, r=thestinger
...
This pull request adds following methods and traits.
```rust
pub trait IteratorUtil {
(snip)
fn filter_map<'r, B>(self, f: &'r fn(A) -> Option<B>) -> FilterMapIterator<'r, A, B, Self>;
(snip)
fn to_vec(self) -> ~[A];
fn nth(&mut self, n: uint) -> A;
fn first(&mut self) -> A;
fn last(&mut self) -> A;
fn fold<B>(&mut self, start: B, f: &fn(B, A) -> B) -> B;
fn count(&mut self) -> uint;
fn all(&mut self, f: &fn(&A) -> bool) -> bool;
fn any(&mut self, f: &fn(&A) -> bool) -> bool;
}
pub trait AdditiveIterator<A> {
fn sum(&mut self) -> A;
}
pub trait MultiplicativeIterator<A> {
fn product(&mut self) -> A;
}
pub trait OrdIterator<A> {
fn max(&mut self) -> Option<A>;
fn min(&mut self) -> Option<A>;
}
```
2013-05-17 19:58:24 -07:00
bors
d68c0279ea
auto merge of #6249 : crabtw/rust/arm, r=brson
...
It uses the private field of TCB head to store stack limit. I tested on my Raspberry PI. A simple hello world program ran without any problem. However, for a more complex program, it segfaulted as #6231 .
2013-05-17 18:19:27 -07:00
Niko Matsakis
5ca383b777
Distinguish tuple elements by index in mem_categorization. Fixes #5362 .
2013-05-17 21:12:50 -04:00
Brian Anderson
633af4c8ab
Whitespace
2013-05-17 18:11:47 -07:00
Brian Anderson
df9e41278e
core: Wire up stream
to newsched
2013-05-17 17:54:32 -07:00
Brian Anderson
26becc308e
core: Wire up oneshot pipes to newsched
2013-05-17 17:54:27 -07:00
Brian Anderson
f5987b03b8
core::rt: implement oneshot
and stream
.
2013-05-17 17:54:18 -07:00
Brian Anderson
03a8e59615
Merge remote-tracking branch 'brson/io' into incoming
2013-05-17 17:53:50 -07:00
bors
2d28d64542
auto merge of #6569 : Kimundi/rust/ext-bytes, r=erickt
...
Also snug in some cosmetic changes in num.rs that aren't really important enough for an separate pr.
2013-05-17 15:52:25 -07:00
Marvin Löbel
7a2afb7288
Made bytes!() accept a list of string, integer or char literals
2013-05-18 00:26:04 +02:00
Marvin Löbel
916942d006
Some cosmetic changes to num.rs
2013-05-18 00:25:03 +02:00
bors
c34c5051a5
auto merge of #6566 : brson/rust/libuv, r=brson
...
This cherry-picks a fix from upstream. It also includes another libuv patch that we were running but was accidentally removed in a submodule update.
2013-05-17 14:31:25 -07:00
Brian Anderson
b9f77bcd27
Upgrade libuv to fix mac deadlock. #6526
2013-05-17 14:27:25 -07:00
Olivier Saut
3e41639a5e
Add a small section on futures to the tutorial
2013-05-17 23:11:49 +02:00
Olivier Saut
7dc466f91f
Correct the example given for a future, add punctuation where necessary
2013-05-17 23:11:18 +02:00
bors
ff081980e7
auto merge of #6561 : huonw/rust/rustc-u-int-limit-lint, r=nikomatsakis
2013-05-17 09:10:28 -07:00
Huon Wilson
aa179cb0f1
rustc: relax limits on (u)int type limit lint. Fixes #6130 .
2013-05-18 01:49:36 +10:00
gifnksm
3122d8027b
libcore: Add IteratorUtil::all
, any
method
2013-05-18 00:24:43 +09:00
gifnksm
54fbac505e
libcore: Add AdditiveIterator
, MultiplicativeIterator
, OrdIterator
2013-05-18 00:18:09 +09:00
gifnksm
b4cea351ba
libcore: Add IteratorUtil::fold
, count
2013-05-18 00:17:56 +09:00
gifnksm
02945f1cb1
libcore: Add IteratoUtil::nth
, first
, last
method
2013-05-17 23:49:11 +09:00
gifnksm
9ffbe69234
libcore: Add IteratorUtil::filter_map
method
2013-05-17 23:00:48 +09:00
gifnksm
f7e58ebe84
libcore: Add IteratorUtil::to_vec()
method
2013-05-17 22:54:32 +09:00
bors
290a2ebab6
auto merge of #6442 : sstewartgallus/rust/incoming, r=pcwalton
...
Added unit test to prevent similar mistakes from happening again. The
previous method was wrong because it dereferenced a pointer to a void type to
match on the result. No self pointer was needed, and the correct method
signature took the self value by value.
I feel silly that I made this mistake in https://github.com/mozilla/rust/pull/6348
2013-05-17 06:46:32 -07:00
bors
dbbc244f73
auto merge of #6534 : brson/rust/intrinsic-docs, r=bstrie
2013-05-17 05:22:32 -07:00
bors
a3d31f4b80
auto merge of #6550 : Aatch/rust/atomic-load, r=thestinger
...
This closes #6548
The change makes it match the standard Load signature.
2013-05-17 00:55:29 -07:00
bors
8badea49b0
auto merge of #6549 : bjz/rust/numeric-traits, r=thestinger
...
As discussed on issue #4819 . This is a naive implementation, trusting LLVM to do the relevant optimizations. In the future this could be implemented more efficiently, but it's a start.
2013-05-16 23:43:30 -07:00
bors
c69f8ea91a
auto merge of #6093 : alexcrichton/rust/issue-2647, r=thestinger
...
Closes #2647
This way it's much easier to add lints throughout compilation correctly, and
functions on impls can alter the way lints are emitted. This involved pretty much rewriting how lints are emitted. Beforehand, only items could alter the lint settings, so whenever a lint was added it had to be associated with whatever item id it was coming from. I removed this (possibly questionably) in favor of just specifying a span and a message when adding a lint. When lint checking comes around, it looks at all the lints and sees which node with attributes best encloses it and uses that level of linting. This means that all consumer code doesn't have to deal with what item things came from (especially because functions on impls aren't items). More details of this can be found in the code (and comments).
As a bonus, I managed to greatly simplify emission of lints in resolve.rs about unused imports. Now instead of it manually tracking what the lint level is, it's all moved over into the lint module (as is to be expected).
2013-05-16 22:25:39 -07:00
Alex Crichton
4d44abd52a
Change lints to indicate exactly where the level was set
2013-05-17 00:54:03 -04:00
Alex Crichton
1daaf785ab
Optimize lint passes to perform far fewer allocations
...
Achieves ~3x speedup on lint passes for libcore
2013-05-17 00:49:17 -04:00