#random-string #random #operating-systems

osrand

来自操作系统界面的随机数

2 个版本

0.2.1 2024 年 2 月 23 日
0.2.0 2020 年 8 月 30 日
0.0.1 2020 年 6 月 25 日

操作系统 中排名第 120

每月下载量 27

BSD-2-Clause

14KB
230

内容

原理

在 Rust 生态系统中有很多好的随机数生成器包。这个包的目的是通过使用类 Unix 操作系统上操作系统提供的 RNG 来提供非常简单的功能,无需依赖除 std 之外的任何内容。这个包的另一个目标是提供一个简单的接口来创建随机字符串 - 这是其他随机相关包中令人惊讶的缺乏的功能。

如果你希望使用这个包,可能是因为:

  • 你的应用程序在启动过程中不需要大量的随机数据
  • 你希望尽量保持应用程序依赖图的小型化
  • 你只关心支持类 Unix 操作系统

用法

# Cargo.toml
osrand = "0.1"
use osrand::{BufRng, Flags, RandomString};

fn main() {
    // Get a one-off random u32
    let n = osrand::random_u32().unwrap();
    println!("Number: {n}");

    // Get a random u64 from the reusable `BufRng` struct
    let mut rng = BufRng::new().unwrap();
    let n = rng.get_u64().unwrap();
    println!("Number: {n}");

    // Get a random String using the full dictionary
    let mut rs = RandomString::new(&[]).unwrap();
    let s = rs.gen(8).unwrap();
    assert_eq!(s.len(), 8);
    println!("String: {s}");

    // Get the dictionary used by the `RandomString` generator
    let dict = rs.get_dictionary().clone();
    println!("Dictionary: {dict:?}");

    // Change the dictionary to only alphanumeric
    rs.set_dictionary(Flags::alphanumeric());
    println!("Dictionary: {:?}", rs.get_dictionary());

    // Convert the previous `BufRng` to a `RandomString` with the full dictionary
    let mut rs_new: RandomString = rng.into();

    // Convert the previous `RandomString` to a `BufRng`
    let mut rng_new: BufRng = rs.into();
}

功能

默认情况下使用 /dev/urandom,因为它比从 /dev/random 中获取更节省资源。如果你想使用更安全的 RNG,可以通过构建时使用 --no-default-features 或禁用 urandom 功能来从 /dev/random 中获取。

无运行时依赖

功能