Struct dsi_bitstream::impls::MemWordReader
source · pub struct MemWordReader<W: UnsignedInt, B: AsRef<[W]>, const INF: bool = true> { /* private fields */ }
Expand description
An implementation of WordRead
and WordSeek
for a slice.
The implementation depends on the INF
parameter: if true, the reader will
behave as if the slice is infinitely extended with zeros.
If false, the reader will return an error when reading
beyond the end of the slice. You can create a zero-extended
reader with MemWordReader::new
and a strict reader with
MemWordReader::new_strict
.
The zero-extended reader is usually much faster than the strict reader, but it might loop infinitely when reading beyond the end of the slice.
Examples
use dsi_bitstream::prelude::*;
let words: [u32; 2] = [1, 2];
let mut word_reader = MemWordReader::new(&words);
assert_eq!(1, word_reader.read_word().unwrap());
assert_eq!(2, word_reader.read_word().unwrap());
assert_eq!(0, word_reader.read_word().unwrap());
assert_eq!(0, word_reader.read_word().unwrap());
let mut word_reader = MemWordReader::new_strict(&words);
assert_eq!(1, word_reader.read_word().unwrap());
assert_eq!(2, word_reader.read_word().unwrap());
assert!(word_reader.read_word().is_err());
Implementations§
source§impl<W: UnsignedInt, B: AsRef<[W]>> MemWordReader<W, B>
impl<W: UnsignedInt, B: AsRef<[W]>> MemWordReader<W, B>
sourcepub fn new(data: B) -> Self
pub fn new(data: B) -> Self
Create a new MemWordReader
from a slice of data
pub fn into_inner(self) -> B
source§impl<W: UnsignedInt, B: AsRef<[W]>> MemWordReader<W, B, false>
impl<W: UnsignedInt, B: AsRef<[W]>> MemWordReader<W, B, false>
sourcepub fn new_strict(data: B) -> Self
pub fn new_strict(data: B) -> Self
Create a new MemWordReader
from a slice of data
Trait Implementations§
source§impl<W: Clone + UnsignedInt, B: Clone + AsRef<[W]>, const INF: bool> Clone for MemWordReader<W, B, INF>
impl<W: Clone + UnsignedInt, B: Clone + AsRef<[W]>, const INF: bool> Clone for MemWordReader<W, B, INF>
source§fn clone(&self) -> MemWordReader<W, B, INF>
fn clone(&self) -> MemWordReader<W, B, INF>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<W: Debug + UnsignedInt, B: Debug + AsRef<[W]>, const INF: bool> Debug for MemWordReader<W, B, INF>
impl<W: Debug + UnsignedInt, B: Debug + AsRef<[W]>, const INF: bool> Debug for MemWordReader<W, B, INF>
source§impl<W: PartialEq + UnsignedInt, B: PartialEq + AsRef<[W]>, const INF: bool> PartialEq for MemWordReader<W, B, INF>
impl<W: PartialEq + UnsignedInt, B: PartialEq + AsRef<[W]>, const INF: bool> PartialEq for MemWordReader<W, B, INF>
source§fn eq(&self, other: &MemWordReader<W, B, INF>) -> bool
fn eq(&self, other: &MemWordReader<W, B, INF>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl<W: UnsignedInt, B: AsRef<[W]>> WordRead for MemWordReader<W, B, true>
impl<W: UnsignedInt, B: AsRef<[W]>> WordRead for MemWordReader<W, B, true>
type Error = Infallible
§type Word = W
type Word = W
The word type (the type of the result of
WordRead::read_word
).source§fn read_word(&mut self) -> Result<W, Infallible>
fn read_word(&mut self) -> Result<W, Infallible>
Read a word and advance the current position.
source§impl<W: UnsignedInt, B: AsRef<[W]>> WordRead for MemWordReader<W, B, false>
impl<W: UnsignedInt, B: AsRef<[W]>> WordRead for MemWordReader<W, B, false>
source§impl<W: UnsignedInt, B: AsRef<[W]>> WordSeek for MemWordReader<W, B, true>
impl<W: UnsignedInt, B: AsRef<[W]>> WordSeek for MemWordReader<W, B, true>
type Error = Infallible
source§fn get_word_pos(&mut self) -> Result<u64, Infallible>
fn get_word_pos(&mut self) -> Result<u64, Infallible>
Get the current position in words from the start of the file.
source§fn set_word_pos(&mut self, word_index: u64) -> Result<(), Infallible>
fn set_word_pos(&mut self, word_index: u64) -> Result<(), Infallible>
Set the current position in words from the start of the file to
word_pos
.source§impl<W: UnsignedInt, B: AsRef<[W]>> WordSeek for MemWordReader<W, B, false>
impl<W: UnsignedInt, B: AsRef<[W]>> WordSeek for MemWordReader<W, B, false>
impl<W: UnsignedInt, B: AsRef<[W]>, const INF: bool> StructuralPartialEq for MemWordReader<W, B, INF>
Auto Trait Implementations§
impl<W, B, const INF: bool> RefUnwindSafe for MemWordReader<W, B, INF>where
B: RefUnwindSafe,
W: RefUnwindSafe,
impl<W, B, const INF: bool> Send for MemWordReader<W, B, INF>where
B: Send,
impl<W, B, const INF: bool> Sync for MemWordReader<W, B, INF>where
B: Sync,
impl<W, B, const INF: bool> Unpin for MemWordReader<W, B, INF>
impl<W, B, const INF: bool> UnwindSafe for MemWordReader<W, B, INF>where
B: UnwindSafe,
W: UnwindSafe,
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
source§impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
source§impl<T> DowncastableFrom<T> for T
impl<T> DowncastableFrom<T> for T
source§fn downcast_from(value: T) -> T
fn downcast_from(value: T) -> T
Truncate the current UnsignedInt to a possibly smaller size
source§impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
source§impl<T> UpcastableFrom<T> for T
impl<T> UpcastableFrom<T> for T
source§fn upcast_from(value: T) -> T
fn upcast_from(value: T) -> T
Extend the current UnsignedInt to a possibly bigger size.