ArmRng

Struct ArmRng 

Source
pub struct ArmRng;
Expand description

Implement an interface for accessing Arm v8.5 RNG instructions.

An empty struct is used to confirm that the system has the instructions available.

§Example

use aarch64_cpu::asm::random::ArmRng;
if let Some(rng) = ArmRng::new() {
    let rand_num = rng.rndr();
}

Implementations§

Source§

impl ArmRng

Source

pub fn new() -> Option<ArmRng>

Return an empty object that is used to gate calling rndr and rndrss on discovery of the feature so each call doesn’t need to confirm it.

Source

pub fn rndr(&self) -> Option<u64>

Return an random number from the Arm v8.5 RNG.

This returns an option because the instruction can fail (e.g. the entropy is exhausted or the RNG has failed.)

Source

pub fn rndrss(&self) -> Option<u64>

Return a random number from the Arm v8.5 RNG after reseeding it.

This returns an option because the instruction can fail (e.g. the entropy is exhausted or the RNG has failed.)

Trait Implementations§

Source§

impl Clone for ArmRng

Source§

fn clone(&self) -> ArmRng

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 Debug for ArmRng

Source§

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

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

impl Copy for ArmRng

Auto Trait Implementations§

§

impl Freeze for ArmRng

§

impl RefUnwindSafe for ArmRng

§

impl Send for ArmRng

§

impl Sync for ArmRng

§

impl Unpin for ArmRng

§

impl UnwindSafe for ArmRng

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