Ich versuche, die am meisten Rust-artige Art der Umwandlung von einem Vektor zu einem Array und zurück zu ermitteln. Diese Makros funktionieren und können sogar mit einigen unsicheren Blöcken generisch gemacht werden, aber es fühlt sich allesamt sehr un-Rust an.
Ich würde jede Eingabe schätzen und keine Schläge halten, ich denke, dass dieser Code alles andere als schön oder optimal ist. Ich habe erst seit ein paar Wochen mit Rust gespielt und jage Releases und Docs so sehr zu schätzen, dass ich Hilfe schätze.
%Vor% Der Code scheint mir gut zu sein, obwohl eine sehr wichtige Sicherheitsfrage zu beachten ist: Es kann keine Panik geben, solange arr
nicht vollständig initialisiert ist. Laufende Destruktoren auf nicht initialisiertem Speicher könnten leicht zu undefiniertem Verhalten führen, und insbesondere bedeutet dies, dass into_iter
und die next
-Methode davon niemals in Panik geraten sollte (ich glaube, das ist unmöglich für die Teile enumerate
und mem::*
des Iterators in Panik angesichts der Einschränkungen des Codes).
Das heißt, man kann das replace
/ forget
idiom mit einer einzigen Funktion ausdrücken: std::ptr::write
.
Obwohl ich es schreiben würde als:
%Vor% Ähnlich kann man eine Iterator-Güte auf die spezialisierten Versionen u8
anwenden:
Obwohl das erste wahrscheinlich besser geschrieben ist als arr.to_vec()
und die zweite als
Obwohl diese Funktion derzeit instabil ist und daher nur verwendbar ist jeden Abend.
Tags und Links rust