use deriving for DeepClone
This commit is contained in:
parent
a776d65b4d
commit
0629ef16e8
2 changed files with 2 additions and 24 deletions
|
@ -21,24 +21,11 @@ Similar to a mutable option type, but friendlier.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#[mutable]
|
#[mutable]
|
||||||
#[deriving(Clone)]
|
#[deriving(Clone, DeepClone, Eq)]
|
||||||
pub struct Cell<T> {
|
pub struct Cell<T> {
|
||||||
priv value: Option<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.
|
/// Creates a new full cell with the given value.
|
||||||
pub fn Cell<T>(value: T) -> Cell<T> {
|
pub fn Cell<T>(value: T) -> Cell<T> {
|
||||||
Cell { value: Some(value) }
|
Cell { value: Some(value) }
|
||||||
|
|
|
@ -54,21 +54,12 @@ use clone::DeepClone;
|
||||||
#[cfg(test)] use str;
|
#[cfg(test)] use str;
|
||||||
|
|
||||||
/// The option type
|
/// The option type
|
||||||
#[deriving(Clone, Eq)]
|
#[deriving(Clone, DeepClone, Eq)]
|
||||||
pub enum Option<T> {
|
pub enum Option<T> {
|
||||||
None,
|
None,
|
||||||
Some(T),
|
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> {
|
impl<T:Ord> Ord for Option<T> {
|
||||||
fn lt(&self, other: &Option<T>) -> bool {
|
fn lt(&self, other: &Option<T>) -> bool {
|
||||||
match (self, other) {
|
match (self, other) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue