A1(Option<u32>),
A2(Option<String>),
...
An(Option<T>)
}
Список большой, типов всего 8(все описаны, генерика нет), возможно будет больше.
Как реализовать PartialEq так, чтобы A::A1(Some(u32)) равнялся A::A1(None)? Тоесть прям partial eq(derive не помог)
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=a1d3f8c074d713604f815e0a92b9a2e5
Я бы не стал так нарушать эквивалентность объектов типа А, а просто создал бы новый тип B для представителей А, на которых уже определил бы нужную эквивалентность, т.е. Eq. Иначе не совсем логично получается. Что-то вроде проекции A -> B для нужной эквивалентности, где уже можно было бы задействовать derive.
Обсуждают сегодня