diff --git a/src/bn/mod.rs b/src/bn/mod.rs index 0bc79a8f..ead3093b 100644 --- a/src/bn/mod.rs +++ b/src/bn/mod.rs @@ -409,43 +409,57 @@ pub mod unchecked { use ffi; use super::{BigNum}; - impl<'a> Add<&'a BigNum, BigNum> for &'a BigNum { + impl<'a> Add<&'a BigNum> for &'a BigNum { + type Output = BigNum; + fn add(self, oth: &'a BigNum) -> BigNum { self.checked_add(oth).unwrap() } } - impl<'a> Sub<&'a BigNum, BigNum> for &'a BigNum { + impl<'a> Sub<&'a BigNum> for &'a BigNum { + type Output = BigNum; + fn sub(self, oth: &'a BigNum) -> BigNum { self.checked_sub(oth).unwrap() } } - impl<'a> Mul<&'a BigNum, BigNum> for &'a BigNum { + impl<'a> Mul<&'a BigNum> for &'a BigNum { + type Output = BigNum; + fn mul(self, oth: &'a BigNum) -> BigNum { self.checked_mul(oth).unwrap() } } - impl<'a> Div<&'a BigNum, BigNum> for &'a BigNum { + impl<'a> Div<&'a BigNum> for &'a BigNum { + type Output = BigNum; + fn div(self, oth: &'a BigNum) -> BigNum { self.checked_div(oth).unwrap() } } - impl<'a> Rem<&'a BigNum, BigNum> for &'a BigNum { + impl<'a> Rem<&'a BigNum> for &'a BigNum { + type Output = BigNum; + fn rem(self, oth: &'a BigNum) -> BigNum { self.checked_mod(oth).unwrap() } } - impl<'a> Shl for &'a BigNum { + impl<'a> Shl for &'a BigNum { + type Output = BigNum; + fn shl(self, n: i32) -> BigNum { self.checked_shl(&n).unwrap() } } - impl<'a> Shr for &'a BigNum { + impl<'a> Shr for &'a BigNum { + type Output = BigNum; + fn shr(self, n: i32) -> BigNum { self.checked_shr(&n).unwrap() } @@ -464,7 +478,9 @@ pub mod unchecked { } } - impl Neg for BigNum { + impl Neg for BigNum { + type Output = BigNum; + fn neg(self) -> BigNum { let mut n = self.clone(); n.negate(); diff --git a/src/lib.rs b/src/lib.rs index c89010ba..88a848e4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,4 @@ -#![feature(macro_rules, unsafe_destructor, globs)] +#![feature(macro_rules, unsafe_destructor, globs, associated_types, default_type_params, old_orphan_check)] #![crate_name="openssl"] #![crate_type="rlib"] #![crate_type="dylib"]