cgmath
cgmath copied to clipboard
error: multiple one found
error[E0034]: multiple applicable items in scope
--> hello_gl\src\main.rs:29:16
|
29 | let tran = Matrix4::one();
| ^^^^^^^^^^^^ multiple one found
|
= note: candidate #1 is defined in an impl of the trait cgmath::One for the type cgmath::Matrix4<_>
= note: candidate #2 is defined in an impl of the trait cgmath::Transform for the type cgmath::Matrix4<_>
code:
use cgmath::prelude::*;
use cgmath::{Vector4, Matrix4};
let vec = m::vec3::<f32>(1.0, 0.0, 0.0);
let tran = Matrix4::<f32>::one();
let vec = tran.transform_vector(vec);
println!("{:?}", &vec);
What would be the best way to resolve this, remove ::one() from Transform?
Given that there is One trait, we should rename Transform::one to something more unique. identity() is already provided for SquareMatrix trait, which would conflict with Transform for matrices... Maybe Transform should just derive from One and re-use it's one() method instead of adding one for itself? There appears to be quite an overlap between traits (speaking of #419 ...).
I would suggest making Transform depend on One and then removing the one() method from Transform.