pub struct ExpGolombEncoder<'a> { /* private fields */ }Expand description
An Exponential-Golomb writer.
Implementations§
Source§impl<'a> ExpGolombEncoder<'a>
impl<'a> ExpGolombEncoder<'a>
Sourcepub fn new(buf: &'a mut [u8], start: u32) -> Option<ExpGolombEncoder<'a>>
pub fn new(buf: &'a mut [u8], start: u32) -> Option<ExpGolombEncoder<'a>>
Create a new ExpGolombEncoder.
start denotes the starting position in the first byte of buf and goes from 0 (first) to
7 (last). This function returns None if the buffer is empty or if start is not within
[0, 7].
§Examples
let mut buf = [0u8; 1];
// Write starting at the second bit
let mut writer = ExpGolombEncoder::new(&mut buf, 1).unwrap();
writer.put_unsigned(2).unwrap();
writer.close();
assert_eq!(buf[0], 0b00110000);Sourcepub fn put_unsigned(&mut self, value: u64) -> Option<()>
pub fn put_unsigned(&mut self, value: u64) -> Option<()>
Encode a u64 into the buffer. Returns None if the buffer is full.
§Examples
let mut buf = [0u8; 6];
let mut writer = ExpGolombEncoder::new(&mut buf, 0).unwrap();
for i in 0..=8 {
writer.put_unsigned(i).unwrap();
}
writer.close();
assert_eq!(
buf,
[0b10100110, 0b01000010, 0b10011000, 0b11100010, 0b00000100, 0b10000000]
);This function guards against out of bounds indexing by returning None:
let mut buf = [0u8; 1];
let mut writer = ExpGolombEncoder::new(&mut buf, 0).unwrap();
assert!(writer.put_unsigned(1).is_some());
assert!(writer.put_unsigned(1).is_some());
assert!(writer.put_unsigned(1).is_none());Sourcepub fn put_bit(&mut self, value: bool) -> Option<()>
pub fn put_bit(&mut self, value: bool) -> Option<()>
Write a single bit to the buffer. Returns None if the buffer is full.
§Examples
let mut buf = [0u8; 1];
let mut writer = ExpGolombEncoder::new(&mut buf, 6).unwrap();
writer.put_bit(true).unwrap();
writer.put_bit(false).unwrap();
assert!(writer.put_bit(true).is_none());
assert!(writer.put_bit(true).is_none());
writer.close();
assert_eq!(buf[0], 0b00000010);Auto Trait Implementations§
impl<'a> Freeze for ExpGolombEncoder<'a>
impl<'a> RefUnwindSafe for ExpGolombEncoder<'a>
impl<'a> Send for ExpGolombEncoder<'a>
impl<'a> Sync for ExpGolombEncoder<'a>
impl<'a> Unpin for ExpGolombEncoder<'a>
impl<'a> !UnwindSafe for ExpGolombEncoder<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more