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§
Sourcefn zero_extend(self) -> Reg32Bits<T>
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]);Sourcefn sign_extend(self) -> Reg32Bits<T>
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]);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.