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

View File

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