Trait ReadDataValue

Source
pub trait ReadDataValue: Read {
    // Provided method
    fn read_data_value(&mut self, data_type: DataType) -> Result<DataValue> { ... }
}
Expand description

Extends Read with a method to read a VAX data type (DataType) into the enum DataValue.

§Examples

use vax_disassembler::{DataType, DataValue, ReadDataValue};
use std::io::Cursor;

for quadword in (i64::MIN..=i64::MAX).step_by(u64::MAX as usize / 241) {
    let mut reader = Cursor::new(quadword.to_le_bytes());
    let data_value = reader.read_data_value(DataType::Quadword).unwrap();
    assert_eq!(data_value, DataValue::Quadword(quadword));
}

Provided Methods§

Source

fn read_data_value(&mut self, data_type: DataType) -> Result<DataValue>

Reads in a specified VAX data type (DataType) and returns the DataValue.

§Examples
use vax_disassembler::{DataType, DataValue, ReadDataValue};
use std::io::Cursor;

for byte in i8::MIN..=i8::MAX {
    let mut reader = Cursor::new([byte as u8]);
    let data_value = reader.read_data_value(DataType::Byte).unwrap();
    assert_eq!(data_value, DataValue::Byte(byte));
}
for word in (i16::MIN..=i16::MAX).step_by(u16::MAX as usize / 257) {
    let mut reader = Cursor::new(word.to_le_bytes());
    let data_value = reader.read_data_value(DataType::Word).unwrap();
    assert_eq!(data_value, DataValue::Word(word));
}
for longword in (i32::MIN..=i32::MAX).step_by(u32::MAX as usize / 251) {
    let mut reader = Cursor::new(longword.to_le_bytes());
    let data_value = reader.read_data_value(DataType::Longword).unwrap();
    assert_eq!(data_value, DataValue::Longword(longword));
}

Implementors§

Source§

impl<R: Read + ?Sized> ReadDataValue for R

All types that implement Read get methods defined in ReadDataValue for free.