pub trait ShrFrom<Lhs = Self> {
// Required method
fn shr_from(&mut self, lhs: Lhs);
}
Expand description
Compound right shift and assignment to the rhs operand.
rhs.shr_from(lhs)
has the same effect as rhs = lhs >> rhs
.
§Examples
use core::mem;
use rug::ops::ShrFrom;
use rug::Integer;
struct I(Integer);
impl ShrFrom for I {
fn shr_from(&mut self, mut lhs: I) {
let rhs = self.0.to_i32().expect("overflow");
mem::swap(self, &mut lhs);
self.0 >>= rhs;
}
}
let mut i = I(Integer::from(4));
i.shr_from(I(Integer::from(0xf000)));
let expected = Integer::from(0xf000) >> 4;
assert_eq!(i.0, expected);