use core::ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Rem, RemAssign, Sub, SubAssign};
use crate::tuple::{_impl_tuple_assign_op, _impl_tuple_binary_op, _impl_tuple_unary_op};
_impl_tuple_unary_op!(Neg, neg, -);
_impl_tuple_binary_op!(Add, add, +);
_impl_tuple_binary_op!(Add<T>, add, +);
_impl_tuple_assign_op!(AddAssign, add_assign, +=);
_impl_tuple_assign_op!(AddAssign<T>, add_assign, +=);
_impl_tuple_binary_op!(Sub, sub, -);
_impl_tuple_binary_op!(Sub<T>, sub, -);
_impl_tuple_assign_op!(SubAssign, sub_assign, -=);
_impl_tuple_assign_op!(SubAssign<T>, sub_assign, -=);
_impl_tuple_binary_op!(Mul, mul, *);
_impl_tuple_binary_op!(Mul<T>, mul, *);
_impl_tuple_assign_op!(MulAssign, mul_assign, *=);
_impl_tuple_assign_op!(MulAssign<T>, mul_assign, *=);
_impl_tuple_binary_op!(Div, div, /);
_impl_tuple_binary_op!(Div<T>, div, /);
_impl_tuple_assign_op!(DivAssign, div_assign, /=);
_impl_tuple_assign_op!(DivAssign<T>, div_assign, /=);
_impl_tuple_binary_op!(Rem, rem, %);
_impl_tuple_binary_op!(Rem<T>, rem, %);
_impl_tuple_assign_op!(RemAssign, rem_assign, %=);
_impl_tuple_assign_op!(RemAssign<T>, rem_assign, %=);