#![forbid(unsafe_code)]
#![doc = include_str!("../README.md")]
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Face {
vertices: Vec<usize>,
}
impl Face {
#[must_use]
pub fn new(vertices: Vec<usize>) -> Option<Self> {
if vertices.len() >= 3 {
Some(Self { vertices })
} else {
None
}
}
#[must_use]
pub fn vertices(&self) -> &[usize] {
&self.vertices
}
#[must_use]
pub fn edge_count(&self) -> usize {
self.vertices.len()
}
}
#[cfg(test)]
mod tests {
use super::Face;
#[test]
fn validates_face_boundaries() {
let face = Face::new(vec![0, 1, 2]).expect("valid face");
assert_eq!(face.vertices(), &[0, 1, 2]);
assert_eq!(face.edge_count(), 3);
assert_eq!(Face::new(vec![0, 1]), None);
}
}