use crate::{design::prelude::*, traits::Validator, visitor::VisitorContext};
#[validator]
pub struct InArray<T> {
values: Vec<T>,
}
impl<T> InArray<T> {
#[must_use]
pub const fn new(values: Vec<T>) -> Self {
Self { values }
}
}
impl<T> Validator<T> for InArray<T>
where
T: PartialEq,
{
fn validate(&self, n: &T, ctx: &mut dyn VisitorContext) {
if !self.values.contains(n) {
ctx.issue(Issue::CollectionValueNotAllowed {
allowed_count: self.values.len(),
});
}
}
}