Prevent write access to faces of Shape

This commit is contained in:
Hanno Braun 2022-03-08 14:00:11 +01:00
parent a932ce5fe8
commit 4d5a279f71
2 changed files with 10 additions and 9 deletions

View File

@ -10,12 +10,11 @@ use super::{
};
/// The faces of a shape
#[derive(Clone, Debug, Eq, PartialEq, Hash, Ord, PartialOrd)]
pub struct Faces {
pub(super) faces: FacesInner,
pub struct Faces<'r> {
pub(super) faces: &'r mut FacesInner,
}
impl Faces {
impl Faces<'_> {
/// Add a face to the shape
pub fn add(&mut self, face: Face) -> Handle<Face> {
self.faces.push(face.clone());
@ -39,7 +38,7 @@ impl Faces {
out: &mut Vec<Triangle<3>>,
debug_info: &mut DebugInfo,
) {
for face in &self.faces {
for face in &*self.faces {
face.triangles(tolerance, out, debug_info);
}
}

View File

@ -29,7 +29,7 @@ pub struct Shape {
vertices: VerticesInner,
cycles: CyclesInner,
faces: Faces,
faces: FacesInner,
}
impl Shape {
@ -43,7 +43,7 @@ impl Shape {
vertices: VerticesInner::new(),
cycles: CyclesInner::new(),
faces: Faces { faces: Vec::new() },
faces: FacesInner::new(),
}
}
@ -83,8 +83,10 @@ impl Shape {
}
/// Access the shape's faces
pub fn faces(&mut self) -> &mut Faces {
&mut self.faces
pub fn faces(&mut self) -> Faces {
Faces {
faces: &mut self.faces,
}
}
}