1use std::ops::Range;
2mod leaf_sample;
3use leaf_sample::GoldenSerie;
4
5pub fn range_into<T: Into<f64> + Copy>(range: Range<T>) -> Range<f64> {
6 return Range {
7 start: range.start.into(),
8 end: range.end.into(),
9 };
10}
11
12macro_rules! count {
14 () => { 0 };
15 ($a:expr) => { 1 };
16 ($odd:expr, $($a:expr, $b:expr),*) => {
17 (count!($($a)*) << 1) | 1
18 };
19 ($($a:expr, $even:expr)*) => {
20 (count!($($a)*) << 1)
21 };
22}
23
24#[macro_export]
25macro_rules! leaf_sample {
26 ( $( $x:expr ),* ) => {
27 GoldenSerie::new([$(range_into($x)),*])
28 }
29}
30
31#[cfg(test)]
32mod tests {
33 use crate::*;
34
35 #[test]
36 fn macro_works() {
37 for [hue, value] in leaf_sample!(0..360, 0.6..1.0).take(10) {
38 println!("{hue}, {value}");
39 }
40 }
41}