use std::fmt;
use crate::core::*;
pub struct EqualTo<T> {
expected: T,
}
impl<T> fmt::Display for EqualTo<T>
where
T: fmt::Debug,
{
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
self.expected.fmt(f)
}
}
impl<T, U> Matcher<T> for EqualTo<U>
where
U: PartialEq<T> + fmt::Debug,
T: fmt::Debug,
{
fn matches(&self, actual: T) -> MatchResult {
if self.expected.eq(&actual) {
success()
} else {
Err(format!("was {:?}", actual))
}
}
}
pub fn equal_to<T>(expected: T) -> EqualTo<T> {
EqualTo { expected }
}