pub trait ShlFrom<Lhs = Self> {
// Required method
fn shl_from(&mut self, lhs: Lhs);
}
Expand description
Compound left shift and assignment to the rhs operand.
rhs.shl_from(lhs)
has the same effect as rhs = lhs << rhs
.
Examples
use core::mem;
use rug::ops::ShlFrom;
use rug::Integer;
struct I(Integer);
impl ShlFrom for I {
fn shl_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(200));
i.shl_from(I(Integer::from(0xf000)));
let expected = Integer::from(0xf000) << 200;
assert_eq!(i.0, expected);