]> git.lizzy.rs Git - generate-random.git/commitdiff
Add support for Ranges
authorLizzy Fleckenstein <eliasfleckenstein@web.de>
Tue, 14 Feb 2023 22:27:35 +0000 (23:27 +0100)
committerLizzy Fleckenstein <eliasfleckenstein@web.de>
Tue, 14 Feb 2023 22:27:35 +0000 (23:27 +0100)
lib/src/lib.rs

index b25f91e81ee8ab41ab8720bd45ee2db779b82d49..d8ec04f22eaec2c58650387d7837b628fec8d646 100644 (file)
@@ -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 {