Struct soroban_sdk::prng::Prng
source · pub struct Prng { /* private fields */ }
Expand description
Prng is a pseudo-random generator.
Warning
The PRNG is unsuitable for generating secrets or use in applications with low risk tolerance, see the module-level comment.
Implementations§
source§impl Prng
impl Prng
pub fn env(&self) -> &Env
sourcepub fn seed(&self, seed: Bytes)
pub fn seed(&self, seed: Bytes)
Reseeds the PRNG with the provided value.
The seed is combined with the seed assigned to the contract invocation.
Warning
The PRNG is unsuitable for generating secrets or use in applications with low risk tolerance, see the module-level comment.
sourcepub fn u64_in_range(&self, r: impl RangeBounds<u64>) -> u64
pub fn u64_in_range(&self, r: impl RangeBounds<u64>) -> u64
Returns a random u64 in the range specified.
Panics
If the range is empty.
Warning
The PRNG is unsuitable for generating secrets or use in applications with low risk tolerance, see the module-level comment.
Examples
use soroban_sdk::{Env};
// Get values in the range of 1 to 100, inclusive.
let value = env.prng().u64_in_range(1..=100);
assert_eq!(value, 77);
let value = env.prng().u64_in_range(1..=100);
assert_eq!(value, 66);
let value = env.prng().u64_in_range(1..=100);
assert_eq!(value, 72);
Auto Trait Implementations§
impl !RefUnwindSafe for Prng
impl !Send for Prng
impl !Sync for Prng
impl Unpin for Prng
impl !UnwindSafe for Prng
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T, U, V, E, C> Compare<(T, U, V)> for Cwhere
C: Compare<T, Error = E, Error = E, Error = E> + Compare<U> + Compare<V>,
impl<T, U, V, E, C> Compare<(T, U, V)> for Cwhere
C: Compare<T, Error = E, Error = E, Error = E> + Compare<U> + Compare<V>,
§impl<T, U, V, W, E, C> Compare<(T, U, V, W)> for Cwhere
C: Compare<T, Error = E, Error = E, Error = E, Error = E> + Compare<U> + Compare<V> + Compare<W>,
impl<T, U, V, W, E, C> Compare<(T, U, V, W)> for Cwhere
C: Compare<T, Error = E, Error = E, Error = E, Error = E> + Compare<U> + Compare<V> + Compare<W>,
type Error = E
fn compare( &self, a: &(T, U, V, W), b: &(T, U, V, W) ) -> Result<Ordering, <C as Compare<(T, U, V, W)>>::Error>
§impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for Cwhere
C: Compare<T, Error = E, Error = E, Error = E, Error = E, Error = E> + Compare<U> + Compare<V> + Compare<W> + Compare<X>,
impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for Cwhere
C: Compare<T, Error = E, Error = E, Error = E, Error = E, Error = E> + Compare<U> + Compare<V> + Compare<W> + Compare<X>,
type Error = E
fn compare( &self, a: &(T, U, V, W, X), b: &(T, U, V, W, X) ) -> Result<Ordering, <C as Compare<(T, U, V, W, X)>>::Error>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.