Zum Inhalt springen

Serialisierung

Wählen Sie jede Designoption aus, die die folgende Anforderung erfüllt:

Anforderung: Es sollte möglich sein, ein neues Datenformat hinzuzufügen, ohne den Code in bestehenden Implementierungen des Serialize -Traits ändern zu müssen.

Beide Designs sind ausreichend entkoppelt, sodass jedes neue Datenformat unabhängig von jeglichen Serialize -Implementierungen ist. Bei Option 1 konvertiert jedes Datenformat einen Value in die Darstellung des Formats. Value fungiert als Modulgrenze.

Bei Option 2 gibt es keine explizite Zwischenrepräsentation eines serialisierten Wertes, sondern jede Serialize -Implementierung ist explizit generisch über jede Wahl von S , die Serializer implementiert.


Wählen Sie jede Designoption aus, die die folgende Anforderung erfüllt:

Anforderung: Der Serialisierungsprozess sollte so wenig Speicher wie möglich verbrauchen.

Option 1 serialisiert Daten, indem sie zuerst eine Datenstruktur in eine Zwischenrepräsentation, Value , umwandelt und dann Value in das endgültige Format konvertiert. Diese Zwischen-Datenstruktur verbraucht Speicher, der bei Option 2 nicht benötigt wird, da die Daten direkt in das endgültige Format konvertiert werden.


Wählen Sie jede Designoption aus, die die folgende Anforderung erfüllt:

Anforderung: Wenn derselbe Datentyp in mehrere Formate serialisiert wird, sollte dies die Größe des kompilierten Binärprogramms so wenig wie möglich erhöhen.

Bei Option 1 gibt es nur eine einzige Instanziierung von Serialize , die einen Typ T in einen Value umwandelt. Da Option 2 generisch über Serialisierer S ist, wird der Rust-Compiler jedes Mal, wenn T::serialize mit einem neuen S aufgerufen wird, eine neue Instanz von T::serialize monomorphisieren, was die Größe des Binärprogramms im Vergleich zu Option 1 erhöhen würde.