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
use crate::{
    objects::{Cycle, Objects},
    partial::{Partial, PartialFace},
    services::Service,
};

/// Builder API for [`PartialFace`]
pub trait FaceBuilder {
    /// Add an interior cycle
    fn add_interior(
        &mut self,
        objects: &mut Service<Objects>,
    ) -> Partial<Cycle>;
}

impl FaceBuilder for PartialFace {
    fn add_interior(
        &mut self,
        objects: &mut Service<Objects>,
    ) -> Partial<Cycle> {
        let cycle = Partial::new(objects);
        self.interiors.push(cycle.clone());
        cycle
    }
}