Skip to main content

FuncCodeReader

Struct FuncCodeReader 

Source
pub struct FuncCodeReader<E: Endianness, CR: CodesRead<E> + ?Sized>(/* private fields */);
Expand description

A newtype containing a function pointer dispatching the read method for a code.

This is a more efficient way to pass a StaticCodeRead to a method, as a FuncCodeReader does not need to do a runtime test to dispatch the correct code.

Instances can be obtained by calling the new method with a variant of the Codes enum, or by calling the new_with_func method with a function pointer.

Note that since selection of the code happens in the new method, it is more efficient to clone a FuncCodeReader than to create a new one.

Implementations§

Source§

impl<E: Endianness, CR: CodesRead<E> + ?Sized> FuncCodeReader<E, CR>

Source

pub const fn new(code: Codes) -> Result<Self, DispatchError>

Returns a new FuncCodeReader for the given code.

The code is canonicalized before the lookup, so equivalent codes yield the same reader.

§Errors

The method will return an error if there is no constant for the given code in FuncCodeReader.

Source

pub const fn new_with_func( read_func: fn(&mut CR) -> Result<u64, <CR as BitRead<E>>::Error>, ) -> Self

Returns a new FuncCodeReader for the given function.

Source

pub const fn get_func( &self, ) -> fn(&mut CR) -> Result<u64, <CR as BitRead<E>>::Error>

Returns the function pointer for the code.

Trait Implementations§

Source§

impl<E: Endianness, CR: CodesRead<E> + ?Sized> Clone for FuncCodeReader<E, CR>

Manually implement Clone to avoid the Clone bound on CR and E

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<E: Debug + Endianness, CR: Debug + CodesRead<E> + ?Sized> Debug for FuncCodeReader<E, CR>

Source§

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

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

impl<E: Endianness, CR: CodesRead<E> + ?Sized> FlatType for FuncCodeReader<E, CR>
where fn(&mut CR) -> Result<u64, <CR as BitRead<E>>::Error>: MemSize + FlatType,

Source§

impl<E: Endianness, CR: CodesRead<E> + ?Sized> MemDbgImpl for FuncCodeReader<E, CR>
where fn(&mut CR) -> Result<u64, <CR as BitRead<E>>::Error>: 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

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>

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<E: Endianness, CR: CodesRead<E> + ?Sized> MemSize for FuncCodeReader<E, CR>
where fn(&mut CR) -> Result<u64, <CR as BitRead<E>>::Error>: MemSize + FlatType,

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<E: Endianness, CR: CodesRead<E> + ?Sized> StaticCodeRead<E, CR> for FuncCodeReader<E, CR>

Source§

fn read(&self, reader: &mut CR) -> Result<u64, CR::Error>

Source§

impl<E: Copy + Endianness, CR: Copy + CodesRead<E> + ?Sized> Copy for FuncCodeReader<E, CR>

Auto Trait Implementations§

§

impl<E, CR> Freeze for FuncCodeReader<E, CR>
where CR: ?Sized,

§

impl<E, CR> RefUnwindSafe for FuncCodeReader<E, CR>
where CR: ?Sized,

§

impl<E, CR> Send for FuncCodeReader<E, CR>
where CR: ?Sized,

§

impl<E, CR> Sync for FuncCodeReader<E, CR>
where CR: ?Sized,

§

impl<E, CR> Unpin for FuncCodeReader<E, CR>
where CR: ?Sized,

§

impl<E, CR> UnsafeUnpin for FuncCodeReader<E, CR>
where CR: ?Sized,

§

impl<E, CR> UnwindSafe for FuncCodeReader<E, CR>
where CR: ?Sized,

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