Commit graph

186 commits

Author SHA1 Message Date
Esteban Küber
be8787dfe5 Explicit help message for binop type missmatch
When trying to do a binary operation with missing implementation, for
example `1 + Some(2)`, provide an explicit help message:

```
note: no implementation for `{integer} + std::option::Option<{integer}>`
```

Use `rustc_on_unimplemented` for the suggestions. Move cfail test to ui.
2017-04-10 14:28:38 -07:00
Ulrik Sverdrup
6fda0fe891 cmp: Implement all PartialOrd methods for Reverse
When making a forwarding wrapper we must in general forward all methods,
so that we use the type's own `lt` for example instead of the default.

Example important case: f32's partial_cmp does several operations but
its lt is a primitive.
2017-03-30 17:29:19 +02:00
Corey Farwell
978c90654b Rollup merge of #40720 - mitsuhiko:feature/rev-key, r=BurntSushi
Added core::cmp::Reverse for sort_by_key reverse sorting

I'm not sure if this is the best way to go about proposing this feature but it's pretty useful. It allows you to use `sort_by_key` and return tuples where a single item is then reversed to how it normally sorts.

I quite miss something like this in Rust currently though I'm not sure if this is the best way to implement it.
2017-03-29 08:57:03 -04:00
Armin Ronacher
5d3695362f Updated tracking issue for cmp::Reverse 2017-03-29 09:06:52 +02:00
Armin Ronacher
7efbb69b99 Changed cmp::Reverse to unstable 2017-03-29 01:18:50 +02:00
Stjepan Glavina
d6da1d9b46 Various fixes to wording consistency in the docs 2017-03-22 17:19:52 +01:00
Armin Ronacher
d005d91778 Improved bounds for cmp::Reverse 2017-03-22 14:16:41 +01:00
Armin Ronacher
dabff15142 Fix the test for cmp::Reverse 2017-03-22 09:04:42 +01:00
Armin Ronacher
d7d4e670ed Added core::cmp::Reverse for sort_by_key reverse sorting 2017-03-22 00:01:37 +01:00
Aaron Turon
48890d4971 Stabilize ordering_chaining, closes #37053 2017-03-17 13:28:53 -07:00
Stjepan Glavina
8af30132f1 Inline functions Ordering::{then, then_with}
@jongiddy noticed bad performance due to the lack of inlining on `then`
and `then_with`. I confirmed that inlining really is the culprit by
creating a custom `then` function and repeating his benchmark on my
machine with and without the `#[inline]` attribute.

The numbers were exactly the same on my machine without the attribute.
With `#[inline]` I got the same performance as I did with manually
inlined implementation.
2017-03-14 14:01:01 +01:00
Alex Crichton
626e754473 Bump version, upgrade bootstrap
This commit updates the version number to 1.17.0 as we're not on that version of
the nightly compiler, and at the same time this updates src/stage0.txt to
bootstrap from freshly minted beta compiler and beta Cargo.
2017-02-03 13:25:46 -08:00
Simonas Kazlauskas
b0e55a83a8 Such large. Very 128. Much bits.
This commit introduces 128-bit integers. Stage 2 builds and produces a working compiler which
understands and supports 128-bit integers throughout.

The general strategy used is to have rustc_i128 module which provides aliases for iu128, equal to
iu64 in stage9 and iu128 later. Since nowhere in rustc we rely on large numbers being supported,
this strategy is good enough to get past the first bootstrap stages to end up with a fully working
128-bit capable compiler.

In order for this strategy to work, number of locations had to be changed to use associated
max_value/min_value instead of MAX/MIN constants as well as the min_value (or was it max_value?)
had to be changed to use xor instead of shift so both 64-bit and 128-bit based consteval works
(former not necessarily producing the right results in stage1).

This commit includes manual merge conflict resolution changes from a rebase by @est31.
2016-12-30 15:15:44 +01:00
Luc Street
2ec294b223 Fix typo in PartialOrd docs 2016-12-29 14:21:07 -08:00
Marcin Fatyga
655effedf2 Merge branch 'master' of https://github.com/rust-lang/rust
Conflicts:
	src/libcoretest/lib.rs
2016-11-01 15:26:22 +01:00
Tamir Duberstein
bef1911b15
tidy/features: fix checking of lang features
Removes the `STATUSES` static which duplicates truth from the pattern
match in `collect_lang_features`.

Fixes existing duplicates by renaming:
- never_type{,_impls} on `impl`s on `!`
- concat_idents{,_macro} on `macro_rules! concat_idents`

