macro_toolset::string_v2::rand

Struct RandHexStr

Source
pub struct RandHexStr<const L: usize = 16, const RP: usize = 1, const LP: usize = 0>;
Expand description

Randon hex-like string, with fix length.

For better performance, the underlying random number is generated by xorshift algorithm then converted to hex string with NumStr.

By default, the length is 16.

§Generic Parameters

  • L: The length of the string. Max 16 (u64).
  • RP: Repeat L for RP times.
  • LP: Lefted length. Max 16.

For example, if you need a string with length 56, you may specify L as 16, RP as 56 / 16 = 3, and LP as 56 % 16 = 8.

Since #![feature(generic_const_exprs)] is not stable, we have to make use of these complex const generics.

Notice: will check if params are valid when you push this to a string, or panic in debug mode, work normally but slower in release mode.

Implementations§

Source§

impl RandHexStr

Source

pub const fn new_default() -> Self

Create a new RandHexStr and generate simple random hex-like string with length 16 (default).

§Example
let random_str = RandHexStr::new_default().to_string_ext();
assert_eq!(random_str.len(), 16);
Source§

impl<const L: usize, const RP: usize, const LP: usize> RandHexStr<L, RP, LP>

Source

pub const fn new() -> Self

Create a new RandStr and generate random hex-like string with length setting by L, RP, LP.

§Example
let random_str = RandHexStr::<16, 3, 8>::new().to_string_ext();
assert_eq!(random_str.len(), 56);
Source

pub const fn with_l<const NL: usize>(self) -> RandHexStr<NL, RP, LP>

Set L.

You may prefer RandHexStr::<L, RP, LP>::new.

Source

pub const fn with_rp<const NRP: usize>(self) -> RandHexStr<L, NRP, LP>

Set RP.

You may prefer RandHexStr::<L, RP, LP>::new.

Source

pub const fn with_lp<const NLP: usize>(self) -> RandHexStr<L, RP, NLP>

Set LP.

You may prefer RandHexStr::<L, RP, LP>::new.

Trait Implementations§

Source§

impl<const L: usize, const RP: usize, const LP: usize> Clone for RandHexStr<L, RP, LP>

Source§

fn clone(&self) -> RandHexStr<L, RP, LP>

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 L: usize, const RP: usize, const LP: usize> Debug for RandHexStr<L, RP, LP>

Source§

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

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

impl<const L: usize, const RP: usize, const LP: usize> Default for RandHexStr<L, RP, LP>

Source§

fn default() -> RandHexStr<L, RP, LP>

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

impl<const L: usize, const RP: usize, const LP: usize> StringExtT for RandHexStr<L, RP, LP>

Source§

fn with_prefix<P: StringExtT + Copy>(self, prefix: P) -> impl StringExtT

With prefix.
Source§

fn with_suffix<S: StringExtT + Copy>(self, suffix: S) -> impl StringExtT

With suffix.
Source§

fn to_string_ext(self) -> String

Encode the value to the string.
Source§

fn to_string_ext_with_separator(self, separator: &str) -> String

Encode the value(s) to the string with separator. Read more
Source§

impl<const L: usize, const RP: usize, const LP: usize> StringT for RandHexStr<L, RP, LP>

Source§

fn encode_to_buf(self, string: &mut Vec<u8>)

Push the value to the string (the underlying Vec<u8>).
Source§

fn encode_to_buf_with_separator(self, string: &mut Vec<u8>, separator: &str)

Push the value to the string (the underlying Vec<u8>) with a separator. Read more
Source§

fn encode_to_bytes_buf(self, string: &mut BytesMut)

Push the value to the string (the underlying bytes::BytesMut).
Source§

fn encode_to_bytes_buf_with_separator( self, string: &mut BytesMut, separator: &str, )

Push the value to the string (the underlying bytes::BytesMut) with a separator. Read more
Source§

impl<const L: usize, const RP: usize, const LP: usize> Copy for RandHexStr<L, RP, LP>

Auto Trait Implementations§

§

impl<const L: usize, const RP: usize, const LP: usize> Freeze for RandHexStr<L, RP, LP>

§

impl<const L: usize, const RP: usize, const LP: usize> RefUnwindSafe for RandHexStr<L, RP, LP>

§

impl<const L: usize, const RP: usize, const LP: usize> Send for RandHexStr<L, RP, LP>

§

impl<const L: usize, const RP: usize, const LP: usize> Sync for RandHexStr<L, RP, LP>

§

impl<const L: usize, const RP: usize, const LP: usize> Unpin for RandHexStr<L, RP, LP>

§

impl<const L: usize, const RP: usize, const LP: usize> UnwindSafe for RandHexStr<L, RP, LP>

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, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T