use deriving for DeepClone
This commit is contained in:
parent
a776d65b4d
commit
0629ef16e8
@ -21,24 +21,11 @@ Similar to a mutable option type, but friendlier.
|
||||
*/
|
||||
|
||||
#[mutable]
|
||||
#[deriving(Clone)]
|
||||
#[deriving(Clone, DeepClone, Eq)]
|
||||
pub struct Cell<T> {
|
||||
priv value: Option<T>
|
||||
}
|
||||
|
||||
impl<T: DeepClone> DeepClone for Cell<T> {
|
||||
fn deep_clone(&self) -> Cell<T> {
|
||||
Cell{value: self.value.deep_clone()}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T:cmp::Eq> cmp::Eq for Cell<T> {
|
||||
fn eq(&self, other: &Cell<T>) -> bool {
|
||||
(self.value) == (other.value)
|
||||
}
|
||||
fn ne(&self, other: &Cell<T>) -> bool { !self.eq(other) }
|
||||
}
|
||||
|
||||
/// Creates a new full cell with the given value.
|
||||
pub fn Cell<T>(value: T) -> Cell<T> {
|
||||
Cell { value: Some(value) }
|
||||
|
@ -54,21 +54,12 @@ use clone::DeepClone;
|
||||
#[cfg(test)] use str;
|
||||
|
||||
/// The option type
|
||||
#[deriving(Clone, Eq)]
|
||||
#[deriving(Clone, DeepClone, Eq)]
|
||||
pub enum Option<T> {
|
||||
None,
|
||||
Some(T),
|
||||
}
|
||||
|
||||
impl<T: DeepClone> DeepClone for Option<T> {
|
||||
fn deep_clone(&self) -> Option<T> {
|
||||
match *self {
|
||||
Some(ref x) => Some(x.deep_clone()),
|
||||
None => None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T:Ord> Ord for Option<T> {
|
||||
fn lt(&self, other: &Option<T>) -> bool {
|
||||
match (self, other) {
|
||||
|
Loading…
Reference in New Issue
Block a user