Fixes #37013.
2016-10-27 21:35:57 -04:00
Marcin Fatyga
4e2822c5c2 Rename ordering chaining functions. 2016-10-27 23:31:10 +02:00
Marcin Fatyga
634715a736 Actually fix doctests. 2016-10-22 20:43:28 +02:00
Marcin Fatyga
43a022660a Fix doctests 2016-10-16 20:24:20 +02:00
Marcin Fatyga
ca76d43dcb Fix comments 2016-10-10 18:54:37 +02:00
Marcin Fatyga
def0b4ebc8 Fix trailing whitespace. 2016-10-09 14:10:56 +02:00
Marcin Fatyga
d41c91c1fa Add or and or_else for ordering. 2016-10-09 12:01:17 +02:00
Guillaume Gomez
4e7338afa8 Add missing links on cmp module 2016-09-26 20:43:54 +02:00
Vadim Petrochenkov
62cb7510ac Improve Eq deriving 2016-09-10 22:37:06 +03:00
Fabian Zaiser
56edae2f42 Fix typo in PartialOrd docs 2016-08-31 13:50:58 +02:00
Jeffrey Seyfried
e2ad3be178 Use #[prelude_import] in libcore. 2016-08-24 22:12:23 +00:00
Brian Anderson
fce605e1f2 Remove old stage0 compatibility 2016-08-19 20:26:10 +00:00
Andrew Cann
fadabe08f5 Rename empty/bang to never
Split Ty::is_empty method into is_never and is_uninhabited
2016-08-13 21:37:09 +08:00
Andrew Cann
f0a8b6d43f Minor fixups based on @eddyb's feedback
Mainly, remove mk_empty() method and replace with tcx.types.empty
2016-08-13 21:37:09 +08:00
Andrew Cann
51c6ae25e2 implement std::cmp::* traits for ! 2016-08-13 21:37:09 +08:00
Carol (Nichols || Goulding)
1a7d3e1344 Complete PartialOrd's example so it passes make check-docs 2016-05-23 14:39:41 -04:00
Carol (Nichols || Goulding)
d81a999b54 Prefer ClassName over Self in example trait implementations 2016-05-23 13:14:15 -04:00
Carol (Nichols || Goulding)
daa9dcaac4 Use () when referring to functions 2016-05-23 13:06:23 -04:00
Carol (Nichols || Goulding)
9149992604 Add some newlines in some code examples 2016-05-23 13:04:05 -04:00
Carol (Nichols || Goulding)
497cbb6748 "non equal" => "not equal"; consistent with the surrounding text 2016-05-23 13:02:16 -04:00
Carol (Nichols || Goulding)
8b00a086e7 Add an explicit "How can I implement PartialOrd" doc section
Similar to the `Ord` examples but calling out that it can be defined
using `cmp` from `Ord` or using `partial_cmp` in a situation that
demands that.
2016-05-23 10:03:44 -04:00
Carol (Nichols || Goulding)
9efa445656 Add an explicit "How can I implement Ord" doc section
References:
- http://stackoverflow.com/q/29884402/51683
- http://stackoverflow.com/q/28387711/51683
2016-05-23 10:03:44 -04:00
Carol (Nichols || Goulding)
54d2ef0e8e Add an explicit "How can I implement Eq" doc section
Building on the example in PartialEq.
2016-05-23 10:03:44 -04:00
Carol (Nichols || Goulding)
e831c72a29 Add an explicit "How can I implement PartialEq"? doc section
Including an example of a custom implementation. I put this expanded
section after the `Derivable` section to encourage use of that first.
2016-05-23 10:03:44 -04:00
Carol (Nichols || Goulding)
bbfb6e762b derive explanation for PartialOrd should match that for Ord
I think these just got out of sync, but both use a lexicographic
ordering.

Relevant commits in the history of these explanations:
* 8b81f76 on 2015-06-30
* e22770b on 2016-02-09
2016-05-23 10:03:44 -04:00
Carol (Nichols || Goulding)
1e493fd979 Add explanations about what derived trait implementations do 2016-05-23 10:03:44 -04:00
Tobias Bucher
3df35a01e9 Implement Default for more types in the standard library
Also add `Hash` to `std::cmp::Ordering` and most possible traits to
`fmt::Error`.
2016-04-15 17:53:43 +02:00
Guillaume Gomez
3aac461d40 Add doc examples 2016-03-18 15:47:33 +01:00
Adam Perry
e22770beeb Clarifying behavior of #[derive(Ord, PartialOrd)] in doc comments.
Removing redundant statement about lexicographic ordering.
2016-02-09 08:01:28 -07:00
Andrea Canciani
2f4622a36f Remove unsafe code from core::cmp
Instead of transmuting, use a match; the compiler has learnt how to
optimize it.
2016-01-21 20:49:10 +01:00
Steve Klabnik
e4a0b48027 Make note about traits that can be derived
in their API docs

Fixes #29711
2015-11-16 18:50:40 -05:00
Kevin Butler
82784cb89d libcore: deny warnings in doctests 2015-11-12 05:16:08 +00:00
Vadim Petrochenkov
2ef07f0519 Remove stability annotations from trait impl items
Remove `stable` stability annotations from inherent impls
2015-11-06 00:13:46 +03:00
Steve Klabnik
3e9b993925 Clarify logic instead of using 'vice versa'
Fixes #28166
2015-09-30 13:24:28 -04:00
Andrea Canciani
bf9254a75e Reuse cmp in totally ordered types
Instead of manually defining it, `partial_cmp` can simply wrap the
result of `cmp` for totally ordered types.
2015-09-16 15:25:51 +02:00