Reg32BitsUpCast

Trait Reg32BitsUpCast 

Source
pub trait Reg32BitsUpCast<const T: usize>:
    Reg32BitsBitSize
    + Copy
    + Into<u32> {
    // Provided methods
    fn zero_extend(self) -> Reg32Bits<T> { ... }
    fn sign_extend(self) -> Reg32Bits<T> { ... }
    fn zero_pad(self) -> Reg32Bits<T> { ... }
}

Provided Methods§

Source

fn zero_extend(self) -> Reg32Bits<T>

Extend the current register bits with 0s on the most significant bits

§Example
use register_bits::prelude::*;
let bits: Reg32Bits<4> =
    Reg32Bits::new(0b1010).take_low();

// 1010 => 0000 1010
assert_eq!(bits.zero_extend().bits(), [0, 0, 0, 0, 1, 0, 1, 0]);
Source

fn sign_extend(self) -> Reg32Bits<T>

Extend the current register bits by copied the most significant bit to the new bits

§Example
use register_bits::prelude::*;

// Most significant bit is 1
let bits: Reg32Bits<4> =
    Reg32Bits::new(0b1010).take_low();

// 1010 => 1111 1010
assert_eq!(bits.sign_extend().bits(), [1, 1, 1, 1, 1, 0, 1, 0]);

// Most significant bit is 0
let bits: Reg32Bits<4> =
    Reg32Bits::new(0b0101).take_low();

// 0101 => 0000 0101
assert_eq!(bits.sign_extend().bits(), [0, 0, 0, 0, 0, 1, 0, 1]);
Source

fn zero_pad(self) -> Reg32Bits<T>

Add extra zeros for the least significant bits

§Example
use register_bits::prelude::*;

let bits: Reg32Bits<4> =
    Reg32Bits::new(0b1010).take_low();

// 1010 => 1010 0000
assert_eq!(bits.zero_pad().bits(), [1, 0, 1, 0, 0, 0, 0, 0]);

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.

Implementors§

Source§

impl<const F: usize, const T: usize> Reg32BitsUpCast<T> for Reg32Bits<F>