Я пытаюсь проверить равенство двух (функционально идентичных) структур.Проверка равенства пользовательских структур
#[derive(PartialEq, Debug)]
pub struct TypeA<'a>(&'a str);
#[derive(PartialEq, Debug)]
pub struct TypeB<'a>(&'a str);
impl<'a> TypeA<'a> {
pub fn new(n: &str) -> TypeA {
TypeA(n)
}
}
impl<'a> TypeB<'a> {
pub fn new(n: &str) -> TypeB {
TypeB(n)
}
}
fn main() {
assert_eq!(TypeA::new("A"), TypeB::new("A"));
}
возвращает ошибку:
error[E0308]: mismatched types
--> src/main.rs:20:5
|
20 | assert_eq!(TypeA::new("A"), TypeB::new("A"));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `TypeA`, found struct `TypeB`
|
= note: expected type `TypeA<'_>`
found type `TypeB<'_>`
= note: this error originates in a macro outside of the current crate
Похоже, получения PartialEq
не работает. Это единственное решение для его реализации вручную между этими двумя типами? Проблема в другом месте?