File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change @@ -132,6 +132,48 @@ use self::Ordering::*;
132
132
/// By changing `impl PartialEq for Book` to `impl PartialEq<BookFormat> for Book`,
133
133
/// we allow `BookFormat`s to be compared with `Book`s.
134
134
///
135
+ /// You can also combine these implementations to let the `==` operator work with
136
+ /// two different types:
137
+ ///
138
+ /// ```
139
+ /// #[derive(PartialEq)]
140
+ /// enum BookFormat {
141
+ /// Paperback,
142
+ /// Hardback,
143
+ /// Ebook,
144
+ /// }
145
+ ///
146
+ /// struct Book {
147
+ /// isbn: i32,
148
+ /// format: BookFormat,
149
+ /// }
150
+ ///
151
+ /// impl PartialEq<BookFormat> for Book {
152
+ /// fn eq(&self, other: &BookFormat) -> bool {
153
+ /// self.format == *other
154
+ /// }
155
+ /// }
156
+ ///
157
+ /// impl PartialEq<Book> for BookFormat {
158
+ /// fn eq(&self, other: &Book) -> bool {
159
+ /// *self == other.format
160
+ /// }
161
+ /// }
162
+ ///
163
+ /// impl PartialEq for Book {
164
+ /// fn eq(&self, other: &Book) -> bool {
165
+ /// self.isbn == other.isbn
166
+ /// }
167
+ /// }
168
+ ///
169
+ /// let b1 = Book { isbn: 3, format: BookFormat::Paperback };
170
+ /// let b2 = Book { isbn: 3, format: BookFormat::Ebook };
171
+ ///
172
+ /// assert!(b1 == BookFormat::Paperback);
173
+ /// assert!(b1 != BookFormat::Ebook);
174
+ /// assert!(b1 == b2);
175
+ /// ```
176
+ ///
135
177
/// # Examples
136
178
///
137
179
/// ```
You can’t perform that action at this time.
0 commit comments