Dies ist kein Typinferenz Ausgabe:
type Mat4x4<T> = [T; 16];
fn main() {
let m : Mat4x4 = [0.4323f32; 16];
println!("{:?}", m);
}
ergibt die folgende Fehlermeldung:
<anon>:4:13: 4:19 error: wrong number of type arguments: expected 1, found 0 [E0243]
<anon>:4 let m : Mat4x4 = [0.4323f32; 16];
^~~~~~
Die Beschwerde ist hier, dass Mat4x4
kein Typ ist, es ist ein Vorlage oder Blueprint um einen Typ zu erstellen.
Eine Analogie wäre, dass Mat4x4
ist ein Waffeleisen, und Mat4x4<f32>
ist eine Waffel, die daraus hervorgeht. Wenn Sie das Waffeleisen serviert werden (natürlich mit Ahornsirup), werden Sie wahrscheinlich enttäuscht sein!
Das gleiche gilt hier: Wenn Sie dem Compiler den Entwurf geben, wo er das Endprodukt erwartet, signalisiert es Ihnen, dass es nicht das war, was es erwartet hat.
Sie können ein Dummy-Argument (_
) liefern, und es wird gefolgert werden:
let m: Mat4x4<_> = [0.4323f32; 16];
Ich mochte dein Waffelbeispiel. : D –