| //@ run-pass | |
| use std::ops::Mul; | |
| #[derive(Copy, Clone)] | |
| pub struct Foo { | |
| x: f64, | |
| } | |
| impl Mul<Foo> for f64 { | |
| type Output = Foo; | |
| fn mul(self, rhs: Foo) -> Foo { | |
| // intentionally do something that is not * | |
| Foo { x: self + rhs.x } | |
| } | |
| } | |
| pub fn main() { | |
| let f: Foo = Foo { x: 5.0 }; | |
| let val: f64 = 3.0; | |
| let f2: Foo = val * f; | |
| assert_eq!(f2.x, 8.0); | |
| } |