Trait WriteDataValue

Source
pub trait WriteDataValue: Write {
    // Provided method
    fn write_data_value(&mut self, data_value: DataValue) -> Result<()> { ... }
}
Expand description

Extends Write with a method to write a VAX data value (DataValue).

§Examples

use vax_disassembler::{DataValue, WriteDataValue};
use std::io::Cursor;

for quadword in (i64::MIN..=i64::MAX).step_by(u64::MAX as usize / 241) {
    let value = DataValue::Quadword(quadword);
    let mut writer = Vec::with_capacity(8);
    writer.write_data_value(value).unwrap();
    assert_eq!(&writer, &quadword.to_le_bytes());
}

Provided Methods§

Source

fn write_data_value(&mut self, data_value: DataValue) -> Result<()>

Writes in a specified VAX data value (DataValue).

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

for byte in i8::MIN..=i8::MAX {
    let value = DataValue::Byte(byte);
    let mut writer = Vec::with_capacity(1);
    writer.write_data_value(value).unwrap();
    assert_eq!(&writer, &[byte as u8]);
}
for word in (i16::MIN..=i16::MAX).step_by(u16::MAX as usize / 257) {
    let value = DataValue::Word(word);
    let mut writer = Vec::with_capacity(2);
    writer.write_data_value(value).unwrap();
    assert_eq!(&writer, &word.to_le_bytes());
}
for longword in (i32::MIN..=i32::MAX).step_by(u32::MAX as usize / 251) {
    let value = DataValue::Longword(longword);
    let mut writer = Vec::with_capacity(2);
    writer.write_data_value(value).unwrap();
    assert_eq!(&writer, &longword.to_le_bytes());
}

Implementors§

Source§

impl<W: Write + ?Sized> WriteDataValue for W

All types that implement Write get methods defined in WriteDataValue for free.