Ich habe einen Vektor mit einem add
Betreiber:Möglich, auf allen Mitgliedern einer homogenen Struktur/Tupel in Rust zu operieren?
use std::ops::Add;
struct float2(f64, f64);
impl Add for float2 {
type Output = float2;
fn add(self, _rhs: float2) -> float2 {
float2(self.0 + _rhs.0,
self.1 + _rhs.1)
}
}
Ist es möglich, dies so zu schreiben, dass es auch für ein 3D- oder 4D-Vektor funktionieren würde?
z.B .: struct float2(f64, f64, f64);
ich es geschafft, einen Index
Operator hinzuzufügen, und eine len
Methode, die einen statischen Wert für jeden Typ gibt, aber das fühlt sich ein bisschen umständlich. Ich habe die Assembly nicht überprüft, aber ihre möglichen Indexzugriffe werden überprüft, was für einen solchen Low-Level-Betrieb unnötig erscheint.
Ich könnte auch die Struktur packen und direkten unsicheren Speicherzugriff verwenden, aber das scheint auch nicht sehr optimal.
Gibt es eine bequemere Möglichkeit, Ausdrücke zu schreiben, die alle Elemente der Struktur behandeln?