pub trait View {
fn read_at<E: Endian>(&self, offset: usize) -> Option<E>;
unsafe fn read_at_unchecked<E: Endian>(&self, offset: usize) -> E;
fn write_at<E: Endian>(&mut self, offset: usize, num: E);
}Expand description
A data view for reading and writing data in byte array.
Examples
use data_view::View;
let mut buf = [0; 16];
buf.write_at(1, 42_u16);
assert_eq!(buf.read_at::<u16>(1).unwrap(), 42);Required methods
Reads a value of type E: Endian from view.
Examples
use data_view::View;
let mut buf: [u8; 2] = [12, 34];
assert_eq!(buf.read_at::<u8>(0).unwrap(), 12);
assert_eq!(buf.read_at::<u8>(1).unwrap(), 34);unsafe fn read_at_unchecked<E: Endian>(&self, offset: usize) -> E
unsafe fn read_at_unchecked<E: Endian>(&self, offset: usize) -> E
Reads a value of type E: Endian from view, without doing bounds checking.
For a safe alternative see read_at.
Examples
use data_view::View;
let mut buf: [u8; 2] = [12, 34];
unsafe {
assert_eq!(buf.read_at_unchecked::<u8>(0), 12);
assert_eq!(buf.read_at_unchecked::<u8>(1), 34);
}Safety
Calling this method with an out-of-bounds index is [undefined behavior]