use crate::{
MatchType::{self, ToHave},
Matcher, TypedMatcher,
};
use std::fmt::{Debug, Display};
pub fn item<I>(item: I) -> Item<I> {
Item { item }
}
pub struct Item<T> {
item: T,
}
impl<T> Matcher<Vec<T>> for Item<T>
where
T: PartialEq + Display + Debug,
{
fn matches(&self, value: &Vec<T>) -> bool {
value.contains(&self.item)
}
fn description(&self) -> String {
format!("item {}", self.item)
}
}
impl<T> TypedMatcher<Vec<T>> for Item<T>
where
T: PartialEq + Display + Debug,
{
fn matcher_type(&self) -> MatchType {
ToHave
}
}