在此示例中,编译器无法推断矩阵类型:
type Mat4x4<T> = [T; 16];
fn main() {
let m: Mat4x4 = [0.4323f32; 16];
println!("{:?}", m);
}
工作代码是:
type Mat4x4<T> = [T; 16];
fn main() {
let m: Mat4x4<f32> = [0.4323f32; 16];
println!("{:?}", m);
}
这是预期的行为吗?
这不是类型推断问题:
type Mat4x4<T> = [T; 16];
fn main() {
let m: Mat4x4 = [0.4323f32; 16];
println!("{:?}", m);
}
产生以下错误消息:
error[E0107]: wrong number of type arguments: expected 1, found 0
--> src/main.rs:4:12
|
4 | let m: Mat4x4 = [0.4323f32; 16];
| ^^^^^^ expected 1 type argument
这里的抱怨Mat4x4
不是类型,而是创建类型的模板或蓝图。
打个比方Mat4x4
就是华夫饼铁,Mat4x4<f32>
是从华夫饼中出来的华夫饼。如果为您提供华夫饼铁(当然,上面还有枫糖浆),您可能会感到失望!
同样适用于此:当您向编译器提供期望最终产品的蓝图时,它会向您发出信号,表明这不是期望的结果。
您可以提供一个虚拟参数(_
),然后将其推断出来:
let m: Mat4x4<_> = [0.4323f32; 16];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句