}
impl WallRegion {
- pub fn new(points: Vec<Point<f64>>) -> Self {
- let index: RegionIndex = 0; // use as param
+ pub fn new(index: RegionIndex, points: Vec<Point<f64>>) -> Self {
let mut edges = Vec::with_capacity(points.len());
for i in 0..points.len() {
fn next(&self, index: EdgeIndex) -> Rc<WallEdge> {
let index = (index + 1) % self.edges.len();
- Rc::clone(&self.edges[index])
+ self.edges[index].clone()
}
fn previous(&self, index: EdgeIndex) -> Rc<WallEdge> {
- let index = (index + self.edges.len() + 1) % self.edges.len();
- Rc::clone(&self.edges[index])
+ let index = (index + self.edges.len() - 1) % self.edges.len();
+ self.edges[index].clone()
}
}
impl Wall {
#[allow(dead_code)]
- pub fn next(self) -> Wall {
+ pub fn next(&self) -> Wall {
Wall {
edge: self.region.next(self.edge.id),
- region: self.region,
+ region: self.region.clone(),
}
}
#[allow(dead_code)]
- pub fn previous(self) -> Wall {
+ pub fn previous(&self) -> Wall {
Wall {
edge: self.region.previous(self.edge.id),
- region: self.region,
+ region: self.region.clone(),
}
}