diff options
| author | Jorge Aparicio <japaricious@gmail.com> | 2014-12-31 15:45:13 -0500 |
|---|---|---|
| committer | Jorge Aparicio <japaricious@gmail.com> | 2015-01-03 16:29:19 -0500 |
| commit | 99017f82b6e41ed283199b88ddfc0990bb95d696 (patch) | |
| tree | 66cd460eb70ab440425b66bb81651820c1d58469 /src/libstd | |
| parent | 7095dd00702373dd612d61e191eb57fadce00751 (diff) | |
| download | rust-99017f82b6e41ed283199b88ddfc0990bb95d696.tar.gz rust-99017f82b6e41ed283199b88ddfc0990bb95d696.zip | |
use assoc types in binop traits
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/bitflags.rs | 16 | ||||
| -rw-r--r-- | src/libstd/collections/hash/set.rs | 16 | ||||
| -rw-r--r-- | src/libstd/num/mod.rs | 6 | ||||
| -rw-r--r-- | src/libstd/time/duration.rs | 16 |
4 files changed, 39 insertions, 15 deletions
diff --git a/src/libstd/bitflags.rs b/src/libstd/bitflags.rs index c07531d3f32..a9c74823dde 100644 --- a/src/libstd/bitflags.rs +++ b/src/libstd/bitflags.rs @@ -209,7 +209,9 @@ macro_rules! bitflags { } } - impl ::std::ops::BitOr<$BitFlags, $BitFlags> for $BitFlags { + impl ::std::ops::BitOr for $BitFlags { + type Output = $BitFlags; + /// Returns the union of the two sets of flags. #[inline] fn bitor(self, other: $BitFlags) -> $BitFlags { @@ -217,7 +219,9 @@ macro_rules! bitflags { } } - impl ::std::ops::BitXor<$BitFlags, $BitFlags> for $BitFlags { + impl ::std::ops::BitXor for $BitFlags { + type Output = $BitFlags; + /// Returns the left flags, but with all the right flags toggled. #[inline] fn bitxor(self, other: $BitFlags) -> $BitFlags { @@ -225,7 +229,9 @@ macro_rules! bitflags { } } - impl ::std::ops::BitAnd<$BitFlags, $BitFlags> for $BitFlags { + impl ::std::ops::BitAnd for $BitFlags { + type Output = $BitFlags; + /// Returns the intersection between the two sets of flags. #[inline] fn bitand(self, other: $BitFlags) -> $BitFlags { @@ -233,7 +239,9 @@ macro_rules! bitflags { } } - impl ::std::ops::Sub<$BitFlags, $BitFlags> for $BitFlags { + impl ::std::ops::Sub for $BitFlags { + type Output = $BitFlags; + /// Returns the set difference of the two sets of flags. #[inline] fn sub(self, other: $BitFlags) -> $BitFlags { diff --git a/src/libstd/collections/hash/set.rs b/src/libstd/collections/hash/set.rs index ea8298c48c8..4c6a74a78d5 100644 --- a/src/libstd/collections/hash/set.rs +++ b/src/libstd/collections/hash/set.rs @@ -630,7 +630,9 @@ impl<T: Eq + Hash<S>, S, H: Hasher<S> + Default> Default for HashSet<T, H> { #[stable] impl<'a, 'b, T: Eq + Hash<S> + Clone, S, H: Hasher<S> + Default> -BitOr<&'b HashSet<T, H>, HashSet<T, H>> for &'a HashSet<T, H> { +BitOr<&'b HashSet<T, H>> for &'a HashSet<T, H> { + type Output = HashSet<T, H>; + /// Returns the union of `self` and `rhs` as a new `HashSet<T, H>`. /// /// # Examples @@ -658,7 +660,9 @@ BitOr<&'b HashSet<T, H>, HashSet<T, H>> for &'a HashSet<T, H> { #[stable] impl<'a, 'b, T: Eq + Hash<S> + Clone, S, H: Hasher<S> + Default> -BitAnd<&'b HashSet<T, H>, HashSet<T, H>> for &'a HashSet<T, H> { +BitAnd<&'b HashSet<T, H>> for &'a HashSet<T, H> { + type Output = HashSet<T, H>; + /// Returns the intersection of `self` and `rhs` as a new `HashSet<T, H>`. /// /// # Examples @@ -686,7 +690,9 @@ BitAnd<&'b HashSet<T, H>, HashSet<T, H>> for &'a HashSet<T, H> { #[stable] impl<'a, 'b, T: Eq + Hash<S> + Clone, S, H: Hasher<S> + Default> -BitXor<&'b HashSet<T, H>, HashSet<T, H>> for &'a HashSet<T, H> { +BitXor<&'b HashSet<T, H>> for &'a HashSet<T, H> { + type Output = HashSet<T, H>; + /// Returns the symmetric difference of `self` and `rhs` as a new `HashSet<T, H>`. /// /// # Examples @@ -714,7 +720,9 @@ BitXor<&'b HashSet<T, H>, HashSet<T, H>> for &'a HashSet<T, H> { #[stable] impl<'a, 'b, T: Eq + Hash<S> + Clone, S, H: Hasher<S> + Default> -Sub<&'b HashSet<T, H>, HashSet<T, H>> for &'a HashSet<T, H> { +Sub<&'b HashSet<T, H>> for &'a HashSet<T, H> { + type Output = HashSet<T, H>; + /// Returns the difference of `self` and `rhs` as a new `HashSet<T, H>`. /// /// # Examples diff --git a/src/libstd/num/mod.rs b/src/libstd/num/mod.rs index 01aa21c692b..007d89a942d 100644 --- a/src/libstd/num/mod.rs +++ b/src/libstd/num/mod.rs @@ -127,9 +127,9 @@ pub fn abs_sub<T: FloatMath>(x: T, y: T) -> T { #[cfg(test)] pub fn test_num<T>(ten: T, two: T) where T: PartialEq + NumCast - + Add<T, T> + Sub<T, T> - + Mul<T, T> + Div<T, T> - + Rem<T, T> + Show + + Add<Output=T> + Sub<Output=T> + + Mul<Output=T> + Div<Output=T> + + Rem<Output=T> + Show + Copy { assert_eq!(ten.add(two), cast(12i).unwrap()); diff --git a/src/libstd/time/duration.rs b/src/libstd/time/duration.rs index 51564b53976..1e148105cc6 100644 --- a/src/libstd/time/duration.rs +++ b/src/libstd/time/duration.rs @@ -273,7 +273,9 @@ impl Neg<Duration> for Duration { } } -impl Add<Duration, Duration> for Duration { +impl Add for Duration { + type Output = Duration; + fn add(self, rhs: Duration) -> Duration { let mut secs = self.secs + rhs.secs; let mut nanos = self.nanos + rhs.nanos; @@ -285,7 +287,9 @@ impl Add<Duration, Duration> for Duration { } } -impl Sub<Duration, Duration> for Duration { +impl Sub for Duration { + type Output = Duration; + fn sub(self, rhs: Duration) -> Duration { let mut secs = self.secs - rhs.secs; let mut nanos = self.nanos - rhs.nanos; @@ -297,7 +301,9 @@ impl Sub<Duration, Duration> for Duration { } } -impl Mul<i32, Duration> for Duration { +impl Mul<i32> for Duration { + type Output = Duration; + fn mul(self, rhs: i32) -> Duration { // Multiply nanoseconds as i64, because it cannot overflow that way. let total_nanos = self.nanos as i64 * rhs as i64; @@ -307,7 +313,9 @@ impl Mul<i32, Duration> for Duration { } } -impl Div<i32, Duration> for Duration { +impl Div<i32> for Duration { + type Output = Duration; + fn div(self, rhs: i32) -> Duration { let mut secs = self.secs / rhs as i64; let carry = self.secs - secs * rhs as i64; |
