use dimension_shiftable_buffer::DimensionShiftableBuffer;
fn example_u8()
{
let mut dsb = DimensionShiftableBuffer::<u8>::new(vec![], 2).unwrap();
dsb.push(&[0u8, 1]).unwrap();
dsb.push(&[2u8, 3]).unwrap();
dsb.append(&[4u8, 5, 6, 7, 8, 9, 10, 11]).unwrap();
for index in 0..dsb.len().unwrap()
{
assert_eq!(dsb.get(index).unwrap(), &[index as u8 * 2, index as u8 * 2 + 1]);
}
dsb.shift_dimension(3).unwrap();
dsb.push(&[12u8, 13, 14]).unwrap();
assert_eq!(dsb.get(0).unwrap(), &[0u8, 1, 2]);
assert_eq!(dsb.get(1).unwrap(), &[3u8, 4, 5]);
assert_eq!(dsb.get(2).unwrap(), &[6u8, 7, 8]);
assert_eq!(dsb.get(3).unwrap(), &[9u8, 10, 11]);
assert_eq!(dsb.get(4).unwrap(), &[12u8, 13, 14]);
let linear_slice = dsb.as_slice();
assert_eq!(linear_slice, &[0u8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]);
}
fn main()
{
example_u8();
}