aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLizzy Fleckenstein <eliasfleckenstein@web.de>2023-02-14 23:27:35 +0100
committerLizzy Fleckenstein <eliasfleckenstein@web.de>2023-02-14 23:27:35 +0100
commit75899b8b625db2f048dbaa75a0cb45a67a1bfd75 (patch)
tree45b003df115bec2d17a64207c2a14cc0323c3ba7 /lib
parentc966137cc4b64855f109f7b0eae3327d198b1f1d (diff)
downloadgenerate-random-75899b8b625db2f048dbaa75a0cb45a67a1bfd75.tar.xz
Add support for Ranges
Diffstat (limited to 'lib')
-rw-r--r--lib/src/lib.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/src/lib.rs b/lib/src/lib.rs
index b25f91e..d8ec04f 100644
--- a/lib/src/lib.rs
+++ b/lib/src/lib.rs
@@ -149,6 +149,41 @@ impl<T: GenerateRandom> GenerateRandom for Box<T> {
}
}
+impl<T: GenerateRandom> GenerateRandom for std::ops::Range<T> {
+ fn generate_random<R: rand::Rng + ?Sized>(rng: &mut R) -> Self {
+ T::generate_random(rng)..T::generate_random(rng)
+ }
+}
+
+impl<T: GenerateRandom> GenerateRandom for std::ops::RangeFrom<T> {
+ fn generate_random<R: rand::Rng + ?Sized>(rng: &mut R) -> Self {
+ T::generate_random(rng)..
+ }
+}
+
+impl GenerateRandom for std::ops::RangeFull {
+ fn generate_random<R: rand::Rng + ?Sized>(_rng: &mut R) -> Self {
+ ..
+ }
+}
+
+impl<T: GenerateRandom> GenerateRandom for std::ops::RangeInclusive<T> {
+ fn generate_random<R: rand::Rng + ?Sized>(rng: &mut R) -> Self {
+ T::generate_random(rng)..=T::generate_random(rng)
+ }
+}
+
+impl<T: GenerateRandom> GenerateRandom for std::ops::RangeTo<T> {
+ fn generate_random<R: rand::Rng + ?Sized>(rng: &mut R) -> Self {
+ ..T::generate_random(rng)
+ }
+}
+impl<T: GenerateRandom> GenerateRandom for std::ops::RangeToInclusive<T> {
+ fn generate_random<R: rand::Rng + ?Sized>(rng: &mut R) -> Self {
+ ..=T::generate_random(rng)
+ }
+}
+
#[cfg(feature = "enumset")]
impl<T: enumset::EnumSetType + GenerateRandom> GenerateRandom for enumset::EnumSet<T> {
fn generate_random<R: rand::Rng + ?Sized>(rng: &mut R) -> Self {