Trait Invertible

Source
pub trait Invertible<N> {
    // Required method
    fn uncombine(&self, a: &mut N, b: &N);
}
Expand description

A trait for invertible operations.

Required Methods§

Source

fn uncombine(&self, a: &mut N, b: &N)

A method such that the following code will leave a in the same state as it started.

 // after running these two methods, a should be unchanged:
op.combine_mut(&mut a, &b);
op.uncombine(&mut a, &b);
assert_eq!(a, original_value_of_a);
 // a should also be unchanged after running them in the reverse order
op.uncombine(&mut a, &b);
op.combine_mut(&mut a, &b);
assert_eq!(a, original_value_of_a);

Implementors§

Source§

impl Invertible<bool> for Xor

Source§

impl Invertible<f32> for Add

Source§

impl Invertible<f32> for Mul

Source§

impl Invertible<f64> for Add

Source§

impl Invertible<f64> for Mul

Source§

impl Invertible<i8> for Add

Source§

impl Invertible<i8> for Xor

Source§

impl Invertible<i16> for Add

Source§

impl Invertible<i16> for Xor

Source§

impl Invertible<i32> for Add

Source§

impl Invertible<i32> for Xor

Source§

impl Invertible<i64> for Add

Source§

impl Invertible<i64> for Xor

Source§

impl Invertible<i128> for Add

Source§

impl Invertible<i128> for Xor

Source§

impl Invertible<isize> for Add

Source§

impl Invertible<isize> for Xor

Source§

impl Invertible<u8> for Xor

Source§

impl Invertible<u16> for Xor

Source§

impl Invertible<u32> for Xor

Source§

impl Invertible<u64> for Xor

Source§

impl Invertible<u128> for Xor

Source§

impl Invertible<usize> for Xor

Source§

impl Invertible<Wrapping<i8>> for Add

Source§

impl Invertible<Wrapping<i16>> for Add

Source§

impl Invertible<Wrapping<i32>> for Add

Source§

impl Invertible<Wrapping<i64>> for Add

Source§

impl Invertible<Wrapping<i128>> for Add

Source§

impl Invertible<Wrapping<isize>> for Add

Source§

impl Invertible<Wrapping<u8>> for Add

Source§

impl Invertible<Wrapping<u16>> for Add

Source§

impl Invertible<Wrapping<u32>> for Add

Source§

impl Invertible<Wrapping<u64>> for Add

Source§

impl Invertible<Wrapping<u128>> for Add

Source§

impl Invertible<Wrapping<usize>> for Add

Source§

impl Invertible<BigInt> for Add

Source§

impl<TA, TB, A: Invertible<TA>, B: Invertible<TB>> Invertible<(TA, TB)> for Pair<A, B>