pub struct MemWordWriterVec<W: Word, B> { /* private fields */ }Expand description
An implementation of WordRead, WordWrite, and WordSeek
for a mutable vector.
The vector will be extended as new data is written.
§Examples
use dsi_bitstream::prelude::*;
let mut words: Vec<u64> = vec![
0x0043b59fcdf16077,
];
let mut word_writer = MemWordWriterVec::new(&mut words);
// the stream is read sequentially
assert_eq!(word_writer.word_pos()?, 0);
assert!(word_writer.write_word(0).is_ok());
assert_eq!(word_writer.word_pos()?, 1);
assert!(word_writer.write_word(1).is_ok());
assert_eq!(word_writer.word_pos()?, 2);Implementations§
Source§impl<W: Word, B: AsRef<Vec<W>>> MemWordWriterVec<W, B>
impl<W: Word, B: AsRef<Vec<W>>> MemWordWriterVec<W, B>
Sourcepub const fn new(data: B) -> Self
pub const fn new(data: B) -> Self
Creates a new MemWordWriterVec from a vector.
Sourcepub fn into_inner(self) -> B
pub fn into_inner(self) -> B
Consumes this writer and returns the underlying data.
Trait Implementations§
Source§impl<W: Default + Word, B: Default> Default for MemWordWriterVec<W, B>
impl<W: Default + Word, B: Default> Default for MemWordWriterVec<W, B>
Source§fn default() -> MemWordWriterVec<W, B>
fn default() -> MemWordWriterVec<W, B>
Returns the “default value” for a type. Read more
Source§impl<W: Word, B> FlatType for MemWordWriterVec<W, B>
impl<W: Word, B> FlatType for MemWordWriterVec<W, B>
Source§impl<W: Word, B> MemDbgImpl for MemWordWriterVec<W, B>where
B: MemDbgImpl + FlatType,
usize: MemDbgImpl + FlatType,
PhantomData<W>: MemDbgImpl + FlatType,
impl<W: Word, B> MemDbgImpl for MemWordWriterVec<W, B>where
B: MemDbgImpl + FlatType,
usize: MemDbgImpl + FlatType,
PhantomData<W>: MemDbgImpl + FlatType,
Source§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,
_memdbg_refs: &mut HashSet<usize>,
) -> Result
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, _memdbg_refs: &mut HashSet<usize>, ) -> Result
Recursively displays the fields of
self below the current line. Read moreSource§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,
dbg_refs: &mut HashSet<usize>,
) -> Result<(), Error>
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, dbg_refs: &mut HashSet<usize>, ) -> Result<(), Error>
Displays
self at the given depth without any reference-address
annotation; forwards to _mem_dbg_depth_on_impl
with RefDisplay::None.Source§fn _mem_dbg_depth_on_impl(
&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,
dbg_refs: &mut HashSet<usize>,
ref_display: RefDisplay,
) -> Result<(), Error>
fn _mem_dbg_depth_on_impl( &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, dbg_refs: &mut HashSet<usize>, ref_display: RefDisplay, ) -> Result<(), Error>
Internal implementation for depth display. Read more
Source§impl<W: Word, B> MemSize for MemWordWriterVec<W, B>
impl<W: Word, B> MemSize for MemWordWriterVec<W, B>
impl<W: PartialEq + Word, B: PartialEq> StructuralPartialEq for MemWordWriterVec<W, B>
Source§impl<W: Word, B: AsRef<Vec<W>>> WordRead for MemWordWriterVec<W, B>
Available on crate feature alloc only.
impl<W: Word, B: AsRef<Vec<W>>> WordRead for MemWordWriterVec<W, B>
Available on crate feature
alloc only.type Error = WordError
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, WordError>
fn read_word(&mut self) -> Result<W, WordError>
Reads a word and advances the current position.
Source§fn read_word_opt(&mut self) -> Option<Self::Word>
fn read_word_opt(&mut self) -> Option<Self::Word>
Reads and consumes the next word if the backend can determine cheaply
that one is available, returning
None otherwise (in particular, at
the end of the stream, or when availability cannot be determined
without blocking or performing I/O). Read moreSource§impl<W: Word, B: AsRef<Vec<W>>> WordSeek for MemWordWriterVec<W, B>
Available on crate feature alloc only.
impl<W: Word, B: AsRef<Vec<W>>> WordSeek for MemWordWriterVec<W, B>
Available on crate feature
alloc only.Source§impl<W: Word, B: AsMut<Vec<W>>> WordWrite for MemWordWriterVec<W, B>
Available on crate feature alloc only.
impl<W: Word, B: AsMut<Vec<W>>> WordWrite for MemWordWriterVec<W, B>
Available on crate feature
alloc only.type Error = Infallible
Source§type Word = W
type Word = W
The word type (the type of the argument of
WordWrite::write_word).Source§fn write_word(&mut self, word: W) -> Result<(), Infallible>
fn write_word(&mut self, word: W) -> Result<(), Infallible>
Writes a word and advances the current position.
Auto Trait Implementations§
impl<W, B> Freeze for MemWordWriterVec<W, B>where
<W as TryInto<usize>>::Error: Sized,
<W as TryInto<u128>>::Error: Sized,
<W as TryInto<u64>>::Error: Sized,
<W as TryInto<u32>>::Error: Sized,
<W as TryInto<u16>>::Error: Sized,
<W as TryInto<u8>>::Error: Sized,
<W as TryInto<isize>>::Error: Sized,
<W as TryInto<i128>>::Error: Sized,
<W as TryInto<i64>>::Error: Sized,
<W as TryInto<i32>>::Error: Sized,
<W as TryInto<i16>>::Error: Sized,
<W as TryInto<i8>>::Error: Sized,
<W as TryFrom<usize>>::Error: Sized,
<W as TryFrom<u128>>::Error: Sized,
<W as TryFrom<u64>>::Error: Sized,
<W as TryFrom<u32>>::Error: Sized,
<W as TryFrom<u16>>::Error: Sized,
<W as TryFrom<u8>>::Error: Sized,
<W as TryFrom<isize>>::Error: Sized,
<W as TryFrom<i128>>::Error: Sized,
<W as TryFrom<i64>>::Error: Sized,
<W as TryFrom<i32>>::Error: Sized,
<W as TryFrom<i16>>::Error: Sized,
<W as TryFrom<i8>>::Error: Sized,
<W as FromStr>::Err: Sized,
B: Freeze,
impl<W, B> RefUnwindSafe for MemWordWriterVec<W, B>where
<W as TryInto<usize>>::Error: Sized,
<W as TryInto<u128>>::Error: Sized,
<W as TryInto<u64>>::Error: Sized,
<W as TryInto<u32>>::Error: Sized,
<W as TryInto<u16>>::Error: Sized,
<W as TryInto<u8>>::Error: Sized,
<W as TryInto<isize>>::Error: Sized,
<W as TryInto<i128>>::Error: Sized,
<W as TryInto<i64>>::Error: Sized,
<W as TryInto<i32>>::Error: Sized,
<W as TryInto<i16>>::Error: Sized,
<W as TryInto<i8>>::Error: Sized,
<W as TryFrom<usize>>::Error: Sized,
<W as TryFrom<u128>>::Error: Sized,
<W as TryFrom<u64>>::Error: Sized,
<W as TryFrom<u32>>::Error: Sized,
<W as TryFrom<u16>>::Error: Sized,
<W as TryFrom<u8>>::Error: Sized,
<W as TryFrom<isize>>::Error: Sized,
<W as TryFrom<i128>>::Error: Sized,
<W as TryFrom<i64>>::Error: Sized,
<W as TryFrom<i32>>::Error: Sized,
<W as TryFrom<i16>>::Error: Sized,
<W as TryFrom<i8>>::Error: Sized,
<W as FromStr>::Err: Sized,
B: RefUnwindSafe,
impl<W, B> Send for MemWordWriterVec<W, B>where
<W as TryInto<usize>>::Error: Sized,
<W as TryInto<u128>>::Error: Sized,
<W as TryInto<u64>>::Error: Sized,
<W as TryInto<u32>>::Error: Sized,
<W as TryInto<u16>>::Error: Sized,
<W as TryInto<u8>>::Error: Sized,
<W as TryInto<isize>>::Error: Sized,
<W as TryInto<i128>>::Error: Sized,
<W as TryInto<i64>>::Error: Sized,
<W as TryInto<i32>>::Error: Sized,
<W as TryInto<i16>>::Error: Sized,
<W as TryInto<i8>>::Error: Sized,
<W as TryFrom<usize>>::Error: Sized,
<W as TryFrom<u128>>::Error: Sized,
<W as TryFrom<u64>>::Error: Sized,
<W as TryFrom<u32>>::Error: Sized,
<W as TryFrom<u16>>::Error: Sized,
<W as TryFrom<u8>>::Error: Sized,
<W as TryFrom<isize>>::Error: Sized,
<W as TryFrom<i128>>::Error: Sized,
<W as TryFrom<i64>>::Error: Sized,
<W as TryFrom<i32>>::Error: Sized,
<W as TryFrom<i16>>::Error: Sized,
<W as TryFrom<i8>>::Error: Sized,
<W as FromStr>::Err: Sized,
B: Send,
impl<W, B> Sync for MemWordWriterVec<W, B>where
<W as TryInto<usize>>::Error: Sized,
<W as TryInto<u128>>::Error: Sized,
<W as TryInto<u64>>::Error: Sized,
<W as TryInto<u32>>::Error: Sized,
<W as TryInto<u16>>::Error: Sized,
<W as TryInto<u8>>::Error: Sized,
<W as TryInto<isize>>::Error: Sized,
<W as TryInto<i128>>::Error: Sized,
<W as TryInto<i64>>::Error: Sized,
<W as TryInto<i32>>::Error: Sized,
<W as TryInto<i16>>::Error: Sized,
<W as TryInto<i8>>::Error: Sized,
<W as TryFrom<usize>>::Error: Sized,
<W as TryFrom<u128>>::Error: Sized,
<W as TryFrom<u64>>::Error: Sized,
<W as TryFrom<u32>>::Error: Sized,
<W as TryFrom<u16>>::Error: Sized,
<W as TryFrom<u8>>::Error: Sized,
<W as TryFrom<isize>>::Error: Sized,
<W as TryFrom<i128>>::Error: Sized,
<W as TryFrom<i64>>::Error: Sized,
<W as TryFrom<i32>>::Error: Sized,
<W as TryFrom<i16>>::Error: Sized,
<W as TryFrom<i8>>::Error: Sized,
<W as FromStr>::Err: Sized,
B: Sync,
impl<W, B> Unpin for MemWordWriterVec<W, B>where
<W as TryInto<usize>>::Error: Sized,
<W as TryInto<u128>>::Error: Sized,
<W as TryInto<u64>>::Error: Sized,
<W as TryInto<u32>>::Error: Sized,
<W as TryInto<u16>>::Error: Sized,
<W as TryInto<u8>>::Error: Sized,
<W as TryInto<isize>>::Error: Sized,
<W as TryInto<i128>>::Error: Sized,
<W as TryInto<i64>>::Error: Sized,
<W as TryInto<i32>>::Error: Sized,
<W as TryInto<i16>>::Error: Sized,
<W as TryInto<i8>>::Error: Sized,
<W as TryFrom<usize>>::Error: Sized,
<W as TryFrom<u128>>::Error: Sized,
<W as TryFrom<u64>>::Error: Sized,
<W as TryFrom<u32>>::Error: Sized,
<W as TryFrom<u16>>::Error: Sized,
<W as TryFrom<u8>>::Error: Sized,
<W as TryFrom<isize>>::Error: Sized,
<W as TryFrom<i128>>::Error: Sized,
<W as TryFrom<i64>>::Error: Sized,
<W as TryFrom<i32>>::Error: Sized,
<W as TryFrom<i16>>::Error: Sized,
<W as TryFrom<i8>>::Error: Sized,
<W as FromStr>::Err: Sized,
B: Unpin,
impl<W, B> UnsafeUnpin for MemWordWriterVec<W, B>where
<W as TryInto<usize>>::Error: Sized,
<W as TryInto<u128>>::Error: Sized,
<W as TryInto<u64>>::Error: Sized,
<W as TryInto<u32>>::Error: Sized,
<W as TryInto<u16>>::Error: Sized,
<W as TryInto<u8>>::Error: Sized,
<W as TryInto<isize>>::Error: Sized,
<W as TryInto<i128>>::Error: Sized,
<W as TryInto<i64>>::Error: Sized,
<W as TryInto<i32>>::Error: Sized,
<W as TryInto<i16>>::Error: Sized,
<W as TryInto<i8>>::Error: Sized,
<W as TryFrom<usize>>::Error: Sized,
<W as TryFrom<u128>>::Error: Sized,
<W as TryFrom<u64>>::Error: Sized,
<W as TryFrom<u32>>::Error: Sized,
<W as TryFrom<u16>>::Error: Sized,
<W as TryFrom<u8>>::Error: Sized,
<W as TryFrom<isize>>::Error: Sized,
<W as TryFrom<i128>>::Error: Sized,
<W as TryFrom<i64>>::Error: Sized,
<W as TryFrom<i32>>::Error: Sized,
<W as TryFrom<i16>>::Error: Sized,
<W as TryFrom<i8>>::Error: Sized,
<W as FromStr>::Err: Sized,
B: UnsafeUnpin,
impl<W, B> UnwindSafe for MemWordWriterVec<W, B>where
<W as TryInto<usize>>::Error: Sized,
<W as TryInto<u128>>::Error: Sized,
<W as TryInto<u64>>::Error: Sized,
<W as TryInto<u32>>::Error: Sized,
<W as TryInto<u16>>::Error: Sized,
<W as TryInto<u8>>::Error: Sized,
<W as TryInto<isize>>::Error: Sized,
<W as TryInto<i128>>::Error: Sized,
<W as TryInto<i64>>::Error: Sized,
<W as TryInto<i32>>::Error: Sized,
<W as TryInto<i16>>::Error: Sized,
<W as TryInto<i8>>::Error: Sized,
<W as TryFrom<usize>>::Error: Sized,
<W as TryFrom<u128>>::Error: Sized,
<W as TryFrom<u64>>::Error: Sized,
<W as TryFrom<u32>>::Error: Sized,
<W as TryFrom<u16>>::Error: Sized,
<W as TryFrom<u8>>::Error: Sized,
<W as TryFrom<isize>>::Error: Sized,
<W as TryFrom<i128>>::Error: Sized,
<W as TryFrom<i64>>::Error: Sized,
<W as TryFrom<i32>>::Error: Sized,
<W as TryFrom<i16>>::Error: Sized,
<W as TryFrom<i8>>::Error: Sized,
<W as FromStr>::Err: Sized,
B: 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> 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 info 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 info 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 info 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 info about the structure memory
usage as mem_dbg_on, but expanding only up to
max_depth levels of nested structures.