Struct stackdump_core::register_data::VecRegisterData
source · [−]pub struct VecRegisterData<RB> { /* private fields */ }Expand description
A collection of registers, backed by a vec.
Implementations
sourceimpl<RB: Integral> VecRegisterData<RB>
impl<RB: Integral> VecRegisterData<RB>
sourcepub fn new(starting_register: Register, registers: Vec<RB>) -> Self
pub fn new(starting_register: Register, registers: Vec<RB>) -> Self
Create a new register collection backed by a vec
- The registers must be sequential according to the dwarf register numbers.
- All registers that are in the collection must have their true value.
sourcepub fn bytes(&self) -> RegisterDataBytesIterator<'_, RB>ⓘNotable traits for RegisterDataBytesIterator<'a, RB>impl<'a, RB: Integral> Iterator for RegisterDataBytesIterator<'a, RB> type Item = u8;
pub fn bytes(&self) -> RegisterDataBytesIterator<'_, RB>ⓘNotable traits for RegisterDataBytesIterator<'a, RB>impl<'a, RB: Integral> Iterator for RegisterDataBytesIterator<'a, RB> type Item = u8;
Get a byte iterator for this collection.
This iterator can be used to store the collection as bytes or to stream over a network. The iterated bytes include the length so that if you use the FromIterator implementation, it consumes only the bytes that are part of the collection. This means you can chain multiple of these iterators after each other.
use arrayvec::ArrayVec;
use stackdump_core::register_data::{ArrayRegisterData, RegisterData};
let regs1 = ArrayRegisterData::<4, u32>::new(stackdump_core::gimli::Arm::R0, ArrayVec::from([1, 2, 3, 4]));
let regs2 = ArrayRegisterData::<4, u32>::new(stackdump_core::gimli::Arm::R0, ArrayVec::from([5, 6, 7, 8]));
let mut intermediate_buffer = Vec::new();
intermediate_buffer.extend(regs1.bytes());
intermediate_buffer.extend(regs2.bytes());
let mut intermediate_iter = intermediate_buffer.iter().copied();
assert_eq!(regs1, ArrayRegisterData::<4, u32>::from_iter(&mut intermediate_iter));
assert_eq!(regs2, ArrayRegisterData::<4, u32>::from_iter(&mut intermediate_iter));Trait Implementations
sourceimpl<RB: Clone> Clone for VecRegisterData<RB>
impl<RB: Clone> Clone for VecRegisterData<RB>
sourcefn clone(&self) -> VecRegisterData<RB>
fn clone(&self) -> VecRegisterData<RB>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source. Read more
sourceimpl<RB: Debug> Debug for VecRegisterData<RB>
impl<RB: Debug> Debug for VecRegisterData<RB>
sourceimpl<RB: Default> Default for VecRegisterData<RB>
impl<RB: Default> Default for VecRegisterData<RB>
sourcefn default() -> VecRegisterData<RB>
fn default() -> VecRegisterData<RB>
Returns the “default value” for a type. Read more
sourceimpl<'de, RB> Deserialize<'de> for VecRegisterData<RB> where
RB: Deserialize<'de>,
impl<'de, RB> Deserialize<'de> for VecRegisterData<RB> where
RB: Deserialize<'de>,
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl<RB> FromIterator<u8> for VecRegisterData<RB> where
RB: Integral,
RB::Bytes: for<'a> TryFrom<&'a [u8]>,
impl<RB> FromIterator<u8> for VecRegisterData<RB> where
RB: Integral,
RB::Bytes: for<'a> TryFrom<&'a [u8]>,
sourcefn from_iter<T: IntoIterator<Item = u8>>(iter: T) -> Self
fn from_iter<T: IntoIterator<Item = u8>>(iter: T) -> Self
Creates a value from an iterator. Read more
sourceimpl<RB: PartialEq> PartialEq<VecRegisterData<RB>> for VecRegisterData<RB>
impl<RB: PartialEq> PartialEq<VecRegisterData<RB>> for VecRegisterData<RB>
sourcefn eq(&self, other: &VecRegisterData<RB>) -> bool
fn eq(&self, other: &VecRegisterData<RB>) -> bool
This method tests for self and other values to be equal, and is used
by ==. Read more
sourcefn ne(&self, other: &VecRegisterData<RB>) -> bool
fn ne(&self, other: &VecRegisterData<RB>) -> bool
This method tests for !=.
sourceimpl<RB: Integral> RegisterData<RB> for VecRegisterData<RB>
impl<RB: Integral> RegisterData<RB> for VecRegisterData<RB>
sourcefn register(&self, register: Register) -> Option<RB>
fn register(&self, register: Register) -> Option<RB>
Try to get the value of the given register. Returns None if the register is not present in this collection. Read more
sourceimpl<RB> Serialize for VecRegisterData<RB> where
RB: Serialize,
impl<RB> Serialize for VecRegisterData<RB> where
RB: Serialize,
impl<RB> StructuralPartialEq for VecRegisterData<RB>
Auto Trait Implementations
impl<RB> RefUnwindSafe for VecRegisterData<RB> where
RB: RefUnwindSafe,
impl<RB> Send for VecRegisterData<RB> where
RB: Send,
impl<RB> Sync for VecRegisterData<RB> where
RB: Sync,
impl<RB> Unpin for VecRegisterData<RB> where
RB: Unpin,
impl<RB> UnwindSafe for VecRegisterData<RB> where
RB: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more