diff options
| author | Simon Sapin <simon.sapin@exyr.org> | 2015-05-24 10:38:59 +0200 |
|---|---|---|
| committer | Simon Sapin <simon.sapin@exyr.org> | 2015-05-24 10:38:59 +0200 |
| commit | bbf8ba7c2351caba1b585346e5709f8eb476f169 (patch) | |
| tree | 86db90d256b1ecd5d413e71c7d658347318dc082 | |
| parent | 0fc0476e6ae2bcc5cce75d78548cf037b6692a97 (diff) | |
| download | rust-bbf8ba7c2351caba1b585346e5709f8eb476f169.tar.gz rust-bbf8ba7c2351caba1b585346e5709f8eb476f169.zip | |
Implement Eq for Cell and RefCell.
`core::cell::Cell<T>` and `core::cell::RefCell<T>` currently implement `PartialEq` when `T` does, and just defer to comparing `T` values. There is no reason the same shouldn’t apply to `Eq`. This enables `#[derive(Eq, PartialEq)]` on e.g. structs that have a `RefCell` field.
| -rw-r--r-- | src/libcore/cell.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libcore/cell.rs b/src/libcore/cell.rs index 45a80122104..8f531de2611 100644 --- a/src/libcore/cell.rs +++ b/src/libcore/cell.rs @@ -143,7 +143,7 @@ #![stable(feature = "rust1", since = "1.0.0")] use clone::Clone; -use cmp::PartialEq; +use cmp::{PartialEq, Eq}; use default::Default; use marker::{Copy, Send, Sync, Sized}; use ops::{Deref, DerefMut, Drop}; @@ -263,6 +263,9 @@ impl<T:PartialEq + Copy> PartialEq for Cell<T> { } } +#[stable(feature = "cell_eq", since = "1.2.0")] +impl<T:Eq + Copy> Eq for Cell<T> {} + /// A mutable memory location with dynamically checked borrow rules /// /// See the [module-level documentation](index.html) for more. @@ -273,7 +276,7 @@ pub struct RefCell<T: ?Sized> { } /// An enumeration of values returned from the `state` method on a `RefCell<T>`. -#[derive(Copy, Clone, PartialEq, Debug)] +#[derive(Copy, Clone, PartialEq, Eq, Debug)] #[unstable(feature = "std_misc")] pub enum BorrowState { /// The cell is currently being read, there is at least one active `borrow`. @@ -479,6 +482,9 @@ impl<T: ?Sized + PartialEq> PartialEq for RefCell<T> { } } +#[stable(feature = "cell_eq", since = "1.2.0")] +impl<T: ?Sized + Eq> Eq for RefCell<T> {} + struct BorrowRef<'b> { _borrow: &'b Cell<BorrowFlag>, } |
