File tree Expand file tree Collapse file tree 1 file changed +15
-1
lines changed Expand file tree Collapse file tree 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].
243243# Rules for implementing traits
244244
245245So 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+ ```
247261
248262This may seem like the Wild West, but there are two restrictions around
249263implementing traits that prevent this from getting out of hand. The first is
You can’t perform that action at this time.
0 commit comments