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 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>
impl<E: Endianness, CR: CodesRead<E> + ?Sized> FuncCodeReader<E, CR>
Sourcepub fn new(code: Codes) -> Result<Self>
pub fn new(code: Codes) -> Result<Self>
Return a new FuncCodeReader
for the given code.
§Errors
The method will return an error if there is no constant
for the given code in FuncCodeReader
.
Sourcepub fn new_with_func(
read_func: fn(&mut CR) -> Result<u64, <CR as BitRead<E>>::Error>,
) -> Self
pub fn new_with_func( read_func: fn(&mut CR) -> Result<u64, <CR as BitRead<E>>::Error>, ) -> Self
Return a new FuncCodeReader
for the given function.
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
impl<E: Endianness, CR: CodesRead<E> + ?Sized> Clone for FuncCodeReader<E, CR>
manually implement Clone to avoid the Clone bound on CR and E