Skip to main content

WordAdapter

Struct WordAdapter 

Source
pub struct WordAdapter<W: Word, B> { /* private fields */ }
Expand description

An adapter from Read, Write, and Seek, to WordRead, WordWrite, and WordSeek, respectively.

Instances of this struct can be created using WordAdapter::new. They turn every standard (possibly seekable) source or destination of bytes (such as std::fs::File, std::io::BufReader, sockets, etc.) into a source or destination of words.

Note that the length of adapted files or memory regions must be a multiple of the word length; a nonempty partial-word tail will not be readable.

To provide a sensible value after a failed read of a partial word at the end of a file, word_pos will always return the position of the underlying Seek rounded up to the next multiple of the byte size of W. This approach, however, requires that if you adapt a Seek, its current position must be a multiple of the byte size of W, or the results of word_pos will be shifted by the rounding.

Implementations§

Source§

impl<W: Word, B> WordAdapter<W, B>

Source

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

Creates a new WordAdapter.

Source

pub fn into_inner(self) -> B

Consumes this adapter and returns the underlying backend.

Trait Implementations§

Source§

impl<W: Clone + Word, B: Clone> Clone for WordAdapter<W, B>

Source§

fn clone(&self) -> WordAdapter<W, B>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

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

Source§

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

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

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

Source§

type Flat = False

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

impl<W: Word, B> MemDbgImpl for WordAdapter<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 WordAdapter<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: Word, B: Read> WordRead for WordAdapter<W, B>
where W::Bytes: Default + AsMut<[u8]>,

Source§

type Error = Error

Source§

type Word = W

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

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

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: Seek> WordSeek for WordAdapter<W, B>

Source§

type Error = Error

Source§

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

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<(), Error>

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

impl<W: Word, B: Write> WordWrite for WordAdapter<W, B>
where W::Bytes: AsRef<[u8]>,

Source§

type Error = Error

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<(), Error>

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 WordAdapter<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 WordAdapter<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 WordAdapter<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 WordAdapter<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 WordAdapter<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 WordAdapter<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 WordAdapter<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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.