junobuild_satellite/random/
runtime.rs

1use crate::memory::state::services::with_runtime_rng_mut;
2use rand::Rng;
3
4/// Generates a random `i32` number.
5///
6/// # Returns
7///
8/// - `Ok(i32)` if the random number generator is available.
9/// - `Err(String)` if the generator has not been initialized.
10///
11/// # Example
12///
13/// ```rust
14/// let result = random();
15/// match result {
16///     Ok(num) => println!("Generated random number: {}", num),
17///     Err(err) => eprintln!("Error: {}", err),
18/// }
19/// ```
20pub fn random() -> Result<i32, String> {
21    with_runtime_rng_mut(|rng| match rng {
22        None => Err("The random number generator has not been initialized.".to_string()),
23        Some(rng) => Ok(rng.random()),
24    })
25}