Skip to main content

FuncCodeWriter

Struct FuncCodeWriter 

Source
pub struct FuncCodeWriter<E: Endianness, CW: CodesWrite<E> + ?Sized>(/* private fields */);
Expand description

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

This is a more efficient way to pass a StaticCodeWrite to a method, as a FuncCodeWriter 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 FuncCodeWriter than to create a new one.

Implementations§

Source§

impl<E: Endianness, CW: CodesWrite<E> + ?Sized> FuncCodeWriter<E, CW>

Source

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

Returns a new FuncCodeWriter for the given code.

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

§Errors

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

Source

pub const fn new_with_func( write_func: fn(&mut CW, u64) -> Result<usize, <CW as BitWrite<E>>::Error>, ) -> Self

Returns a new FuncCodeWriter for the given function.

Source

pub const fn get_func( &self, ) -> fn(&mut CW, u64) -> Result<usize, <CW as BitWrite<E>>::Error>

Returns the function pointer for the code.

Trait Implementations§

Source§

impl<E: Endianness, CW: CodesWrite<E> + ?Sized> Clone for FuncCodeWriter<E, CW>

Manually implement Clone to avoid the Clone bound on CW 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, CW: Debug + CodesWrite<E> + ?Sized> Debug for FuncCodeWriter<E, CW>

Source§

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

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

impl<E: Endianness, CW: CodesWrite<E> + ?Sized> FlatType for FuncCodeWriter<E, CW>
where fn(&mut CW, u64) -> Result<usize, <CW as BitWrite<E>>::Error>: MemSize + FlatType,

Source§

impl<E: Endianness, CW: CodesWrite<E> + ?Sized> MemDbgImpl for FuncCodeWriter<E, CW>
where fn(&mut CW, u64) -> Result<usize, <CW as BitWrite<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, CW: CodesWrite<E> + ?Sized> MemSize for FuncCodeWriter<E, CW>
where fn(&mut CW, u64) -> Result<usize, <CW as BitWrite<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, CW: CodesWrite<E> + ?Sized> StaticCodeWrite<E, CW> for FuncCodeWriter<E, CW>

Source§

fn write(&self, writer: &mut CW, n: u64) -> Result<usize, CW::Error>

Source§

impl<E: Copy + Endianness, CW: Copy + CodesWrite<E> + ?Sized> Copy for FuncCodeWriter<E, CW>

Auto Trait Implementations§

§

impl<E, CW> Freeze for FuncCodeWriter<E, CW>
where CW: ?Sized,

§

impl<E, CW> RefUnwindSafe for FuncCodeWriter<E, CW>
where CW: ?Sized,

§

impl<E, CW> Send for FuncCodeWriter<E, CW>
where CW: ?Sized,

§

impl<E, CW> Sync for FuncCodeWriter<E, CW>
where CW: ?Sized,

§

impl<E, CW> Unpin for FuncCodeWriter<E, CW>
where CW: ?Sized,

§

impl<E, CW> UnsafeUnpin for FuncCodeWriter<E, CW>
where CW: ?Sized,

§

impl<E, CW> UnwindSafe for FuncCodeWriter<E, CW>
where CW: ?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.