Stabilize cmp
This patch marks `PartialEq`, `Eq`, `PartialOrd`, and `Ord` as `#[stable]`, as well as the majorify of manual implementaitons of these traits. The traits match the [reform RFC](https://github.com/rust-lang/rfcs/pull/439). Along the way, two changes are made: * The recently-added type parameters for `Ord` and `Eq` are removed. These were mistakenly added while adding them to `PartialOrd` and `PartialEq`, but they don't make sense given the laws that are required for (and use cases for) `Ord` and `Eq`. * More explicit laws are added for `PartialEq` and `PartialOrd`, connecting them to their associated mathematical concepts. In the future, many of the impls should be generalized; see since generalizing later is not a breaking change. [breaking-change]
This commit is contained in:
parent
84f5ad8679
commit
b94bcbf56e
20 changed files with 182 additions and 83 deletions
|
@ -458,7 +458,7 @@ impl<T: Sync + Send> Drop for Weak<T> {
|
|||
}
|
||||
}
|
||||
|
||||
#[unstable = "waiting on PartialEq"]
|
||||
#[stable]
|
||||
impl<T: PartialEq> PartialEq for Arc<T> {
|
||||
/// Equality for two `Arc<T>`s.
|
||||
///
|
||||
|
@ -490,7 +490,7 @@ impl<T: PartialEq> PartialEq for Arc<T> {
|
|||
/// ```
|
||||
fn ne(&self, other: &Arc<T>) -> bool { *(*self) != *(*other) }
|
||||
}
|
||||
#[unstable = "waiting on PartialOrd"]
|
||||
#[stable]
|
||||
impl<T: PartialOrd> PartialOrd for Arc<T> {
|
||||
/// Partial comparison for two `Arc<T>`s.
|
||||
///
|
||||
|
@ -569,11 +569,11 @@ impl<T: PartialOrd> PartialOrd for Arc<T> {
|
|||
/// ```
|
||||
fn ge(&self, other: &Arc<T>) -> bool { *(*self) >= *(*other) }
|
||||
}
|
||||
#[unstable = "waiting on Ord"]
|
||||
#[stable]
|
||||
impl<T: Ord> Ord for Arc<T> {
|
||||
fn cmp(&self, other: &Arc<T>) -> Ordering { (**self).cmp(&**other) }
|
||||
}
|
||||
#[unstable = "waiting on Eq"]
|
||||
#[stable]
|
||||
impl<T: Eq> Eq for Arc<T> {}
|
||||
|
||||
impl<T: fmt::Show> fmt::Show for Arc<T> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue