Struct Alphanumeric
pub struct Alphanumeric;
Sample a u8, uniformly distributed over ASCII letters and numbers:
a-z, A-Z and 0-9.
Example
use RngExt;
use Alphanumeric;
let mut rng = rng;
let chars: String = .map.collect;
println!;
The SampleString trait provides an easier method of generating
a random String, and offers more efficient allocation:
use ;
let string = Alphanumeric.sample_string;
println!;
Passwords
Users sometimes ask whether it is safe to use a string of random characters
as a password. In principle, all RNGs in Rand implementing CryptoRng are
suitable as a source of randomness for generating passwords (if they are
properly seeded), but it is more conservative to only use randomness
directly from the operating system via the getrandom crate, or the
corresponding bindings of a crypto library.
When generating passwords or keys, it is important to consider the threat model and in some cases the memorability of the password. This is out of scope of the Rand project, and therefore we defer to the following references:
Trait Implementations
impl Clone for Alphanumeric
fn clone(&self) -> Alphanumeric
impl Copy for Alphanumeric
impl Debug for Alphanumeric
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Default for Alphanumeric
fn default() -> Alphanumeric
impl Distribution<u8> for Alphanumeric
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> u8
impl SampleString for Alphanumeric
fn append_string<R: Rng + ?Sized>(&self, rng: &mut R, string: &mut String, len: usize)
impl Serialize for Alphanumeric
fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where __S: Serializer,
impl<'de> Deserialize<'de> for Alphanumeric
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where __D: Deserializer<'de>,
Auto Trait Implementations
impl Freeze for Alphanumeric
impl RefUnwindSafe for Alphanumeric
impl Send for Alphanumeric
impl Sync for Alphanumeric
impl Unpin for Alphanumeric
impl UnsafeUnpin for Alphanumeric
impl UnwindSafe for Alphanumeric
Blanket Implementations
impl<T> Any for Alphanumeric
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Alphanumeric
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Alphanumeric
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for Alphanumeric
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> DeserializeOwned for Alphanumeric
where
T: for<'de> Deserialize<'de>,
impl<T> From<T> for Alphanumeric
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for Alphanumeric
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T, U> Into<U> for Alphanumeric
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Alphanumeric
where
U: Into<T>,
type Error = Infallible;fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto<U> for Alphanumeric
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>