Ich spiele mit der cgmath-Bibliothek herum. Ich habe die folgende main.rs-Datei:
extern crate cgmath;
use cgmath::vector::{Vector3, EuclideanVector};
fn main() {
let mypoint = Vector3 { x: 1f64, y: 1f64, z: 3f64 };
println!("Die Länge des Vektors beträgt {}, und die Länge im Quadrat beträgt {}", mypoint.length(), mypoint.length2());
}
In meiner Verwendungszeile, wenn ich EuclideanVector
weglasse, erhalte ich folgenden Kompilierungsfehler:
type 'cgmath::vector::Vector3' implementiert keine Methode namens 'length' im Scope.
Es scheint, dass der Rust-Compiler die Methode length()
nicht finden kann, es sei denn, ich importiere eines der Traits, die Vector3
verwendet. Wenn ich in den Quellcode eintauche, scheint die Längenmethode im EuclideanVector
-Trait definiert zu sein.
Intuitiv sollte ich keinen Trait importieren müssen, um einen Typ zu verwenden, der den besagten Trait erbt. Gibt es eine Technik, um das zu tun, was mir entgeht? Ist dies eine Nuance spezifisch für die cgmath-Bibliothek? Ist dies ein Bestandteil von Rust, an den ich mich gewöhnen sollte?