i_triangle 0.44.0

Polygon Triangulation Library: Efficient Delaunay Triangulation for Complex Shapes.
Documentation
use alloc::vec::Vec;

#[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
pub struct TriangleIndex(usize);

impl TriangleIndex {
    pub fn new(index: usize) -> Self {
        Self(index)
    }

    pub fn index(&self) -> usize {
        self.0
    }

    pub fn to_vertex_indices(&self) -> [usize; 3] {
        let offset = 3 * self.0;
        [offset, offset + 1, offset + 2]
    }
}

#[derive(Clone, Debug, Eq, PartialEq)]
pub enum PointLocationInTriangulation {
    Outside,
    InsideTriangle(TriangleIndex),
    OnExteriorEdge(TriangleIndex),
    OnInteriorEdge(TriangleIndex, TriangleIndex),
    OnVertex(Vec<TriangleIndex>),
}