2 个版本
0.2.1 | 2024 年 2 月 23 日 |
---|---|
0.2.0 | 2020 年 8 月 30 日 |
0.0.1 |
|
在 操作系统 中排名第 120
每月下载量 27
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
中获取。