Skip to main content

faker_rust/default/
number.rs

1//! Number generator - generates random numbers
2
3use crate::config::FakerConfig;
4
5/// Generate a random number as a string
6pub fn number() -> String {
7    let config = FakerConfig::current();
8    config.rand_range(0, 10_000_000).to_string()
9}
10
11/// Generate a random number within a range (inclusive)
12pub fn between(min: i64, max: i64) -> i64 {
13    let config = FakerConfig::current();
14    config.rand_range(min as u32, max as u32) as i64
15}
16
17/// Generate a random number within a range (u32)
18pub fn between_u32(min: u32, max: u32) -> u32 {
19    let config = FakerConfig::current();
20    config.rand_range(min, max)
21}
22
23/// Generate a random decimal number
24pub fn decimal(l_digits: i32, r_digits: i32) -> String {
25    let config = FakerConfig::current();
26    let left: u32 = config.rand_range(0, 10_u32.pow(l_digits as u32));
27    let right: u32 = config.rand_range(0, 10_u32.pow(r_digits as u32));
28    format!("{}.{:0>width$}", left, right, width = r_digits as usize)
29}
30
31/// Generate a random number within a range and convert to string
32pub fn number_range(min: u32, max: u32) -> String {
33    between_u32(min, max).to_string()
34}
35
36/// Generate a random hexadecimal string
37pub fn hexify(upper: bool) -> String {
38    let config = FakerConfig::current();
39    let chars: &[char] = if upper {
40        &crate::base::HEX_UPPER
41    } else {
42        &crate::base::HEX_LOWER
43    };
44    (0..10).map(|_| config.rand_char(chars)).collect()
45}
46
47/// Generate a random number between 0 and 999
48pub fn number_to_ruby() -> i64 {
49    between(0, 999)
50}