rand_functors/
random_variable_ranges.rs1use core::ops::{Range, RangeInclusive};
2
3use crate::RandomVariableRange;
4
5macro_rules! impl_random_variable_range_for_range {
8 ($t:ty) => {
9 impl RandomVariableRange<$t> for Range<$t> {
10 #[inline]
11 fn sample_space(&self) -> impl Iterator<Item = $t> {
12 self.clone()
13 }
14 }
15 };
16}
17
18macro_rules! impl_random_variable_range_for_range_inclusive {
21 ($t:ty) => {
22 impl RandomVariableRange<$t> for RangeInclusive<$t> {
23 #[inline]
24 fn sample_space(&self) -> impl Iterator<Item = $t> {
25 self.clone()
26 }
27 }
28 };
29}
30
31impl_random_variable_range_for_range!(u8);
32impl_random_variable_range_for_range!(u16);
33impl_random_variable_range_for_range!(u32);
34impl_random_variable_range_for_range!(u64);
35impl_random_variable_range_for_range!(u128);
36
37impl_random_variable_range_for_range!(i8);
38impl_random_variable_range_for_range!(i16);
39impl_random_variable_range_for_range!(i32);
40impl_random_variable_range_for_range!(i64);
41impl_random_variable_range_for_range!(i128);
42
43impl_random_variable_range_for_range_inclusive!(u8);
44impl_random_variable_range_for_range_inclusive!(u16);
45impl_random_variable_range_for_range_inclusive!(u32);
46impl_random_variable_range_for_range_inclusive!(u64);
47impl_random_variable_range_for_range_inclusive!(u128);
48
49impl_random_variable_range_for_range_inclusive!(i8);
50impl_random_variable_range_for_range_inclusive!(i16);
51impl_random_variable_range_for_range_inclusive!(i32);
52impl_random_variable_range_for_range_inclusive!(i64);
53impl_random_variable_range_for_range_inclusive!(i128);