dnp3 1.6.0

Rust implementation of DNP3 (IEEE 1815) with idiomatic bindings for C, C++, .NET, and Java
Documentation
use scursor::WriteCursor;

pub(crate) struct Buffer {
    inner: Box<[u8]>,
}

impl Buffer {
    pub(crate) fn new(size: usize) -> Self {
        Self {
            inner: vec![0; size].into_boxed_slice(),
        }
    }

    pub(crate) fn write_cursor(&mut self) -> WriteCursor {
        WriteCursor::new(self.inner.as_mut())
    }

    pub(crate) fn get(&self, length: usize) -> Option<&[u8]> {
        self.inner.get(0..length)
    }

    #[cfg(test)]
    pub(crate) fn get_mut(&mut self, length: usize) -> Option<&mut [u8]> {
        self.inner.get_mut(0..length)
    }

    #[cfg(test)]
    pub(crate) fn len(&self) -> usize {
        self.inner.len()
    }
}