Skip to main content

MemWordWriterVec

Struct MemWordWriterVec 

Source
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>

Source

pub const fn new(data: B) -> Self

Creates a new MemWordWriterVec from a vector.

Source

pub fn len(&self) -> usize

Returns the number of words in the underlying vector.

Source

pub fn is_empty(&self) -> bool

Returns true if the underlying vector is empty.

Source

pub fn into_inner(self) -> B

Consumes this writer and returns the underlying data.

Trait Implementations§

Source§

impl<W: Debug + Word, B: Debug> Debug for MemWordWriterVec<W, B>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<W: Default + Word, B: Default> Default for MemWordWriterVec<W, B>

Source§

fn default() -> MemWordWriterVec<W, B>

Returns the “default value” for a type. Read more
Source§

impl<W: Word, B> FlatType for MemWordWriterVec<W, B>

Source§

type Flat = False

Whether the type is flat (True) or not (False).
Source§

impl<W: Word, B> MemDbgImpl for MemWordWriterVec<W, B>

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

Recursively displays the fields of self below the current line. Read more
Source§

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>

Internal implementation for depth display. Read more
Source§

impl<W: Word, B> MemSize for MemWordWriterVec<W, B>

Source§

fn mem_size_rec( &self, _memsize_flags: SizeFlags, _memsize_refs: &mut HashMap<usize, usize>, ) -> usize

Recursive implementation that tracks visited references for deduplication. Read more
Source§

fn mem_size(&self, flags: SizeFlags) -> usize

Returns the (recursively computed) overall memory size of the structure in bytes.
Source§

impl<W: PartialEq + Word, B: PartialEq> PartialEq for MemWordWriterVec<W, B>

Source§

fn eq(&self, other: &MemWordWriterVec<W, B>) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

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.
Source§

type Error = WordError

Source§

type Word = W

The word type (the type of the result of WordRead::read_word).
Source§

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>

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 more
Source§

impl<W: Word, B: AsRef<Vec<W>>> WordSeek for MemWordWriterVec<W, B>

Available on crate feature alloc only.
Source§

type Error = WordError

Source§

fn word_pos(&mut self) -> Result<u64, WordError>

Gets the current position in words from the start of the stream. Read more
Source§

fn set_word_pos(&mut self, word_index: u64) -> Result<(), WordError>

Sets the current position in words from the start of the stream to word_pos.
Source§

impl<W: Word, B: AsMut<Vec<W>>> WordWrite for MemWordWriterVec<W, B>

Available on crate feature alloc only.
Source§

type Error = Infallible

Source§

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>

Writes a word and advances the current position.
Source§

fn flush(&mut self) -> Result<(), Self::Error>

Flushes the stream.

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> MemDbg for T
where T: MemDbgImpl,

Source§

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>

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>

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>

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.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.