File tree 1 file changed +15
-1
lines changed 1 file changed +15
-1
lines changed Original file line number Diff line number Diff line change @@ -243,7 +243,21 @@ to know more about [operator traits][operators-and-overloading].
243
243
# Rules for implementing traits
244
244
245
245
So far, we’ve only added trait implementations to structs, but you can
246
- implement a trait for any type such as ` i32 ` .
246
+ implement a trait for any type such as ` f32 ` :
247
+
248
+ ``` rust
249
+ trait ApproxEqual {
250
+ fn approx_equal (& self , other : & Self ) -> bool ;
251
+ }
252
+ impl ApproxEqual for f32 {
253
+ fn approx_equal (& self , other : & Self ) -> bool {
254
+ // Appropriate for `self` and `other` being close to 1.0.
255
+ (self - other ). abs () <= :: std :: f32 :: EPSILON
256
+ }
257
+ }
258
+
259
+ println! (" {}" , 1.0 . approx_equal (& 1.00000001 ));
260
+ ```
247
261
248
262
This may seem like the Wild West, but there are two restrictions around
249
263
implementing traits that prevent this from getting out of hand. The first is
You can’t perform that action at this time.
0 commit comments