vertigo 0.11.2

Reactive Real-DOM library with SSR for Rust
Documentation
use super::memory_block::MemoryBlock;

#[derive(Debug)]
pub struct MemoryBlockWrite {
    block: MemoryBlock,
    offset: u32,
}

impl MemoryBlockWrite {
    pub fn new(block: MemoryBlock) -> MemoryBlockWrite {
        MemoryBlockWrite { block, offset: 0 }
    }

    pub fn get_block(self) -> MemoryBlock {
        self.block
    }

    pub fn write(&mut self, data: &[u8]) {
        self.block.write(self.offset, data);
        self.offset += data.len() as u32;
    }

    pub fn write_u8(&mut self, value: impl Into<u8>) {
        let value = value.into();
        self.write(&[value]);
    }

    pub fn write_u64(&mut self, value: u64) {
        let bytes: [u8; 8] = value.to_be_bytes();
        self.write(&bytes);
    }

    pub fn write_i64(&mut self, value: i64) {
        let bytes: [u8; 8] = value.to_be_bytes();
        self.write(&bytes);
    }

    pub fn write_u32(&mut self, value: u32) {
        let bytes: [u8; 4] = value.to_be_bytes();
        self.write(&bytes);
    }

    pub fn write_i32(&mut self, value: i32) {
        let bytes: [u8; 4] = value.to_be_bytes();
        self.write(&bytes);
    }

    pub fn write_u16(&mut self, value: u16) {
        let bytes: [u8; 2] = value.to_be_bytes();
        self.write(&bytes);
    }

    pub fn write_f64(&mut self, value: f64) {
        let bytes: [u8; 8] = value.to_be_bytes();
        self.write(&bytes);
    }
}