Struct const_hex::Buffer

source ·
#[repr(C)]
pub struct Buffer<const N: usize, const PREFIX: bool = false> { /* private fields */ }
Expand description

A correctly sized stack allocation for the formatted bytes to be written into.

N is the amount of bytes of the input, while PREFIX specifies whether the “0x” prefix is prepended to the output.

Note that this buffer will contain only the prefix, if specified, and null (‘\0’) bytes before any formatting is done.

§Examples

let mut buffer = const_hex::Buffer::<4>::new();
let printed = buffer.format(b"1234");
assert_eq!(printed, "31323334");

Implementations§

source§

impl<const N: usize, const PREFIX: bool> Buffer<N, PREFIX>

source

pub const LEN: usize = _

The length of the buffer in bytes.

source

pub const fn new() -> Self

This is a cheap operation; you don’t need to worry about reusing buffers for efficiency.

source

pub const fn const_format(self, array: &[u8; N]) -> Self

Print an array of bytes into this buffer.

source

pub const fn const_format_upper(self, array: &[u8; N]) -> Self

Print an array of bytes into this buffer.

source

pub fn format(&mut self, array: &[u8; N]) -> &mut str

Print an array of bytes into this buffer and return a reference to its lower hex string representation within the buffer.

source

pub fn format_upper(&mut self, array: &[u8; N]) -> &mut str

Print an array of bytes into this buffer and return a reference to its upper hex string representation within the buffer.

source

pub fn format_slice<T: AsRef<[u8]>>(&mut self, slice: T) -> &mut str

Print a slice of bytes into this buffer and return a reference to its lower hex string representation within the buffer.

§Panics

If the slice is not exactly N bytes long.

source

pub fn format_slice_upper<T: AsRef<[u8]>>(&mut self, slice: T) -> &mut str

Print a slice of bytes into this buffer and return a reference to its upper hex string representation within the buffer.

§Panics

If the slice is not exactly N bytes long.

source

pub fn to_string(&self) -> String

Available on crate feature alloc only.

Copies self into a new owned String.

source

pub const fn as_str(&self) -> &str

Returns a reference to the underlying bytes casted to a string slice.

source

pub fn as_mut_str(&mut self) -> &mut str

Returns a mutable reference to the underlying bytes casted to a string slice.

source

pub fn to_vec(&self) -> Vec<u8>

Available on crate feature alloc only.

Copies self into a new Vec.

source

pub const fn as_byte_array<const LEN: usize>(&self) -> &[u8; LEN]

Returns a reference the underlying stack-allocated byte array.

§Panics

If LEN does not equal Self::LEN.

This is panic is evaluated at compile-time if the nightly feature is enabled, as inline const blocks are currently unstable.

See Rust tracking issue #76001.

source

pub fn as_mut_byte_array<const LEN: usize>(&mut self) -> &mut [u8; LEN]

Returns a mutable reference the underlying stack-allocated byte array.

§Panics

If LEN does not equal Self::LEN.

See as_byte_array for more information.

source

pub const fn as_bytes(&self) -> &[u8]

Returns a reference to the underlying bytes.

source

pub unsafe fn as_mut_bytes(&mut self) -> &mut [u8]

Returns a mutable reference to the underlying bytes.

§Safety

The caller must ensure that the content of the slice is valid UTF-8 before the borrow ends and the underlying str is used.

Use of a str whose contents are not valid UTF-8 is undefined behavior.

source

pub unsafe fn buffer(&mut self) -> &mut [u8]

Returns a mutable reference to the underlying buffer, excluding the prefix.

§Safety

See as_mut_bytes.

source

pub const fn as_ptr(&self) -> *const u8

Returns a raw pointer to the buffer.

The caller must ensure that the buffer outlives the pointer this function returns, or else it will end up pointing to garbage.

source

pub fn as_mut_ptr(&mut self) -> *mut u8

Returns an unsafe mutable pointer to the slice’s buffer.

The caller must ensure that the slice outlives the pointer this function returns, or else it will end up pointing to garbage.

Trait Implementations§

source§

impl<const N: usize, const PREFIX: bool> Clone for Buffer<N, PREFIX>

source§

fn clone(&self) -> Buffer<N, PREFIX>

Returns a copy 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<const N: usize, const PREFIX: bool> Debug for Buffer<N, PREFIX>

source§

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

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

impl<const N: usize, const PREFIX: bool> Default for Buffer<N, PREFIX>

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<const N: usize, const PREFIX: bool> RefUnwindSafe for Buffer<N, PREFIX>

§

impl<const N: usize, const PREFIX: bool> Send for Buffer<N, PREFIX>

§

impl<const N: usize, const PREFIX: bool> Sync for Buffer<N, PREFIX>

§

impl<const N: usize, const PREFIX: bool> Unpin for Buffer<N, PREFIX>

§

impl<const N: usize, const PREFIX: bool> UnwindSafe for Buffer<N, PREFIX>

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

§

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

§

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

§

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V