1use std::fmt::{Display, Formatter};
2
3use crate::Actual;
4
5impl<T> Actual<T> {
6 pub fn new(value: T, description_func: fn(&T) -> String) -> Actual<T> {
7 Actual {
8 value,
9 description_func,
10 }
11 }
12}
13
14impl<T> Actual<T>
15where
16 T: Display,
17{
18 pub fn create_for(value: T) -> Actual<T> {
19 Actual {
20 value,
21 description_func: |v| v.to_string(),
22 }
23 }
24}
25
26impl<T> Display for Actual<T> {
27 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
28 write!(f, "{}", (self.description_func)(&self.value))
29 }
30}
31
32impl<T> PartialEq for Actual<T>
33where
34 T: PartialEq,
35{
36 fn eq(&self, other: &Self) -> bool {
37 self.value.eq(&other.value)
38 }
39}