3 个不稳定版本

使用旧的 Rust 2015

0.2.0 2018年5月25日
0.1.1 2018年1月14日
0.1.0 2018年1月12日

#15#assert-eq


被用于 irc-bot

Apache-2.0

17KB
297

rando

一个用于随机顺序迭代的 Rust 库。

请参阅 Docs.rs 上的文档。

本软件采用 Apache 许可证,版本 2.0 许可。

构建

大多数用户应使用 Rust 的构建工具 Cargo 来构建此软件

$ cargo build
$ cargo check
$ cargo test
$ # Etc.

Linux 发行版 NixOS 的用户可能更喜欢使用提供的 Makefile,它封装了工具 nix-shell

$ make build
$ make check
$ make test
$ # Etc.

lib.rs:

一个随机顺序迭代的库。

对于一些常见的集合类型,该库实现了一个 trait Rando,该 trait 提供了一个方法 rand_iter,可以调用该方法创建一个 RandIter,这是一个用于在随机顺序上遍历集合的迭代器类型。

示例

use rand::EntropyRng;
use rand::SeedableRng;
use rand::StdRng;
use rando::Rando;
use rando::assert_eq_up_to_order;

assert_eq_up_to_order(&[1, 2, 3], [1, 2, 3].rand_iter());

assert_eq_up_to_order(&['a', 'b', 'c'], ['c', 'a', 'b'].rand_iter());

let primes = [2, 3, 5, 7, 11];
let mut p2 = Vec::new();

primes.rand_iter().for_each(|n| p2.push(n));

assert_eq_up_to_order(&primes, p2);

// These random number generators have the same seeds...
let rng_1 = StdRng::from_rng(EntropyRng::new())?;
let rng_2 = rng_1.clone();

// ...so `RandIter`s using them should iterate in the same order.
assert_eq!(
    primes.rand_iter().with_rng(rng_1).collect::<Vec<_>>(),
    primes.rand_iter().with_rng(rng_2).collect::<Vec<_>>()
);

依赖项

~575KB