Trait rug::ops::ShlFrom [] [src]

pub trait ShlFrom<Lhs = Self> {
    fn shl_from(&mut self, lhs: Lhs);
}

Compound left shift and assignment to the rhs operand.

rhs.shl_from(lhs) has the same effect as rhs = lhs << rhs.

Examples

use rug::Integer;
use rug::ops::ShlFrom;
use std::mem;
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);

Required Methods

Peforms the left shift.

Examples

use rug::ops::ShlFrom;
let mut rhs = 4;
rhs.shl_from(0x00f0);
// rhs = 0x00f0 << 4
assert_eq!(rhs, 0x0f00);

Implementations on Foreign Types

impl ShlFrom for i8
[src]

[src]

impl<'a> ShlFrom<&'a i8> for i8
[src]

[src]

impl ShlFrom for i16
[src]

[src]

impl<'a> ShlFrom<&'a i16> for i16
[src]

[src]

impl ShlFrom for i32
[src]

[src]

impl<'a> ShlFrom<&'a i32> for i32
[src]

[src]

impl ShlFrom for i64
[src]

[src]

impl<'a> ShlFrom<&'a i64> for i64
[src]

[src]

impl ShlFrom for isize
[src]

[src]

impl<'a> ShlFrom<&'a isize> for isize
[src]

[src]

impl ShlFrom for i128
[src]

[src]

impl<'a> ShlFrom<&'a i128> for i128
[src]

[src]

impl ShlFrom for u8
[src]

[src]

impl<'a> ShlFrom<&'a u8> for u8
[src]

[src]

impl ShlFrom for u16
[src]

[src]

impl<'a> ShlFrom<&'a u16> for u16
[src]

[src]

impl ShlFrom for u32
[src]

[src]

impl<'a> ShlFrom<&'a u32> for u32
[src]

[src]

impl ShlFrom for u64
[src]

[src]

impl<'a> ShlFrom<&'a u64> for u64
[src]

[src]

impl ShlFrom for usize
[src]

[src]

impl<'a> ShlFrom<&'a usize> for usize
[src]

[src]

impl ShlFrom for u128
[src]

[src]

impl<'a> ShlFrom<&'a u128> for u128
[src]

[src]

Implementors