Vector calculation in Rust
My first recommendation is to use std::ops. Try writing implementations of ops::Add for addition,  ops::Mul&lt;Vec3&lt;T&gt;&gt; for cross product, and ops::Mul&lt;T&gt; for scaler-vector multiplication. Not only does implementing these standard traits make your code more interoperable with other Rust code, but it also gives you operator overloading, so you can use + and * on your vectors.

Second, I would question the user of the trait Vector3&lt;f32&gt;. Why do you need a trait? I would just put your operations in the implementation of Vec3&lt;T&gt; itself

impl &lt;T&gt; Vec3&lt;T&gt; {

// ... methods ...

}


Looking forward to seeing your completed code. This will even more interesting once you get generics working.