Ad unsafe – je pravda, že tím dělá člověk z Rustu Céčko. Na druhou stranu, pokud bych měl mít kousek unsafe a zbytek ± idiomatický Rust, stále v tom vidím smysl.
Záleží, co od toho očekáváte. Ona low-level serializace a deserializace v podstatě bez unsafe nejde, protože tam narážíte na problémy, které jsem popsal. (Pravda, část z nich nesouvisí tolik s unsafe, ale stačí jeden, který souvisí.) Bez unsafe je několik možností:
A. Jak jsem psal v tom prvním příspěvku, zbavil bych se nadbytečného fieldu a hledal, jak ten enum tag serializovat do jednoho bytu. Možná bude fungovat to, co jsem poslal. Možná s tím bude problém, že budete serializovat jen ten tag bez dat, ale to.snad zjistíte velmi rychle při pokusu o deserializaci.
B. Ty flatbuffers by taky mohly jít
C. Když všechno ostatní selže, můžete si udělat serializaci a deserializaci posvém.