rustbin 0.8.0

Parsers for binary file formats (mostly Windows related).
Documentation
use serde::Serialize;
use num_traits::ToBytes;

use crate::types::HeaderField;


#[derive(Debug, Default, Serialize)]
pub struct HeaderFieldEx<T> {
    value: HeaderField<T>,
    raw: Vec<u8>,
}


impl From<HeaderField<u8>> for HeaderFieldEx<u8> {
    fn from(value: HeaderField<u8>) -> Self {
        let raw = value.value.to_le_bytes().to_vec();
        Self { value, raw }
    }
}

impl From<HeaderField<u16>> for HeaderFieldEx<u16> {
    fn from(value: HeaderField<u16>) -> Self {
        let raw = value.value.to_le_bytes().to_vec();
        Self { value, raw }
    }
}

impl From<HeaderField<u32>> for HeaderFieldEx<u32> {
    fn from(value: HeaderField<u32>) -> Self {
        let raw = ToBytes::to_le_bytes(&value.value).as_ref().to_vec();
        Self { value, raw }
    }
}