Ich versuche eine Struct-Serialisierung zu machen, bei der die Bytes schließlich in eine Pipe geschickt werden, rekonstruiert und Methoden aufgerufen werden.
Ich habe ein Merkmal erstellt, das diese Strukturen entsprechend implementieren würden, und ich benutze serde und serde-cbor für die Serialisierung:
%Vor% Wenn ich versuche, die Bytes mit dem Merkmal als Typ zu rekonstruieren (vorausgesetzt, ich wüsste nicht, welches zugrundeliegende Objekt gesendet wird), beschwert sich der Compiler darüber, dass das Merkmal das Merkmal Sized
nicht implementiert:
%Vor%
Ich denke, es macht Sinn, da der Compiler nicht weiß, wie groß die Struktur sein soll und nicht wissen, wie man die Bytes dafür anordnet. Wenn ich die Zeile ändere, in der ich das Objekt deserialize, um den tatsächlichen Strukturtyp anzugeben, funktioniert es:
%Vor%Gibt es ein besseres Muster, um dieses Serialisierungs- + Polymorphie-Verhalten zu erreichen?
Es sieht so aus, als wären Sie in dieselbe Falle geraten, in die ich geraten war, als ich von C ++ nach Rust gezogen bin. Versuchen, Polymorphismus zu verwenden, um eine feste Menge von Varianten eines Typs zu modellieren. Ruts enums (ähnlich Haskells enums und äquivalent zu Adas varianten Record-Typen) unterscheiden sich von klassischen enums in anderen Sprachen, weil die enum-Varianten eigene Felder haben können.
Ich schlage vor, dass Sie Ihren Code in
ändern %Vor%Tags und Links serialization rust serde cbor