binäre (de) Serialisierung von [u8; 128]

8

Ich habe ein struct , das ein Byte-Array enthält, das ich zu und von binär serialisieren und deserialisieren möchte. Aber es funktioniert nur für Arrays bis zu 32 Elemente .

Hier ist mein minimaler Beispielcode

main.rs :

%Vor%

Cargo.toml :

%Vor%

Ausgabe:

%Vor%

Wie kann ich es für 128 Elemente im Array arbeiten lassen? Kann ich array_impls! irgendwie manuell in meiner Benutzercode damit?

%Vor%

Oder gibt es einen alternativen Ansatz?

  

HINWEIS: Ich denke, diese Frage unterscheidet sich von Wie ordne ich eine C-Struktur mit Padding über 32 Bytes mit serde und bincode? , weil ich eigentlich den Inhalt des Arrays brauche, da es wird nicht nur zum Auffüllen verwendet. Außerdem würde ich gerne wissen, ob ich array_impls! auf meinen Code erweitern kann.

    
Tobias Hermann 14.02.2018, 07:45
quelle

1 Antwort

5

Gegenwärtig gibt es keine Möglichkeit für Serde, Serialize und Deserialize Impls bereitzustellen, die für alle Array-Größen funktionieren. Dies ist blockiert auf const generics , woran gearbeitet wird und hoffentlich 2018 in der Nacht landen wird.

Vorläufig können Sie Ihren eigenen "großen Array" Helfer definieren, der Arrays bestimmter Größen in Ihrer Kiste serialisieren und deserialisieren kann. Felder, für die Sie den großen Array-Helper verwenden möchten, müssen mit #[serde(with = "BigArray")] getaggt werden, sonst sucht Serde nach nicht vorhandenen Serialize und Deserialize impls.

%Vor%

Der große Array-Helfer kann wie folgt in src/big_array.rs definiert werden. Vielleicht würde dies eine gute Kiste für sich selbst machen, wenn Sie es besitzen möchten!

%Vor%     
dtolnay 25.02.2018, 18:16
quelle