1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use crate::{
objects::{Cycle, Face},
storage::Handle,
};
/// Update a [`Face`]
pub trait UpdateFace {
/// Update the exterior of the face
fn update_exterior(
&self,
f: impl FnOnce(&Handle<Cycle>) -> Handle<Cycle>,
) -> Face;
}
impl UpdateFace for Face {
fn update_exterior(
&self,
f: impl FnOnce(&Handle<Cycle>) -> Handle<Cycle>,
) -> Face {
let exterior = f(self.exterior());
Face::new(
self.surface().clone(),
exterior,
self.interiors().cloned(),
self.color(),
)
}
}