1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use crate::{
    objects::{Cycle, Objects},
    storage::Handle,
    validate::ValidationError,
};

use super::Reverse;

impl Reverse for Handle<Cycle> {
    fn reverse(self, objects: &Objects) -> Result<Self, ValidationError> {
        let mut edges = self
            .half_edges()
            .cloned()
            .map(|edge| edge.reverse(objects))
            .collect::<Result<Vec<_>, _>>()?;

        edges.reverse();

        Ok(objects.cycles.insert(Cycle::new(edges))?)
    }
}