#![forbid(unsafe_code)]
#![doc = include_str!("../README.md")]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Containment {
Inside,
Boundary,
Outside,
}
impl Containment {
#[must_use]
pub const fn is_contained(self) -> bool {
matches!(self, Self::Inside | Self::Boundary)
}
#[must_use]
pub const fn is_outside(self) -> bool {
matches!(self, Self::Outside)
}
}
pub trait Contains<T> {
fn contains_value(&self, value: &T) -> Containment;
}
#[cfg(test)]
mod tests {
use super::Containment;
#[test]
fn classifies_containment() {
assert!(Containment::Inside.is_contained());
assert!(Containment::Boundary.is_contained());
assert!(!Containment::Outside.is_contained());
assert!(Containment::Outside.is_outside());
}
}