rust - How do I implement commutative (scalar) multiplication with a built-in type like `f64`? -


i'd implement commutative scalar f64 multiplication operation using * operator. implementing mul<f64> trait type gives me right side multiplication like.

struct foo(f64);  impl mul<f64> foo {     type output = foo;      fn mul(self, _rhs: f64) -> foo {         // implementation     } }  let = foo(1.23); * 3.45; // works 3.45 * a; // error: trait bound `{float}: std::ops::mul<foo>` not satisfied [e0277] 

for non-builtin scalar type, can implement same trait other way round on scalar, i.e. implementing mul<foo> on scalar type.

how left side implementation built-in type f64 too?

you can reverse implementation, swapping f64 foo

impl std::ops::mul<foo> f64 {     type output = foo;      fn mul(self, rhs: foo) -> foo {         rhs * self     } } 

try out in playground


Comments

Popular posts from this blog

Spring Boot + JPA + Hibernate: Unable to locate persister -

go - Golang: panic: runtime error: invalid memory address or nil pointer dereference using bufio.Scanner -

c - double free or corruption (fasttop) -