pub struct MemWordReader<W: Word, 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()?);
assert_eq!(2, word_reader.read_word()?);
assert_eq!(0, word_reader.read_word()?);
assert_eq!(0, word_reader.read_word()?);
let mut word_reader = MemWordReader::new_strict(&words);
assert_eq!(1, word_reader.read_word()?);
assert_eq!(2, word_reader.read_word()?);
assert!(word_reader.read_word().is_err());
Implementations§
Source§impl<W: Word, B: AsRef<[W]>> MemWordReader<W, B>
impl<W: Word, 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: Word, B: AsRef<[W]>> MemWordReader<W, B, false>
impl<W: Word, 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 + Word, B: Clone + AsRef<[W]>, const INF: bool> Clone for MemWordReader<W, B, INF>
impl<W: Clone + Word, 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 + Word, B: Debug + AsRef<[W]>, const INF: bool> Debug for MemWordReader<W, B, INF>
impl<W: Debug + Word, B: Debug + AsRef<[W]>, const INF: bool> Debug for MemWordReader<W, B, INF>
Source§impl<W: Word, B, const INF: bool> MemDbgImpl for MemWordReader<W, B, INF>
impl<W: Word, B, const INF: bool> MemDbgImpl for MemWordReader<W, B, INF>
fn _mem_dbg_rec_on( &self, _memdbg_writer: &mut impl Write, _memdbg_total_size: usize, _memdbg_max_depth: usize, _memdbg_prefix: &mut String, _memdbg_is_last: bool, _memdbg_flags: DbgFlags, ) -> Result
fn _mem_dbg_depth_on( &self, writer: &mut impl Write, total_size: usize, max_depth: usize, prefix: &mut String, field_name: Option<&str>, is_last: bool, padded_size: usize, flags: DbgFlags, ) -> Result<(), Error>
Source§impl<W: PartialEq + Word, B: PartialEq + AsRef<[W]>, const INF: bool> PartialEq for MemWordReader<W, B, INF>
impl<W: PartialEq + Word, B: PartialEq + AsRef<[W]>, const INF: bool> PartialEq for MemWordReader<W, B, INF>
Source§impl<W: Word, B: AsRef<[W]>> WordRead for MemWordReader<W, B, true>
impl<W: Word, B: AsRef<[W]>> WordRead for MemWordReader<W, B, true>
type Error = Infallible
Source§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: Word, B: AsRef<[W]>> WordSeek for MemWordReader<W, B, true>
impl<W: Word, B: AsRef<[W]>> WordSeek for MemWordReader<W, B, true>
type Error = Infallible
Source§fn word_pos(&mut self) -> Result<u64, Infallible>
fn 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
.impl<W: Word, B: AsRef<[W]>, const INF: bool> StructuralPartialEq for MemWordReader<W, B, INF>
Auto Trait Implementations§
impl<W, B, const INF: bool> Freeze for MemWordReader<W, B, INF>where
B: Freeze,
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> MemDbg for Twhere
T: MemDbgImpl,
impl<T> MemDbg for Twhere
T: MemDbgImpl,
Source§fn mem_dbg(&self, flags: DbgFlags) -> Result<(), Error>
fn mem_dbg(&self, flags: DbgFlags) -> Result<(), Error>
Writes to stderr debug infos about the structure memory usage, expanding
all levels of nested structures.
Source§fn mem_dbg_on(
&self,
writer: &mut impl Write,
flags: DbgFlags,
) -> Result<(), Error>
fn mem_dbg_on( &self, writer: &mut impl Write, flags: DbgFlags, ) -> Result<(), Error>
Writes to a
core::fmt::Write
debug infos about the structure memory
usage, expanding all levels of nested structures.Source§fn mem_dbg_depth(&self, max_depth: usize, flags: DbgFlags) -> Result<(), Error>
fn mem_dbg_depth(&self, max_depth: usize, flags: DbgFlags) -> Result<(), Error>
Writes to stderr debug infos about the structure memory usage as
mem_dbg
, but expanding only up to max_depth
levels of nested structures.Source§fn mem_dbg_depth_on(
&self,
writer: &mut impl Write,
max_depth: usize,
flags: DbgFlags,
) -> Result<(), Error>
fn mem_dbg_depth_on( &self, writer: &mut impl Write, max_depth: usize, flags: DbgFlags, ) -> Result<(), Error>
Writes to a
core::fmt::Write
debug infos about the structure memory
usage as mem_dbg_on
, but expanding only up to
max_depth
levels of nested structures.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.