#random #rand #random-rs

无 std random-trait

Rust 库,用于生成随机泛型类型

2 个版本

使用旧的 Rust 2015

0.1.1 2019 年 8 月 26 日
0.1.0 2019 年 8 月 26 日

#2225算法

Download history 121/week @ 2024-03-13 118/week @ 2024-03-20 118/week @ 2024-03-27 152/week @ 2024-04-03 123/week @ 2024-04-10 135/week @ 2024-04-17 139/week @ 2024-04-24 121/week @ 2024-05-01 109/week @ 2024-05-08 95/week @ 2024-05-15 97/week @ 2024-05-22 112/week @ 2024-05-29 113/week @ 2024-06-05 106/week @ 2024-06-12 199/week @ 2024-06-19 100/week @ 2024-06-26

533 每月下载量
8 个 crate 中使用 (via random-fast-rng)

MIT/Apache

15KB
265

random-trait

Latest version Documentation License

一个 Rust 库 random-trait,它可以帮助以简单便捷的方式生成随机值,同时仍然是一个非常轻量级的库,没有依赖。

这个 crate 是受 rand crate 启发的,但目的是提供一个非常轻量级的库,并支持旧编译器。

用法

将此添加到您的 Cargo.toml

[dependencies]
random-trait = "0.1"

并且对于 Rust 版本 2015,将此添加到您的 crate 根目录

extern crate random_trait;
use random_trait::{GenerateRand, Random};

在 Rust 版本 2018 中,您可以直接这样做

use random_trait::{GenerateRand, Random};

之后,您需要为您随机数源实现 Random
并可选地为您的自定义类型添加 GenerateRand 实现。

示例

use random_trait::{Random, GenerateRand};
 #[derive(Default)]
 struct MyRandomGenerator {
     ctr: usize,
 }

 impl Random for MyRandomGenerator {
     type Error = ();
     fn try_fill_bytes(&mut self, buf: &mut [u8]) -> Result<(), Self::Error> {
         for e in buf.iter_mut() {
             *e = self.ctr as u8;
             self.ctr += 1;
         }
         Ok(())
     }
 }

struct MyStuff {
    a: u64,
    b: char,
}

impl GenerateRand for MyStuff {
    fn generate<R: Random + ?Sized>(rand: &mut R) -> Self {
        MyStuff {a: rand.gen(), b: rand.gen() }
    }
}

fn get_random_stuff() -> MyStuff {
    let mut rand = MyRandomGenerator::default();
    rand.gen()
}

fn get_random_u128() -> u128 {
    let mut rand = MyRandomGenerator::default();
    rand.gen()
}

依赖关系