]> git.lizzy.rs Git - rust.git/commitdiff
option: rm implementation of Add
authorDaniel Micay <danielmicay@gmail.com>
Mon, 26 Aug 2013 22:04:17 +0000 (18:04 -0400)
committerDaniel Micay <danielmicay@gmail.com>
Tue, 27 Aug 2013 17:18:57 +0000 (13:18 -0400)
Closes #6002

There is consensus that the current implementation should be changed or
removed, so removing it seems like the right decision for now.

src/libstd/option.rs
src/test/run-pass/option_addition.rs [deleted file]

index 34c47d9f61ecdefb86dfb7b031abedf2c12165be..f99a595f2eb866eea22d7a1cab787e37182379b5 100644 (file)
@@ -43,7 +43,6 @@
 
 use clone::Clone;
 use cmp::{Eq,Ord};
-use ops::Add;
 use util;
 use num::Zero;
 use iterator;
@@ -77,18 +76,6 @@ fn gt(&self, other: &Option<T>) -> bool {
     }
 }
 
-impl<T: Add<T, T>> Add<Option<T>, Option<T>> for Option<T> {
-    #[inline]
-    fn add(&self, other: &Option<T>) -> Option<T> {
-        match (&*self, &*other) {
-            (&None, &None) => None,
-            (_, &None) => None,
-            (&None, _) => None,
-            (&Some(ref lhs), &Some(ref rhs)) => Some(*lhs + *rhs)
-        }
-    }
-}
-
 // FIXME: #8242 implementing manually because deriving doesn't work for some reason
 impl<T: ToStr> ToStr for Option<T> {
     fn to_str(&self) -> ~str {
diff --git a/src/test/run-pass/option_addition.rs b/src/test/run-pass/option_addition.rs
deleted file mode 100644 (file)
index 8af1731..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-pub fn main() {
-    let foo: int = 1;
-    let bar: int = 2;
-    let foobar = foo + bar;
-
-    let nope = None::<int> + None::<int>;
-    let somefoo = Some(foo) + None::<int>;
-    let somebar = None::<int> + Some(bar);
-    let somefoobar = Some(foo) + Some(bar);
-
-    assert_eq!(nope, None::<int>);
-    assert_eq!(somefoo, None::<int>);
-    assert_eq!(somebar, None::<int>);
-    assert_eq!(foobar, somefoobar.unwrap());
-}