В моей программе я представляю «события» следующей структурой:
struct Event {
value: &'static str,
timestamp: usize,
}
До сих пор я использовал PartialEq
для сравнения Event
переменных: в большинстве случаев я рассматриваю две Event
s должны быть равны, если их value
одинаковы:
impl PartialEq for Event {
fn eq(&self, other: &Self) -> bool {
self.value == other.value
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_loose_equality() {
let a = Event { value: "a-value", timestamp: 12345 };
let b = Event { value: "a-value", timestamp: 23456 };
assert_eq!(a, b);
}
}
Однако в некоторых тестах я хотел бы убедиться, что две такие переменные «строго равны»: тест не должен имеют разные timestamp
(не совпадают по отношению к Eq
).
Согласно документации assert_eq!
:
Утверждает, что два выражения равны каждому другое (с использованием PartialEq). источник
Итак, я ищу Eq
эквивалент, assert_Eq_eq!
в сортировке.
(или я не понимаю, как Eq
работает и должен использоваться?)
Вот что я не могу выполнить:
impl Eq for Event {}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_strict_equality() {
let a = Event { value: "a-value", timestamp: 12345 };
let b = Event { value: "a-value", timestamp: 12345 };
// ???
}
}