1#![doc = include_str!("../README.md")]
2use thiserror::Error;
3mod bounded;
4mod generatable;
5mod safe_rand;
6
7pub use bounded::BoundedRng;
8#[doc(inline)]
9pub use generatable::Generatable;
10pub use safe_rand::SafeRand;
11
12pub use rand::{Fill, RngCore, SeedableRng};
14
15pub use vitaminc_random_derives::Generatable;
17
18#[derive(Error, Debug)]
19pub enum RandomError {
20 #[error("Generation failed")]
21 GenerationFailed,
22}
23
24#[cfg(test)]
25mod tests {
26 use super::{Generatable, SafeRand, SeedableRng};
27 use std::num::NonZeroU16;
28
29 #[test]
30 fn test_generate_nonzerou16() -> Result<(), crate::RandomError> {
31 let mut rng = SafeRand::from_entropy();
32 let value: NonZeroU16 = Generatable::random(&mut rng)?;
33 assert_ne!(value.get(), 0);
34 Ok(())
35 }
36}