Commit Graph

18124 Commits

Author SHA1 Message Date
Brendan Zabarauskas
db453ec0e5 Replace Tuple{2..12} trait with CloneableTuple{2..12} and ImmutableTuple{2..12}
Make n{0..11} methods return cloned values, and create n{0..12}_ref methods for returning references
2013-05-19 02:19:16 +10:00
Brendan Zabarauskas
ee4d11f37e Use match instead of intermediate variable 2013-05-19 02:19:16 +10:00
Brendan Zabarauskas
ce1e211eeb Adapt the getter macro to implement Clone, Eq and Ord for n-ary tuples 2013-05-19 02:19:16 +10:00
bors
3a323c1b2d auto merge of #6565 : osaut/rust/futures, r=thestinger
* The example given in future.rs was corrected.

* I have added a small section describing futures in tutorial on tasks. It is far from being complete as I am stil learning !

(This is an updated version of PR 6537).
2013-05-18 04:07:27 -07:00
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
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
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
Alex Crichton
030c666cc1 Re-implement lint with less emphasis on item ids
This way it's much easier to add lints throughout compilation correctly, and
functions on impls can alter the way lints are emitted.
2013-05-17 00:49:16 -04:00
bors
918bfa710c auto merge of #6546 : cmr/rust/warning, r=thestinger 2013-05-16 21:19:38 -07:00
bors
77c98f0815 auto merge of #6523 : cmr/rust/faster_each_permutation, r=luqmana
Closes #5127
2013-05-16 20:04:41 -07:00
Corey Richardson
af54d58891 Update to new for-loop protocol 2013-05-16 22:57:49 -04:00
James Miller
a289dcd187 Fix AtomicLoad builder code 2013-05-17 14:48:24 +12:00
Brendan Zabarauskas
5696081781 Implement sin_cos method for float, f64 and f32 2013-05-17 12:30:02 +10:00
Corey Richardson
c67a85ada1 Remove each_permutation_ref 2013-05-16 22:05:05 -04:00
bors
09bf401f1d auto merge of #6544 : thestinger/rust/new_iter, r=nikomatsakis 2013-05-16 18:58:39 -07:00