num_traits::ops::checked

Trait CheckedShl

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

Performs a left shift that returns None on shifts larger than or equal to the type width.

Required Methods§

Source

fn checked_shl(&self, rhs: u32) -> Option<Self>

Checked shift left. Computes self << rhs, returning None if rhs is larger than or equal to the number of bits in self.

use num_traits::CheckedShl;

let x: u16 = 0x0001;

assert_eq!(CheckedShl::checked_shl(&x, 0),  Some(0x0001));
assert_eq!(CheckedShl::checked_shl(&x, 1),  Some(0x0002));
assert_eq!(CheckedShl::checked_shl(&x, 15), Some(0x8000));
assert_eq!(CheckedShl::checked_shl(&x, 16), None);

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 CheckedShl for i8

Source§

fn checked_shl(&self, rhs: u32) -> Option<i8>

Source§

impl CheckedShl for i16

Source§

fn checked_shl(&self, rhs: u32) -> Option<i16>

Source§

impl CheckedShl for i32

Source§

fn checked_shl(&self, rhs: u32) -> Option<i32>

Source§

impl CheckedShl for i64

Source§

fn checked_shl(&self, rhs: u32) -> Option<i64>

Source§

impl CheckedShl for i128

Source§

fn checked_shl(&self, rhs: u32) -> Option<i128>

Source§

impl CheckedShl for isize

Source§

fn checked_shl(&self, rhs: u32) -> Option<isize>

Source§

impl CheckedShl for u8

Source§

fn checked_shl(&self, rhs: u32) -> Option<u8>

Source§

impl CheckedShl for u16

Source§

fn checked_shl(&self, rhs: u32) -> Option<u16>

Source§

impl CheckedShl for u32

Source§

fn checked_shl(&self, rhs: u32) -> Option<u32>

Source§

impl CheckedShl for u64

Source§

fn checked_shl(&self, rhs: u32) -> Option<u64>

Source§

impl CheckedShl for u128

Source§

fn checked_shl(&self, rhs: u32) -> Option<u128>

Source§

impl CheckedShl for usize

Source§

fn checked_shl(&self, rhs: u32) -> Option<usize>

Implementors§