num_traits::ops::wrapping

Trait WrappingShl

Source
pub trait WrappingShl: Sized + Shl<usize, Output = Self> {
    // Required method
    fn wrapping_shl(&self, rhs: u32) -> Self;
}
Expand description

Performs a left shift that does not panic.

Required Methods§

Source

fn wrapping_shl(&self, rhs: u32) -> Self

Panic-free bitwise shift-left; yields self << mask(rhs), where mask removes any high order bits of rhs that would cause the shift to exceed the bitwidth of the type.

use num_traits::WrappingShl;

let x: u16 = 0x0001;

assert_eq!(WrappingShl::wrapping_shl(&x, 0),  0x0001);
assert_eq!(WrappingShl::wrapping_shl(&x, 1),  0x0002);
assert_eq!(WrappingShl::wrapping_shl(&x, 15), 0x8000);
assert_eq!(WrappingShl::wrapping_shl(&x, 16), 0x0001);

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl WrappingShl for i8

Source§

fn wrapping_shl(&self, rhs: u32) -> i8

Source§

impl WrappingShl for i16

Source§

fn wrapping_shl(&self, rhs: u32) -> i16

Source§

impl WrappingShl for i32

Source§

fn wrapping_shl(&self, rhs: u32) -> i32

Source§

impl WrappingShl for i64

Source§

fn wrapping_shl(&self, rhs: u32) -> i64

Source§

impl WrappingShl for i128

Source§

fn wrapping_shl(&self, rhs: u32) -> i128

Source§

impl WrappingShl for isize

Source§

fn wrapping_shl(&self, rhs: u32) -> isize

Source§

impl WrappingShl for u8

Source§

fn wrapping_shl(&self, rhs: u32) -> u8

Source§

impl WrappingShl for u16

Source§

fn wrapping_shl(&self, rhs: u32) -> u16

Source§

impl WrappingShl for u32

Source§

fn wrapping_shl(&self, rhs: u32) -> u32

Source§

impl WrappingShl for u64

Source§

fn wrapping_shl(&self, rhs: u32) -> u64

Source§

impl WrappingShl for u128

Source§

fn wrapping_shl(&self, rhs: u32) -> u128

Source§

impl WrappingShl for usize

Source§

fn wrapping_shl(&self, rhs: u32) -> usize

Source§

impl<T: WrappingShl> WrappingShl for Wrapping<T>
where Wrapping<T>: Shl<usize, Output = Wrapping<T>>,

Source§

fn wrapping_shl(&self, rhs: u32) -> Self

Implementors§