Skip to content

Commit 3eee7a9

Browse files
committed
Implement assignment operators for OrderedFloat
1 parent 2f0370f commit 3eee7a9

File tree

2 files changed

+35
-7
lines changed

2 files changed

+35
-7
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ordered-float"
3-
version = "2.3.0"
3+
version = "2.4.0"
44
authors = ["Jonathan Reem <jonathan.reem@gmail.com>", "Matt Brubeck <mbrubeck@limpet.net>"]
55
license = "MIT"
66
description = "Wrappers for total ordering on floats"

src/lib.rs

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ impl<T: Float> DerefMut for OrderedFloat<T> {
210210
impl<T: Float> Eq for OrderedFloat<T> {}
211211

212212
macro_rules! impl_ordered_float_binop {
213-
($imp:ident, $method:ident) => {
213+
($imp:ident, $method:ident, $assign_imp:ident, $assign_method:ident) => {
214214
impl<T: $imp> $imp for OrderedFloat<T> {
215215
type Output = OrderedFloat<T::Output>;
216216

@@ -291,14 +291,42 @@ macro_rules! impl_ordered_float_binop {
291291
OrderedFloat((self.0).$method(&other.0))
292292
}
293293
}
294+
295+
impl<T: $assign_imp> $assign_imp<T> for OrderedFloat<T> {
296+
#[inline]
297+
fn $assign_method(&mut self, other: T) {
298+
(self.0).$assign_method(other);
299+
}
300+
}
301+
302+
impl<'a, T: $assign_imp<&'a T>> $assign_imp<&'a T> for OrderedFloat<T> {
303+
#[inline]
304+
fn $assign_method(&mut self, other: &'a T) {
305+
(self.0).$assign_method(other);
306+
}
307+
}
308+
309+
impl<T: $assign_imp> $assign_imp for OrderedFloat<T> {
310+
#[inline]
311+
fn $assign_method(&mut self, other: Self) {
312+
(self.0).$assign_method(other.0);
313+
}
314+
}
315+
316+
impl<'a, T: $assign_imp<&'a T>> $assign_imp<&'a Self> for OrderedFloat<T> {
317+
#[inline]
318+
fn $assign_method(&mut self, other: &'a Self) {
319+
(self.0).$assign_method(&other.0);
320+
}
321+
}
294322
}
295323
}
296324

297-
impl_ordered_float_binop!{Add, add}
298-
impl_ordered_float_binop!{Sub, sub}
299-
impl_ordered_float_binop!{Mul, mul}
300-
impl_ordered_float_binop!{Div, div}
301-
impl_ordered_float_binop!{Rem, rem}
325+
impl_ordered_float_binop!{Add, add, AddAssign, add_assign}
326+
impl_ordered_float_binop!{Sub, sub, SubAssign, sub_assign}
327+
impl_ordered_float_binop!{Mul, mul, MulAssign, mul_assign}
328+
impl_ordered_float_binop!{Div, div, DivAssign, div_assign}
329+
impl_ordered_float_binop!{Rem, rem, RemAssign, rem_assign}
302330

303331
impl<T: Bounded> Bounded for OrderedFloat<T> {
304332
#[inline]

0 commit comments

Comments
 (0)