use crate::{
objects::{Cycle, ObjectSet},
storage::Handle,
};
#[derive(Clone, Debug, Eq, PartialEq, Hash, Ord, PartialOrd)]
pub struct Region {
exterior: Handle<Cycle>,
interiors: ObjectSet<Cycle>,
}
impl Region {
pub fn new(
exterior: Handle<Cycle>,
interiors: impl IntoIterator<Item = Handle<Cycle>>,
) -> Self {
Self {
exterior,
interiors: interiors.into_iter().collect(),
}
}
pub fn exterior(&self) -> &Handle<Cycle> {
&self.exterior
}
pub fn interiors(&self) -> &ObjectSet<Cycle> {
&self.interiors
}
pub fn all_cycles(&self) -> impl Iterator<Item = &Handle<Cycle>> {
[self.exterior()].into_iter().chain(self.interiors())
}
}