32 lines
580 B
Rust
32 lines
580 B
Rust
|
use crate::Transformers;
|
||
|
use crate::point::Point;
|
||
|
|
||
|
/// Replicate
|
||
|
|
||
|
#[allow(dead_code)]
|
||
|
#[derive(Debug,Clone,Copy)]
|
||
|
pub enum Replicate {
|
||
|
Until(usize),
|
||
|
Times(usize)
|
||
|
}
|
||
|
|
||
|
impl Transformers for Replicate {
|
||
|
fn apply(&self, point_list: &[Point]) -> Vec<Point> {
|
||
|
let mut point_list2 = vec![];
|
||
|
match self {
|
||
|
Replicate::Until(n) => {
|
||
|
while point_list2.len() < *n {
|
||
|
point_list2.append(&mut point_list.to_vec());
|
||
|
}
|
||
|
},
|
||
|
Replicate::Times(n) => {
|
||
|
for _ in 0..*n {
|
||
|
point_list2.append(&mut point_list.to_vec());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
point_list2
|
||
|
}
|
||
|
}
|
||
|
|