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>
impl<W: Word, B> WordAdapter<W, B>
Sourcepub const fn new(backend: B) -> Self
pub const fn new(backend: B) -> Self
Creates a new WordAdapter.
Sourcepub fn into_inner(self) -> B
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>
impl<W: Clone + Word, B: Clone> Clone for WordAdapter<W, B>
Source§fn clone(&self) -> WordAdapter<W, B>
fn clone(&self) -> WordAdapter<W, B>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<W: Word, B> FlatType for WordAdapter<W, B>
impl<W: Word, B> FlatType for WordAdapter<W, B>
Source§impl<W: Word, B> MemDbgImpl for WordAdapter<W, B>
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
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
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>
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>
Source§impl<W: Word, B> MemSize for WordAdapter<W, B>
impl<W: Word, B> MemSize for WordAdapter<W, B>
Source§impl<W: Word, B: Read> WordRead for WordAdapter<W, B>
impl<W: Word, B: Read> WordRead for WordAdapter<W, B>
type Error = Error
Source§type Word = W
type Word = W
WordRead::read_word).Source§fn read_word(&mut self) -> Result<W, Self::Error>
fn read_word(&mut self) -> Result<W, Self::Error>
Source§fn read_word_opt(&mut self) -> Option<Self::Word>
fn read_word_opt(&mut self) -> Option<Self::Word>
None otherwise (in particular, at
the end of the stream, or when availability cannot be determined
without blocking or performing I/O). Read moreAuto 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> 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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>
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>
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.