Simplify `UpdateShell::update_face`

This commit is contained in:
Hanno Braun 2023-05-04 12:53:38 +02:00
parent f55069e875
commit 27fadd7d8c
2 changed files with 21 additions and 17 deletions

View File

@ -9,7 +9,7 @@ pub trait UpdateShell {
fn update_face( fn update_face(
&self, &self,
handle: &Handle<Face>, handle: &Handle<Face>,
f: impl FnMut(&Handle<Face>) -> Handle<Face>, replacement: Handle<Face>,
) -> Shell; ) -> Shell;
/// Remove a face from the shell /// Remove a face from the shell
@ -20,11 +20,11 @@ impl UpdateShell for Shell {
fn update_face( fn update_face(
&self, &self,
handle: &Handle<Face>, handle: &Handle<Face>,
mut f: impl FnMut(&Handle<Face>) -> Handle<Face>, replacement: Handle<Face>,
) -> Shell { ) -> Shell {
let faces = self.faces().into_iter().map(|face| { let faces = self.faces().into_iter().map(|face| {
if face.id() == handle.id() { if face.id() == handle.id() {
f(face) replacement.clone()
} else { } else {
face.clone() face.clone()
} }

View File

@ -210,20 +210,24 @@ mod tests {
[[0., 0., 0.], [0., 1., 0.], [1., 0., 0.], [0., 0., 1.]], [[0., 0., 0.], [0., 1., 0.], [1., 0., 0.], [0., 0., 1.]],
&mut services, &mut services,
); );
let invalid = valid.shell.update_face(&valid.abc.face, |face| { let invalid = valid.shell.update_face(
face.update_exterior(|cycle| { &valid.abc.face,
cycle valid
.update_nth_half_edge(0, |half_edge| { .abc
let global_form = .face
GlobalEdge::new().insert(&mut services); .update_exterior(|cycle| {
half_edge cycle
.replace_global_form(global_form) .update_nth_half_edge(0, |half_edge| {
.insert(&mut services) let global_form =
}) GlobalEdge::new().insert(&mut services);
.insert(&mut services) half_edge
}) .replace_global_form(global_form)
.insert(&mut services) .insert(&mut services)
}); })
.insert(&mut services)
})
.insert(&mut services),
);
valid.shell.validate_and_return_first_error()?; valid.shell.validate_and_return_first_error()?;
assert_contains_err!( assert_contains_err!(