use clone::Clone;
use cmp::{Eq,Ord};
-use ops::Add;
use util;
use num::Zero;
use iterator;
}
}
-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 {
+++ /dev/null
-// 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());
-}