#![allow(dead_code, deprecated, unused_variables, unused_mut)] #[derive(PartialEq)] enum BookFormat { Paperback, Hardback, Ebook, } struct Book { isbn: i32, format: BookFormat, } impl PartialEq for Book { fn eq(&self, other: &BookFormat) -> bool { self.format == *other } } impl PartialEq for BookFormat { fn eq(&self, other: &Book) -> bool { *self == other.format } } fn main() { let b1 = Book { isbn: 3, format: BookFormat::Paperback, }; assert!(b1 == BookFormat::Paperback); assert!(BookFormat::Ebook != b1); }