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§
Sourcefn read_data_value(&mut self, data_type: DataType) -> Result<DataValue>
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§
impl<R: Read + ?Sized> ReadDataValue for R
All types that implement Read
get methods defined in ReadDataValue
for free.